diff options
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; +} |