[ox] Remove SerStr

This commit is contained in:
2023-06-08 21:34:33 -05:00
parent e0289ee7e0
commit 23054c9f6f
8 changed files with 12 additions and 146 deletions

View File

@@ -181,34 +181,6 @@ Error OrganicClawReader::field(const char *key, bool *val) noexcept {
return err;
}
Error OrganicClawReader::field(const char *key, SerStr val) noexcept {
auto err = OxError(0);
const char *begin = nullptr, *end = nullptr;
const auto &jv = value(key);
if (targetValid()) {
if (jv.empty()) {
auto data = val.data();
if (data) {
data[0] = 0;
}
} else if (jv.isString()) {
jv.getString(&begin, &end);
auto strSize = end - begin;
auto data = val.data(static_cast<std::size_t>(strSize) + 1);
if (strSize >= val.cap()) {
err = OxError(1, "String size exceeds capacity of destination");
} else {
ox_memcpy(data, begin, static_cast<std::size_t>(strSize));
data[strSize] = 0;
}
} else {
err = OxError(1, "Type mismatch");
}
}
++m_fieldIt;
return err;
}
Error OrganicClawReader::fieldCString(const char *key, char *val, std::size_t buffLen) noexcept {
auto err = OxError(0);
const char *begin = nullptr, *end = nullptr;

View File

@@ -72,8 +72,6 @@ class OrganicClawReader {
template<std::size_t L>
Error field(const char *key, BString<L> *val) noexcept;
Error field(const char *key, SerStr val) noexcept;
Error fieldCString(const char *key, char *val, std::size_t buffLen) noexcept;
Error fieldCString(const char *key, char **val) noexcept;
@@ -205,7 +203,7 @@ Error OrganicClawReader::field(const char *key, BasicString<L> *val) noexcept {
template<std::size_t L>
Error OrganicClawReader::field(const char *key, BString<L> *val) noexcept {
return field(key, SerStr(val->data(), static_cast<int>(val->cap())));
return fieldCString(key, val->data(), val->cap());
}
// array handler

View File

@@ -332,7 +332,7 @@ const std::map<std::string_view, ox::Error(*)()> tests = {
}
case ox::PrimitiveType::String: {
ox::Vector<char> v(rdr->stringLength(fieldName) + 1);
oxAssert(rdr->field(fieldName, ox::SerStr(v.data(), static_cast<int>(v.size()))), "Walking model failed.");
oxAssert(rdr->fieldCString(fieldName, v.data(), v.size()), "Walking model failed.");
oxOutf("{}:\tstring:\t{}\n", fieldName, v.data());
break;
}

View File

@@ -18,14 +18,6 @@ OrganicClawWriter::OrganicClawWriter(Json::Value json, int unionIdx) noexcept:
m_unionIdx(unionIdx) {
}
Error OrganicClawWriter::field(const char *key, SerStr val) noexcept {
if (targetValid() && val.len()) {
value(key) = val.c_str();
}
++m_fieldIt;
return OxError(0);
}
Error OrganicClawWriter::fieldCString(const char *key, const char *const*val, int len) noexcept {
if (targetValid() && len) {
value(key) = *val;

View File

@@ -141,12 +141,20 @@ class OrganicClawWriter {
template<std::size_t L>
Error field(const char *key, const BString<L> *val) noexcept {
return field(key, SerStr(val->data(), val->cap()));
if (targetValid() && val->len()) {
value(key) = val->c_str();
}
++m_fieldIt;
return {};
}
template<std::size_t L>
Error field(const char *key, BString<L> *val) noexcept {
return field(key, SerStr(val->data(), static_cast<int>(val->cap())));
if (targetValid() && val->len()) {
value(key) = val->c_str();
}
++m_fieldIt;
return {};
}
template<std::size_t L>
@@ -163,8 +171,6 @@ class OrganicClawWriter {
return field(key, const_cast<const BasicString<L>*>(val));
}
Error field(const char*, SerStr val) noexcept;
Error fieldCString(const char*, const char *const*val, int len) noexcept;
Error fieldCString(const char *name, char **val, int len) noexcept;