From 6549acd69973cee030c9c73e55470094221b212e Mon Sep 17 00:00:00 2001 From: Claudius 'keldu' Holeksa Date: Wed, 4 Sep 2024 15:36:17 +0200 Subject: Preparing csv to work --- modules/codec/c++/csv.hpp | 30 ++++++++++++++++++++++-------- modules/codec/tests/csv.cpp | 14 ++++++++++++-- 2 files changed, 34 insertions(+), 10 deletions(-) (limited to 'modules') diff --git a/modules/codec/c++/csv.hpp b/modules/codec/c++/csv.hpp index 82010d7..240ed75 100644 --- a/modules/codec/c++/csv.hpp +++ b/modules/codec/c++/csv.hpp @@ -97,7 +97,7 @@ struct csv_encode...>, FromDecode> { /** * Replace this with row separator */ - constexpr std::string_view lit = "\r\n"; + constexpr std::string_view lit = "\n"; for(int8_t iter : lit){ auto eov = stream_value::encode(iter, to); if ( eov.is_error()){ @@ -110,7 +110,10 @@ struct csv_encode...>, FromDecode> { } static error_or encode_header(buffer& to){ - return encode_header_i<0>(to); + if constexpr (sizeof...(V) > 0u){ + return encode_header_i<0u>(to); + } + return make_void(); } template @@ -225,12 +228,18 @@ struct csv_decode, FromDecode> { template class data { private: - ring_buffer buffer_; + own buffer_; public: - data() = default; + data(): + buffer_{heap()} + {} + + data(own buffer__): + buffer_{std::move(buffer__)} + {} buffer& get_buffer(){ - return buffer_; + return *buffer_; } }; @@ -253,10 +262,15 @@ public: template static error_or decode(data& from, data& to){ - (void) to; - (void) from; + auto& buff = from.get_buffer(); + buffer_view buff_v{buff}; + auto eov = impl::csv_decode::decode(buff_v, to); + if(eov.is_error()){ + return eov; + } + buff.write_advance(buff_v.write_offset()); - return make_error(); + return eov; } }; } diff --git a/modules/codec/tests/csv.cpp b/modules/codec/tests/csv.cpp index ac394ce..417a547 100644 --- a/modules/codec/tests/csv.cpp +++ b/modules/codec/tests/csv.cpp @@ -14,14 +14,18 @@ using TestStruct = Struct< Member >; +using TestTuple = Tuple< + String +>; + using TestArray = Array< TestStruct >; -SAW_TEST("Codec Csv Encode Basic"){ +SAW_TEST("Codec Csv/Encode Basic"){ using namespace saw; - size_t n_size = 3; + size_t n_size = 3u; data native_data{n_size}; { auto& row = native_data.at(0); @@ -48,5 +52,11 @@ SAW_TEST("Codec Csv Encode Basic"){ auto eov = csv_codec.encode(native_data, csv_data); SAW_EXPECT(eov.is_value(), "Couldn't encode data"); } + +/* +SAW_TEST("Codec Csv/Decode Basic"){ + using namespace saw; +} +*/ } } -- cgit v1.2.3