diff --git a/deps/ox/src/ox/mc/write.hpp b/deps/ox/src/ox/mc/write.hpp index 8bf67fc5..0f8002a8 100644 --- a/deps/ox/src/ox/mc/write.hpp +++ b/deps/ox/src/ox/mc/write.hpp @@ -406,7 +406,7 @@ ox::Error MetalClawWriter::finalize() noexcept { return {}; } -Result writeMC(Writer_c auto &writer, auto &val) noexcept { +Result writeMC(Writer_c auto &writer, const auto &val) noexcept { MetalClawWriter mcWriter(writer); ModelHandlerInterface handler{&mcWriter}; oxReturnError(model(&handler, &val)); @@ -414,7 +414,7 @@ Result writeMC(Writer_c auto &writer, auto &val) noexcept { return {}; } -Result writeMC(auto *val, std::size_t buffReserveSz = 2 * units::KB) noexcept { +Result writeMC(const auto *val, std::size_t buffReserveSz = 2 * units::KB) noexcept { Buffer buff(buffReserveSz); BufferWriter bw(&buff, 0); oxReturnError(writeMC(bw, *val)); @@ -422,7 +422,7 @@ Result writeMC(auto *val, std::size_t buffReserveSz = 2 * units::KB) noe return buff; } -Error writeMC(char *buff, std::size_t buffLen, auto *val, std::size_t *sizeOut = nullptr) noexcept { +Error writeMC(char *buff, std::size_t buffLen, const auto *val, std::size_t *sizeOut = nullptr) noexcept { CharBuffWriter bw(buff, buffLen); oxReturnError(writeMC(bw, *val)); if (sizeOut) { diff --git a/deps/ox/src/ox/model/desctypes.hpp b/deps/ox/src/ox/model/desctypes.hpp index 67bbfa45..e2169e0d 100644 --- a/deps/ox/src/ox/model/desctypes.hpp +++ b/deps/ox/src/ox/model/desctypes.hpp @@ -79,6 +79,9 @@ constexpr Error model(T *io, CommonPtrWith auto *type) noexcept { if constexpr(T::opType() == OpType::Reflect) { uint32_t st = 0; oxReturnError(io->field("subscriptType", &st)); + } else if constexpr(T::opType() == OpType::Write) { + auto pt = type ? static_cast(type->subscriptType) : 0; + oxReturnError(io->field("subscriptType", &pt)); } else { auto pt = type ? static_cast(type->subscriptType) : 0; oxReturnError(io->field("subscriptType", &pt)); @@ -186,6 +189,9 @@ constexpr Error model(T *io, CommonPtrWith auto *type) noexcept if constexpr(T::opType() == OpType::Reflect) { uint8_t pt = 0; oxReturnError(io->field("primitiveType", &pt)); + } else if constexpr(T::opType() == OpType::Write) { + auto pt = type ? static_cast(type->primitiveType) : 0; + oxReturnError(io->field("primitiveType", &pt)); } else { auto pt = type ? static_cast(type->primitiveType) : 0; oxReturnError(io->field("primitiveType", &pt));