diff options
Diffstat (limited to 'modules/codec/examples')
-rw-r--r-- | modules/codec/examples/SConscript | 33 | ||||
-rw-r--r-- | modules/codec/examples/csv_encode.cpp | 62 |
2 files changed, 95 insertions, 0 deletions
diff --git a/modules/codec/examples/SConscript b/modules/codec/examples/SConscript new file mode 100644 index 0000000..e06b9fb --- /dev/null +++ b/modules/codec/examples/SConscript @@ -0,0 +1,33 @@ +#!/bin/false + +import os +import os.path +import glob + + +Import('env') + +dir_path = Dir('.').abspath + +# Environment for base library +examples_env = env.Clone(); + +examples_env.sources = sorted(glob.glob(dir_path + "/*.cpp")) +examples_env.headers = sorted(glob.glob(dir_path + "/*.hpp")) + +env.sources += examples_env.sources; +env.headers += examples_env.headers; + +examples_objects = []; +examples_env.add_source_files(examples_objects, ['csv_encode.cpp'], shared=False); + +examples_env.examples_basic = examples_env.Program('#bin/csv_encode_example', [env.library_static, examples_objects]); + +# Set Alias +env.examples = [examples_env.examples_basic]; +env.Alias('examples', env.examples); + +if env["build_examples"]: + env.targets += ['examples']; + env.Install('$prefix/bin/', env.examples); +#endif 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; +} |