From 8f659217533b3e46a339c95b77bc05fb5064bf0a Mon Sep 17 00:00:00 2001 From: Joakim Hove Date: Thu, 19 Nov 2020 08:42:00 +0100 Subject: [PATCH] Add put_vector() and get_vector() methods to Serializer --- opm/common/utility/Serializer.hpp | 18 ++++++++++++++++++ tests/test_Serializer.cpp | 5 +++++ 2 files changed, 23 insertions(+) diff --git a/opm/common/utility/Serializer.hpp b/opm/common/utility/Serializer.hpp index 6f7f65eb4..64b7b5e67 100644 --- a/opm/common/utility/Serializer.hpp +++ b/opm/common/utility/Serializer.hpp @@ -61,6 +61,24 @@ public: return value; } + template + void put_vector(const std::vector& values) { + this->put(values.size()); + this->pack(values.data(), values.size() * sizeof(T)); + } + + + + template + std::vector get_vector() { + std::size_t size = this->get(); + std::vector values(size); + for (std::size_t index=0; index < size; index++) + values[index] = this->get(); + + return values; + } + template void put_map(const std::unordered_map& values) { this->put(values.size()); diff --git a/tests/test_Serializer.cpp b/tests/test_Serializer.cpp index 086acb042..459f3012e 100644 --- a/tests/test_Serializer.cpp +++ b/tests/test_Serializer.cpp @@ -32,11 +32,13 @@ BOOST_AUTO_TEST_CASE(SERIALIZER) { double double_value = 3.14; std::string string_value = "String"; std::unordered_map m = {{"A", 1}, {"B", 2}, {"C", 3}}; + std::vector v = {1,2,3,4,5,6,7,8,9,10}; ser.put(int_value); ser.put(double_value); ser.put(string_value); ser.put_map(m); + ser.put_vector(v); Opm::Serializer ser2(ser.buffer); BOOST_CHECK_EQUAL(ser2.get(), int_value); @@ -46,6 +48,9 @@ BOOST_AUTO_TEST_CASE(SERIALIZER) { std::unordered_map m2 = ser2.get_map(); BOOST_CHECK(m2 == m); + + std::vector v2 = ser2.get_vector(); + BOOST_CHECK(v2 == v); } BOOST_AUTO_TEST_CASE(EMPTY_STRING) {