[ox] Add const char *const* fieldString handlers to OC and MC writers

This commit is contained in:
2022-07-21 02:18:56 -05:00
parent 6b9d9c50c7
commit 1302d5bf85
4 changed files with 16 additions and 6 deletions

View File

@@ -76,10 +76,12 @@ class MetalClawWriter {
template<std::size_t L>
constexpr Error field(const char*, BString<L> *val) noexcept;
constexpr Error fieldCString(const char *name, const char **val, std::size_t buffLen) noexcept;
constexpr Error fieldCString(const char *name, const char *const*val, std::size_t buffLen) noexcept;
constexpr Error fieldCString(const char *name, const char **val) noexcept;
constexpr Error fieldCString(const char *name, const char *const*val) noexcept;
constexpr Error fieldCString(const char *name, const char *val, std::size_t len) noexcept;
constexpr Error fieldCString(const char *name, char **val, std::size_t buffLen) noexcept {
@@ -223,7 +225,7 @@ constexpr Error MetalClawWriter::field(const char *name, BString<L> *val) noexce
return fieldCString(name, val->data(), val->cap());
}
constexpr Error MetalClawWriter::fieldCString(const char*, const char **val, std::size_t) noexcept {
constexpr Error MetalClawWriter::fieldCString(const char*, const char *const*val, std::size_t) noexcept {
bool fieldSet = false;
if (m_unionIdx == -1 || m_unionIdx == m_field) {
const auto strLen = *val ? ox_strlen(*val) : 0;
@@ -249,6 +251,10 @@ constexpr Error MetalClawWriter::fieldCString(const char *name, const char **val
return fieldCString(name, val, {});
}
constexpr Error MetalClawWriter::fieldCString(const char *name, const char *const*val) noexcept {
return fieldCString(name, val, {});
}
constexpr Error MetalClawWriter::fieldCString(const char*, const char *val, std::size_t strLen) noexcept {
bool fieldSet = false;
if (strLen && (m_unionIdx == -1 || m_unionIdx == m_field)) {