[ox] Make model system's setTypeInfo return an Error
This commit is contained in:
14
deps/ox/src/ox/mc/write.hpp
vendored
14
deps/ox/src/ox/mc/write.hpp
vendored
@@ -103,8 +103,11 @@ class MetalClawWriter {
|
||||
constexpr Error field(const char*, UnionView<U, force> val) noexcept;
|
||||
|
||||
template<typename T = std::nullptr_t>
|
||||
constexpr void setTypeInfo(const char *name = T::TypeName, int version = T::TypeVersion,
|
||||
const Vector<String>& = {}, std::size_t fields = ModelFieldCount_v<T>) noexcept;
|
||||
constexpr ox::Error setTypeInfo(
|
||||
const char *name = T::TypeName,
|
||||
int version = T::TypeVersion,
|
||||
const Vector<String>& = {},
|
||||
std::size_t fields = ModelFieldCount_v<T>) noexcept;
|
||||
|
||||
/**
|
||||
* stringLength is not implemented in MetalClawWriter
|
||||
@@ -328,7 +331,7 @@ constexpr Error MetalClawWriter<Writer>::field(const char*, T *val, std::size_t
|
||||
oxReturnError(m_writer.write(reinterpret_cast<const char*>(arrLen.data), arrLen.length));
|
||||
MetalClawWriter<Writer> writer(m_writer);
|
||||
ModelHandlerInterface handler{&writer};
|
||||
handler.template setTypeInfo<T>("List", 0, {}, static_cast<std::size_t>(len));
|
||||
oxReturnError(handler.template setTypeInfo<T>("List", 0, {}, static_cast<std::size_t>(len)));
|
||||
// write the array
|
||||
for (std::size_t i = 0; i < len; i++) {
|
||||
oxReturnError(handler.field("", &val[i]));
|
||||
@@ -355,7 +358,7 @@ constexpr Error MetalClawWriter<Writer>::field(const char*, const HashMap<String
|
||||
MetalClawWriter<Writer> writer(m_writer);
|
||||
ModelHandlerInterface handler{&writer};
|
||||
// double len for both key and value
|
||||
handler.setTypeInfo("Map", 0, {}, len * 2);
|
||||
oxReturnError(handler.setTypeInfo("Map", 0, {}, len * 2));
|
||||
// write the array
|
||||
for (std::size_t i = 0; i < len; i++) {
|
||||
const auto &key = keys[i];
|
||||
@@ -382,7 +385,7 @@ constexpr Error MetalClawWriter<Writer>::field(const char *name, HashMap<String,
|
||||
|
||||
template<Writer_c Writer>
|
||||
template<typename T>
|
||||
constexpr void MetalClawWriter<Writer>::setTypeInfo(
|
||||
constexpr ox::Error MetalClawWriter<Writer>::setTypeInfo(
|
||||
const char*,
|
||||
int,
|
||||
const Vector<String>&,
|
||||
@@ -393,6 +396,7 @@ constexpr void MetalClawWriter<Writer>::setTypeInfo(
|
||||
m_presenceMapBuff.resize(fieldPresenceLen);
|
||||
m_fieldPresence.setBuffer(m_presenceMapBuff.data(), m_presenceMapBuff.size());
|
||||
m_fieldPresence.setFields(static_cast<int>(fields));
|
||||
return {};
|
||||
}
|
||||
|
||||
template<Writer_c Writer>
|
||||
|
||||
Reference in New Issue
Block a user