[ox/mc,oc] Add support for ox::Array serialization
This commit is contained in:
8
deps/ox/src/ox/oc/read.hpp
vendored
8
deps/ox/src/ox/oc/read.hpp
vendored
@@ -147,6 +147,14 @@ Error OrganicClawReader::field(const char *key, T *val) noexcept {
|
||||
const auto srcSize = srcVal.size();
|
||||
val->resize(srcSize);
|
||||
err = field(key, val->data(), val->size());
|
||||
} else if constexpr(isArray_v<T>) {
|
||||
const auto &srcVal = value(key);
|
||||
const auto srcSize = srcVal.size();
|
||||
if (srcSize > val->size()) {
|
||||
err = OxError(1, "Input array is too long");
|
||||
} else {
|
||||
err = field(key, val->data(), val->size());
|
||||
}
|
||||
} else if (targetValid()) {
|
||||
const auto &jv = value(key);
|
||||
if (jv.empty() || jv.isObject()) {
|
||||
|
2
deps/ox/src/ox/oc/write.hpp
vendored
2
deps/ox/src/ox/oc/write.hpp
vendored
@@ -214,7 +214,7 @@ Error OrganicClawWriter::field(const char *key, T *val, std::size_t len) noexcep
|
||||
|
||||
template<typename T>
|
||||
Error OrganicClawWriter::field(const char *key, T *val) noexcept {
|
||||
if constexpr(isVector_v<T>) {
|
||||
if constexpr(isVector_v<T> || isArray_v<T>) {
|
||||
return field(key, val->data(), val->size());
|
||||
} else if (val && targetValid()) {
|
||||
OrganicClawWriter w;
|
||||
|
Reference in New Issue
Block a user