From 9a0bd3f93dbb1babc3149e3ba6348810a909fd4f Mon Sep 17 00:00:00 2001 From: "Claudius \"keldu\" Holeksa" Date: Wed, 10 Jan 2024 17:10:26 +0100 Subject: codec: Fixing minor issues csv and data definitions --- modules/codec/c++/csv.h | 3 +-- modules/codec/c++/data.h | 17 +++++++++++++++++ modules/codec/tests/csv.cpp | 28 ++++++++++++++++++++++------ 3 files changed, 40 insertions(+), 8 deletions(-) diff --git a/modules/codec/c++/csv.h b/modules/codec/c++/csv.h index 7a3a18e..d35bb2d 100644 --- a/modules/codec/c++/csv.h +++ b/modules/codec/c++/csv.h @@ -118,7 +118,7 @@ struct csv_encode...>, FromDecode> { return eov; } } - return encode_header(to); + return encode_i(from, to); } { /** @@ -162,7 +162,6 @@ struct csv_encode, FromDecode> { static error_or encode(const data& from, buffer& to){ std::string to_str; - try { to_str = std::to_string(from.get()); }catch(const std::exception& ){ diff --git a/modules/codec/c++/data.h b/modules/codec/c++/data.h index 2dffdbe..eb24841 100644 --- a/modules/codec/c++/data.h +++ b/modules/codec/c++/data.h @@ -383,6 +383,7 @@ private: typename native_data_type>::type value_; public: data():value_{}{} + SAW_DEFAULT_COPY(data); SAW_DEFAULT_MOVE(data); @@ -394,6 +395,22 @@ public: } typename native_data_type>::type get() const {return value_;} + + data, encode::Native> operator*(const saw::data, encode::Native>& rhs)const{ + return {get() * rhs.get()}; + } + + data, encode::Native> operator/(const saw::data, encode::Native>& rhs)const{ + return {get() / rhs.get()}; + } + + data, encode::Native> operator+(const saw::data, encode::Native>& rhs)const{ + return {get() + rhs.get()}; + } + + data, encode::Native> operator-(const saw::data, encode::Native>& rhs)const{ + return {get() - rhs.get()}; + } }; diff --git a/modules/codec/tests/csv.cpp b/modules/codec/tests/csv.cpp index cbdc129..6d5549a 100644 --- a/modules/codec/tests/csv.cpp +++ b/modules/codec/tests/csv.cpp @@ -10,7 +10,8 @@ using namespace saw::schema; using TestStruct = Struct< Member, - Member + Member, + Member >; using TestArray = Array< @@ -20,11 +21,26 @@ using TestArray = Array< SAW_TEST("Codec Csv Encode Basic"){ using namespace saw; - data native_data{1}; - auto& row = native_data.at(0); - - row.template get<"string">().set("foo"); - row.template get<"number">().set(140u); + size_t n_size = 3; + data native_data{n_size}; + { + auto& row = native_data.at(0); + row.template get<"string">().set("foo"); + row.template get<"number">().set(140u); + row.template get<"signed">().set(1); + } + { + auto& row = native_data.at(1); + row.template get<"string">().set("bar"); + row.template get<"number">().set(245u); + row.template get<"signed">().set(2); + } + { + auto& row = native_data.at(2); + row.template get<"string">().set("ban and anna"); + row.template get<"number">().set(42u); + row.template get<"signed">().set(3); + } data csv_data; codec csv_codec; -- cgit v1.2.3