[ox/claw] Add writeClaw Writer_c variant
This commit is contained in:
+21
@@ -120,4 +120,25 @@ Result<Buffer> writeClaw(
|
||||
return out;
|
||||
}
|
||||
|
||||
Error writeClaw(
|
||||
auto const &obj,
|
||||
Writer_c auto &writer,
|
||||
ClawFormat const fmt = ClawFormat::Metal) noexcept {
|
||||
OX_RETURN_ERROR(detail::writeClawHeader(writer, &obj, fmt));
|
||||
#ifdef OX_USE_STDLIB
|
||||
if (fmt == ClawFormat::Metal) {
|
||||
OX_RETURN_ERROR(writeMC(writer, obj));
|
||||
} else if (fmt == ClawFormat::Organic) {
|
||||
OX_REQUIRE(data, writeOC(obj));
|
||||
OX_RETURN_ERROR(writer.write(data.data(), data.size()));
|
||||
}
|
||||
#else
|
||||
if (fmt != ClawFormat::Metal) {
|
||||
return ox::Error(1, "OC is not supported in this build");
|
||||
}
|
||||
OX_RETURN_ERROR(writeMC(writer, obj));
|
||||
#endif
|
||||
return {};
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user