diff options
| -rw-r--r-- | README | 4 | ||||
| -rw-r--r-- | libnvxx/nvxx_serialize.h | 8 | ||||
| -rw-r--r-- | libnvxx/tests/nvxx_basic.cc | 3 | ||||
| -rw-r--r-- | libnvxx/tests/nvxx_serialize.cc | 3 |
4 files changed, 9 insertions, 9 deletions
@@ -60,7 +60,9 @@ serialization interface: object obj{}; nv_list nvl = bsd::nv_serialize(obj); - object obj2 = bsd::nv_deserialize<object>(nvl); + + object obj2{}; + bsd::nv_deserialize(nvl, obj); infrequently asked questions: diff --git a/libnvxx/nvxx_serialize.h b/libnvxx/nvxx_serialize.h index 37deab6..45f92be 100644 --- a/libnvxx/nvxx_serialize.h +++ b/libnvxx/nvxx_serialize.h @@ -365,15 +365,13 @@ auto nv_serialize(_T &&__o) -> nv_list return __nvl; } -template<typename _T> -auto nv_deserialize(const_nv_list const &__nvl) -> _T +template<typename _Object> +void nv_deserialize(const_nv_list const &__nvl, _Object &__obj) { - using __schema_type = nv_schema<std::remove_cvref_t<_T>>; + using __schema_type = nv_schema<std::remove_cvref_t<_Object>>; auto __schema = __schema_type{}.get(); - auto __obj = _T(); __schema.deserialize(__nvl, __obj); - return __obj; } } // namespace bsd diff --git a/libnvxx/tests/nvxx_basic.cc b/libnvxx/tests/nvxx_basic.cc index fa17397..8f9ea19 100644 --- a/libnvxx/tests/nvxx_basic.cc +++ b/libnvxx/tests/nvxx_basic.cc @@ -921,8 +921,7 @@ TEST_CASE(nvxx_add_binary_error) auto nvl = bsd::nv_list(); nvl.set_error(EINVAL); - ATF_REQUIRE_THROW(bsd::nv_error_state, - nvl.add_binary("test_binary", value)); + ATF_REQUIRE_THROW(bsd::nv_error_state, nvl.add_binary(key, value)); } TEST_CASE(nvxx_add_duplicate_binary) diff --git a/libnvxx/tests/nvxx_serialize.cc b/libnvxx/tests/nvxx_serialize.cc index 8ce5a21..93dadf8 100644 --- a/libnvxx/tests/nvxx_serialize.cc +++ b/libnvxx/tests/nvxx_serialize.cc @@ -216,7 +216,8 @@ TEST_CASE(nv_serialize) auto obj = object{42, "quux", {42, 666, 1024}}; auto nvl = bsd::nv_serialize(obj); - auto obj2 = bsd::nv_deserialize<object>(nvl); + auto obj2 = object{}; + bsd::nv_deserialize(nvl, obj2); ATF_REQUIRE_EQ(42, obj2.int_value); ATF_REQUIRE_EQ("quux", obj2.string_value); ATF_REQUIRE_EQ(true, std::ranges::equal(obj2.array_value, |
