diff options
author | Claudius 'keldu' Holeksa <mail@keldu.de> | 2024-07-24 15:55:35 +0200 |
---|---|---|
committer | Claudius 'keldu' Holeksa <mail@keldu.de> | 2024-07-24 15:55:35 +0200 |
commit | 8a7c83e646656361ab322467ad96eb6a6b09a074 (patch) | |
tree | 3529a0b70e18e4b17a787571a84f88f5221aa412 /modules/codec/examples/csv_encode.cpp | |
parent | ea306799624d0390074f6afa5d38644cce076c9f (diff) |
wip
Diffstat (limited to 'modules/codec/examples/csv_encode.cpp')
-rw-r--r-- | modules/codec/examples/csv_encode.cpp | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/modules/codec/examples/csv_encode.cpp b/modules/codec/examples/csv_encode.cpp new file mode 100644 index 0000000..2761ea3 --- /dev/null +++ b/modules/codec/examples/csv_encode.cpp @@ -0,0 +1,62 @@ +#include "../c++/csv.hpp" + +#include <iostream> + +namespace sch { +using namespace saw::schema; + +using TestStruct = Struct< + Member<UInt32, "ufoo">, + Member<Float64, "double">, + Member<String, "brah"> +>; +} + +int main(){ + using namespace saw; + + using Schema = sch::Array<sch::TestStruct>; + + data<Schema> dat{4u}; + codec<Schema, encode::Csv> csv_codec; + + { + auto& row = dat.at(0u); + row.template get<"ufoo">().set(50u); + row.template get<"double">().set(50.0); + row.template get<"brah">().set("foo"); + } + { + auto& row = dat.at(1u); + row.template get<"ufoo">().set(40u); + row.template get<"double">().set(42.0); + row.template get<"brah">().set("bleh"); + } + { + auto& row = dat.at(2u); + row.template get<"ufoo">().set(42u); + row.template get<"double">().set(40.0); + row.template get<"brah">().set("arg"); + } + { + auto& row = dat.at(3u); + row.template get<"ufoo">().set(10u); + row.template get<"double">().set(20.1); + row.template get<"brah">().set("ben and anna"); + } + + data<Schema, encode::Csv> csv_dat; + + auto eov = csv_codec.encode(dat, csv_dat); + if(eov.is_error()){ + auto& err = eov.get_error(); + std::cerr<<"Error: "<<err.get_category()<<" - "<<err.get_message()<<std::endl; + return -1; + } + + auto str = convert_to_string(csv_dat.get_buffer()); + std::cout<<str; + std::cout.flush(); + + return 0; +} |