diff --git a/src/ox/oc/read.hpp b/src/ox/oc/read.hpp index 4590a02a6..925f62248 100644 --- a/src/ox/oc/read.hpp +++ b/src/ox/oc/read.hpp @@ -53,9 +53,6 @@ class OrganicClawReader { template Error field(const char *key, T *val, std::size_t len); - template - Error field(const char *key, Vector *val); - template Error field(const char*, HashMap *val); @@ -112,7 +109,9 @@ class OrganicClawReader { template Error OrganicClawReader::field(const char *key, T *val) { auto err = OxError(0); - if (targetValid()) { + if constexpr(isVector_v) { + return field(key, val->data(), val->size()); + } else if (targetValid()) { const auto &jv = value(key); if (jv.empty() || jv.isObject()) { auto reader = child(key); @@ -161,11 +160,6 @@ Error OrganicClawReader::field(const char *key, T *val, std::size_t valLen) { return OxError(0); } -template -Error OrganicClawReader::field(const char *key, ox::Vector *val) { - return field(key, val->data(), val->size()); -} - template Error OrganicClawReader::field(const char *key, HashMap *val) { const auto &srcVal = value(key); diff --git a/src/ox/oc/test/tests.cpp b/src/ox/oc/test/tests.cpp index c381507b4..d156fa8d7 100644 --- a/src/ox/oc/test/tests.cpp +++ b/src/ox/oc/test/tests.cpp @@ -53,16 +53,12 @@ struct TestStruct { TestStruct() noexcept = default; - TestStruct(const TestStruct&) noexcept; - TestStruct(TestStruct &&other) noexcept; ~TestStruct() noexcept { delete[] CString; } - constexpr TestStruct &operator=(const TestStruct&) noexcept; - constexpr TestStruct &operator=(TestStruct&&) noexcept; }; @@ -108,19 +104,10 @@ constexpr ox::Error model(T *io, TestStruct *obj) noexcept { return OxError(0); } -TestStruct::TestStruct(const TestStruct &other) noexcept { - ox::copyModel(this, &other); -} - TestStruct::TestStruct(TestStruct &&other) noexcept { ox::moveModel(this, &other); } -constexpr TestStruct &TestStruct::operator=(const TestStruct &other) noexcept { - ox::copyModel(this, &other); - return *this; -} - constexpr TestStruct &TestStruct::operator=(TestStruct &&other) noexcept { ox::moveModel(this, &other); return *this; diff --git a/src/ox/oc/write.hpp b/src/ox/oc/write.hpp index 07138b87d..0a7c072ca 100644 --- a/src/ox/oc/write.hpp +++ b/src/ox/oc/write.hpp @@ -51,9 +51,6 @@ class OrganicClawWriter { template Error field(const char*, UnionView val); - template - Error field(const char*, ox::Vector *val); - template Error field(const char*, HashMap *val); @@ -106,7 +103,9 @@ Error OrganicClawWriter::field(const char *key, ox::BString *val) { template Error OrganicClawWriter::field(const char *key, T *val) { - if (val && targetValid()) { + if constexpr(isVector_v) { + return field(key, val->data(), val->size()); + } else if (val && targetValid()) { OrganicClawWriter w; oxReturnError(model(&w, val)); if (!w.m_json.isNull()) { @@ -130,11 +129,6 @@ Error OrganicClawWriter::field(const char *key, UnionView val) { return OxError(0); } -template -Error OrganicClawWriter::field(const char *key, ox::Vector *val) { - return field(key, val->data(), val->size()); -} - template Error OrganicClawWriter::field(const char *key, ox::HashMap *val) { if (targetValid()) {