From c1572ff1c275145208333e3e69c29c569689e51b Mon Sep 17 00:00:00 2001 From: "Claudius \"keldu\" Holeksa" Date: Wed, 17 Apr 2024 15:03:09 +0200 Subject: Moved to platform description in structs --- modules/codec-json/SConstruct | 1 + modules/codec-json/c++/json.tmpl.hpp | 6 +- modules/codec-json/tests/codec-json.cpp | 32 +++++------ modules/codec-netcdf/SConstruct | 1 + modules/codec-netcdf/tests/codec-netcdf.cpp | 6 +- modules/codec/SConstruct | 1 + modules/codec/c++/data.hpp | 88 +++++++++++++++-------------- modules/codec/tests/codec.cpp | 58 +++++++++---------- modules/codec/tests/csv.cpp | 2 +- modules/core/SConstruct | 1 + modules/io-tls/SConstruct | 1 + modules/io/SConstruct | 1 + modules/io_codec/SConstruct | 1 + 13 files changed, 105 insertions(+), 94 deletions(-) (limited to 'modules') diff --git a/modules/codec-json/SConstruct b/modules/codec-json/SConstruct index 20dd972..ff2b31d 100644 --- a/modules/codec-json/SConstruct +++ b/modules/codec-json/SConstruct @@ -44,6 +44,7 @@ env_vars.Add('prefix', ) env=Environment(ENV=os.environ, variables=env_vars, CPPPATH=[], + CXX=['c++'], CPPDEFINES=['SAW_UNIX'], CXXFLAGS=['-std=c++20','-g','-Wall','-Wextra'], LIBS=[ diff --git a/modules/codec-json/c++/json.tmpl.hpp b/modules/codec-json/c++/json.tmpl.hpp index e8226f9..0a9f53d 100644 --- a/modules/codec-json/c++/json.tmpl.hpp +++ b/modules/codec-json/c++/json.tmpl.hpp @@ -773,7 +773,7 @@ struct json_decode, ToDecode> { using Schema = schema::Array; template - static error_or decode_flat_level(buffer_view& buff, std::vector>& to, std::array& index, std::array& dims, bool log_dim){ + static error_or decode_flat_level(buffer_view& buff, std::vector>>& to, std::array& index, std::array& dims, bool log_dim){ if constexpr (Level == D) { json_helper::skip_whitespace(buff); try { @@ -830,7 +830,7 @@ struct json_decode, ToDecode> { } template - static error_or decode_unflat_level(std::vector>& flat, data, ToDecode>& to, std::array& index, std::size_t& flat_index) { + static error_or decode_unflat_level(std::vector>>& flat, data, ToDecode>& to, std::array& index, std::size_t& flat_index) { if constexpr ( Level == D ){ auto& flat_data = flat.at(flat_index); to.at(index) = std::move(flat_data); @@ -852,7 +852,7 @@ struct json_decode, ToDecode> { std::array index; std::array dims; std::fill(dims.begin(), dims.end(), 0); - std::vector> flat_array; + std::vector>> flat_array; auto eov = decode_flat_level<0>(buff, flat_array, index, dims, true); if(eov.is_error()){ return eov; diff --git a/modules/codec-json/tests/codec-json.cpp b/modules/codec-json/tests/codec-json.cpp index 723e78c..aca4e21 100644 --- a/modules/codec-json/tests/codec-json.cpp +++ b/modules/codec-json/tests/codec-json.cpp @@ -28,7 +28,7 @@ using TestStruct = Struct< SAW_TEST("UInt8 write"){ using namespace saw; - data native_int; + data> native_int; data json_int; native_int.set(121); @@ -48,7 +48,7 @@ SAW_TEST("UInt8 write"){ SAW_TEST("UInt16 write"){ using namespace saw; - data native_int; + data> native_int; data json_int; native_int.set(24413); @@ -68,7 +68,7 @@ SAW_TEST("UInt16 write"){ SAW_TEST("UInt32 write"){ using namespace saw; - data native_int; + data> native_int; data json_int; native_int.set(44123); @@ -88,7 +88,7 @@ SAW_TEST("UInt32 write"){ SAW_TEST("UInt64 write"){ using namespace saw; - data native_int; + data> native_int; data json_int; native_int.set(243345543); @@ -108,7 +108,7 @@ SAW_TEST("UInt64 write"){ SAW_TEST("Int8 write"){ using namespace saw; - data native_int; + data> native_int; data json_int; native_int.set(-121); @@ -128,7 +128,7 @@ SAW_TEST("Int8 write"){ SAW_TEST("Int16 write"){ using namespace saw; - data native_int; + data> native_int; data json_int; native_int.set(-24413); @@ -148,7 +148,7 @@ SAW_TEST("Int16 write"){ SAW_TEST("Int32 write"){ using namespace saw; - data native_int; + data> native_int; data json_int; native_int.set(44123); @@ -168,7 +168,7 @@ SAW_TEST("Int32 write"){ SAW_TEST("Int64 write"){ using namespace saw; - data native_int; + data> native_int; data json_int; native_int.set(243345543); @@ -188,7 +188,7 @@ SAW_TEST("Int64 write"){ SAW_TEST("String write and read"){ using namespace saw; - data nat_str; + data> nat_str; data json_str; nat_str.set("foo"); @@ -215,7 +215,7 @@ SAW_TEST("String write and read"){ SAW_TEST("Tuple read and write"){ using namespace saw; - data native_tup; + data> native_tup; data json_tup; auto& nat_zero = native_tup.template get<0>(); @@ -244,7 +244,7 @@ SAW_TEST("Tuple read and write"){ SAW_TEST("Array write"){ using namespace saw; - data native{3u}; + data> native{3u}; data json; native.at(0).set("foo"); @@ -264,7 +264,7 @@ SAW_TEST("Array write"){ SAW_TEST("Three Dim Array write and read"){ using namespace saw; - data native{2,1,2}; + data> native{2,1,2}; data json; native.at(0,0,0).set("multi"); @@ -294,7 +294,7 @@ SAW_TEST("Three Dim Array write and read"){ SAW_TEST("Struct read and write"){ using namespace saw; - data native; + data> native; data json; native.get<"foo">().set(5); @@ -319,7 +319,7 @@ SAW_TEST("Struct read and write"){ SAW_TEST("Int8 read"){ using namespace saw; - data native_int; + data> native_int; data json_int{"43"}; codec json_codec; @@ -337,7 +337,7 @@ SAW_TEST("Int8 read"){ SAW_TEST("Int64 read"){ using namespace saw; - data native_int; + data> native_int; data json_int{"-453"}; codec json_codec; @@ -355,7 +355,7 @@ SAW_TEST("Int64 read"){ SAW_TEST("Tuple Pretty Encode and Decode"){ using namespace saw; - data native_tup; + data> native_tup; data json_tup; auto& nat_zero = native_tup.template get<0>(); diff --git a/modules/codec-netcdf/SConstruct b/modules/codec-netcdf/SConstruct index 1f205d2..adabe4b 100644 --- a/modules/codec-netcdf/SConstruct +++ b/modules/codec-netcdf/SConstruct @@ -44,6 +44,7 @@ env_vars.Add('prefix', ) env=Environment(ENV=os.environ, variables=env_vars, CPPPATH=[], + CXX=['c++'], CPPDEFINES=['SAW_UNIX'], CXXFLAGS=['-std=c++20','-g','-Wall','-Wextra'], LIBS=[ diff --git a/modules/codec-netcdf/tests/codec-netcdf.cpp b/modules/codec-netcdf/tests/codec-netcdf.cpp index ef5060f..0211a15 100644 --- a/modules/codec-netcdf/tests/codec-netcdf.cpp +++ b/modules/codec-netcdf/tests/codec-netcdf.cpp @@ -46,7 +46,7 @@ std::array tests_data_array_nc = { SAW_TEST("NetCDF Struct Primitive write"){ using namespace saw; - data native; + data> native; native.get<"data">().set(5); native.get<"other">().set(32.0); @@ -69,7 +69,7 @@ SAW_TEST("NetCDF Struct Primitive read"){ using namespace saw; data netcdf{tests_data_primitive_nc}; - data native; + data> native; codec codec; @@ -84,7 +84,7 @@ SAW_TEST("NetCDF Struct Array read"){ data netcdf{tests_data_array_nc}; - data native; + data> native; codec codec; diff --git a/modules/codec/SConstruct b/modules/codec/SConstruct index 364f1fe..d4bc519 100644 --- a/modules/codec/SConstruct +++ b/modules/codec/SConstruct @@ -44,6 +44,7 @@ env_vars.Add('prefix', ) env=Environment(ENV=os.environ, variables=env_vars, CPPPATH=[], + CXX=['c++'], CPPDEFINES=['SAW_UNIX'], CXXFLAGS=['-std=c++20','-g','-Wall','-Wextra'], LIBS=['forstio-core'] diff --git a/modules/codec/c++/data.hpp b/modules/codec/c++/data.hpp index 2adb5b7..7cf3e75 100644 --- a/modules/codec/c++/data.hpp +++ b/modules/codec/c++/data.hpp @@ -15,7 +15,11 @@ #include "schema.hpp" namespace saw { +namespace rmt { +struct Host {}; +} namespace encode { +template struct Native {}; } template @@ -76,14 +80,14 @@ struct native_data_type> { using type = double; }; -template +template> class data { private: static_assert(always_false, "Type not supported"); }; template -class data, encode::Native> { +class data, encode::Native> { private: typename native_data_type>::type value_; public: @@ -101,19 +105,19 @@ public: typename native_data_type>::type get() const {return value_;} - data, encode::Native> operator*(const data, encode::Native>& rhs)const{ + data, encode::Native> operator*(const data, encode::Native>& rhs)const{ return {get() * rhs.get()}; } - data, encode::Native> operator/(const data, encode::Native>& rhs)const{ + data, encode::Native> operator/(const data, encode::Native>& rhs)const{ return {get() / rhs.get()}; } - data, encode::Native> operator+(const data, encode::Native>& rhs)const{ + data, encode::Native> operator+(const data, encode::Native>& rhs)const{ return {get() + rhs.get()}; } - data, encode::Native> operator-(const data, encode::Native>& rhs)const{ + data, encode::Native> operator-(const data, encode::Native>& rhs)const{ return {get() - rhs.get()}; } @@ -131,18 +135,18 @@ public: * Casts */ template - data cast_to(){ + data> cast_to(){ auto raw_to = static_cast::type>(value_); return {raw_to}; } }; template -class data, schema::Primitive>, encode::Native>{ +class data, schema::Primitive>, encode::Native>{ public: using Schema = schema::MixedPrecision, schema::Primitive>; private: - data value_; + data> value_; public: data():value_{}{} @@ -158,9 +162,9 @@ public: }; template -class data...>, encode::Native> { +class data...>, encode::Native> { private: - std::variant...> value_; + std::variant>...> value_; public: data() = default; @@ -168,12 +172,12 @@ public: SAW_DEFAULT_MOVE(data); template - void set(data::value, T...>::type, encode::Native> val){ + void set(data::value, T...>::type, encode::Native> val){ value_ = std::move(val); } template - data::value, T...>::type, encode::Native>& init(){ + data::value, T...>::type, encode::Native>& init(){ value_.template emplace::value>(); return get(); } @@ -184,20 +188,20 @@ public: } template - data::value, T...>::type, encode::Native>& get(){ + data::value, T...>::type, encode::Native>& get(){ return std::get::value>(value_); } template - const data::value, T...>::type, encode::Native>& get() const{ + const data::value, T...>::type, encode::Native>& get() const{ return std::get::value>(value_); } }; template -class data...>, encode::Native> { +class data...>, encode::Native> { private: - std::tuple...> value_; + std::tuple>...> value_; public: data() = default; SAW_DEFAULT_COPY(data); @@ -210,7 +214,7 @@ public: literal, literals... >::value , T...>::type - , encode::Native>& get(){ + , encode::Native>& get(){ return std::get::value>(value_); } @@ -221,7 +225,7 @@ public: literal, literals... >::value , T...>::type - , encode::Native>& get() const { + , encode::Native>& get() const { return std::get::value>(value_); } @@ -231,21 +235,21 @@ public: }; template -class data, encode::Native> { +class data, encode::Native> { private: - std::tuple...> value_; + std::tuple>...> value_; public: data() = default; SAW_DEFAULT_COPY(data); SAW_DEFAULT_MOVE(data); template - data::type, encode::Native>& get(){ + data::type, encode::Native>& get(){ return std::get(value_); } template - const data::type, encode::Native>& get() const{ + const data::type, encode::Native>& get() const{ return std::get(value_); } @@ -255,11 +259,11 @@ public: }; template -class data, encode::Native> { +class data, encode::Native> { private: // data> dims_; std::array dims_; - std::vector> value_; + std::vector>> value_; uint64_t get_full_size() const { uint64_t s = 1; @@ -291,7 +295,7 @@ class data, encode::Native> { } template - error_or add(saw::data data){ + error_or add(saw::data> data){ /** @todo * Generally the last dimension can always accept a element so to say. * Changing the others would require moving data due to the stride changing. @@ -326,29 +330,29 @@ class data, encode::Native> { static_assert(sizeof...(Dims)==Dim, "Argument size must be equal to the Dimension"); } - data& at(const std::array& ind){ + data>& at(const std::array& ind){ return value_.at(this->get_flat_index(ind)); } - const data& at(const std::array& ind) const { + const data>& at(const std::array& ind) const { return value_.at(this->get_flat_index(ind)); } template - data& at(Dims... i){ + data>& at(Dims... i){ return value_.at(this->get_flat_index(std::array{static_cast(i)...})); } template - const data& at(Dims... i) const { + const data>& at(Dims... i) const { return value_.at(this->get_flat_index(std::array{static_cast(i)...})); } - data& at(const data>& i){ + data>& at(const data>& i){ return value_.at(this->get_flat_index(i)); } - const data& at(const data>& i)const{ + const data>& at(const data>& i)const{ return value_.at(this->get_flat_index(i)); } @@ -396,39 +400,39 @@ private: }; template -class data, encode::Native> { +class data, encode::Native> { private: - //using inner_type = std::array, multiply_helper::value>; + //using inner_type = std::array>, multiply_helper::value>; //std::unique_ptr value_; - using ArrayT = std::array, ct_multiply::value>; + using ArrayT = std::array>, ct_multiply::value>; ArrayT value_; public: data() = default; - data& at(const std::array& ind){ + data>& at(const std::array& ind){ return value_.at(this->get_flat_index(ind)); } - const data& at(const std::array& ind) const { + const data>& at(const std::array& ind) const { return value_.at(this->get_flat_index(ind)); } template - data& at(Dims... i) { + data>& at(Dims... i) { return value_.at(this->get_flat_index({i...})); } template - const data& at(Dims... i) const { + const data>& at(Dims... i) const { return value_.at(this->get_flat_index({i...})); } - data& at(const data>& i){ + data>& at(const data>& i){ return value_.at(this->get_flat_index(i)); } - const data& at(const data>& i)const{ + const data>& at(const data>& i)const{ return value_.at(this->get_flat_index(i)); } @@ -459,7 +463,7 @@ private: }; template<> -class data { +class data> { private: std::string value_; public: diff --git a/modules/codec/tests/codec.cpp b/modules/codec/tests/codec.cpp index 7113d45..8ffe9f0 100644 --- a/modules/codec/tests/codec.cpp +++ b/modules/codec/tests/codec.cpp @@ -50,7 +50,7 @@ using TestInterface = Interface< SAW_TEST("One Dimensional Array") { using namespace saw; - data arr{500u}; + data> arr{500u}; int bar = 0; @@ -69,7 +69,7 @@ SAW_TEST("One Dimensional Array") { SAW_TEST("One dim Array Default init"){ using namespace saw; - data arr; + data> arr; SAW_EXPECT(arr.get_dim_size(0) == 0, "Dim should be size 0"); SAW_EXPECT(arr.size() == 0, "Total size should also be zero"); @@ -78,7 +78,7 @@ SAW_TEST("One dim Array Default init"){ SAW_TEST("One dimensional Array Add"){ using namespace saw; - data arr{5u}; + data> arr{5u}; int bar = 0; @@ -95,7 +95,7 @@ SAW_TEST("One dimensional Array Add"){ SAW_TEST("Two Dimensional Array") { using namespace saw; - data arr{10,30u}; + data> arr{10,30u}; int expected_sum = (300 * 301) / 2; @@ -119,7 +119,7 @@ SAW_TEST("Two Dimensional Array") { SAW_TEST("Three Dimensional Array") { using namespace saw; - data arr{10,10u,3}; + data> arr{10,10u,3}; int expected_sum = (300 * 301) / 2; int bar = 0; @@ -145,7 +145,7 @@ SAW_TEST("Three Dimensional Array") { SAW_TEST("KelSimple UInt16 write"){ using namespace saw; - data native; + data> native; data simple; codec codec; @@ -168,7 +168,7 @@ SAW_TEST("KelSimple UInt16 write"){ SAW_TEST("KelSimple UInt32 write"){ using namespace saw; - data native; + data> native; data simple; codec codec; @@ -191,7 +191,7 @@ SAW_TEST("KelSimple UInt32 write"){ SAW_TEST("KelSimple Array write and read back"){ using namespace saw; - data native{2,3}; + data> native{2,3}; data simple; codec codec; @@ -224,7 +224,7 @@ SAW_TEST("KelSimple Array write and read back"){ SAW_TEST("KelSimple Struct write and read back"){ using namespace saw; - data native; + data> native; data simple; auto& tda = native.template get<"two_dim_array">(); @@ -255,7 +255,7 @@ SAW_TEST("KelSimple Struct write and read back"){ SAW_TEST("Native Union same type compilation"){ using namespace saw; - data native; + data> native; native.template init<"two">().set(50u); @@ -268,10 +268,10 @@ SAW_TEST("Native Union same type compilation"){ SAW_TEST("KelSimple Union write and read back"){ using namespace saw; - data native; + data> native; data simple; - native.template set<"number">(data{}); + native.template set<"number">(data>{}); native.template get<"number">().set(410); codec codec; @@ -292,7 +292,7 @@ SAW_TEST("KelSimple Union write and read back"){ SAW_TEST("KelSimple Tuple write and read back"){ using namespace saw; - data native; + data> native; data simple; auto& tda = native.template get<0>(); @@ -323,7 +323,7 @@ SAW_TEST("KelSimple Tuple write and read back"){ SAW_TEST("KelSimple String write and read back"){ using namespace saw; - data native; + data> native; data simple; std::string str = "FooBananaJoe"; @@ -348,14 +348,14 @@ SAW_TEST("Function basics"){ using namespace saw; { - data native; + data> native; native.get<0>().set(5); native.get<1>().set(40); - auto func_add = function_factory::create( - [](data req){ - data resp; + auto func_add = function_factory>::create( + [](data> req){ + data> resp; resp.set(req.get<0>().get() + req.get<1>().get()); @@ -374,36 +374,36 @@ SAW_TEST("Function basics"){ SAW_TEST("Interface basics"){ using namespace saw; - data native; + data> native; auto func_add = - [](data req){ - data resp; + [](data> req){ + data> resp; resp.set(req.get<0>().get() + req.get<1>().get()); return resp; }; auto func_sub = - [](data req){ - data resp; + [](data> req){ + data> resp; resp.set(req.get<0>().get() - req.get<1>().get()); return resp; }; - auto func_multiply = [](data req){ - data resp; + auto func_multiply = [](data> req){ + data> resp; resp.set(req.get<0>().get() * req.get<1>().get()); return resp; }; - auto iface = interface_factory::create(std::move(func_add), std::move(func_sub), std::move(func_multiply)); + auto iface = interface_factory>::create(std::move(func_add), std::move(func_sub), std::move(func_multiply)); { - data native; + data> native; native.get<0>().set(5); native.get<1>().set(40); @@ -414,7 +414,7 @@ SAW_TEST("Interface basics"){ SAW_EXPECT(val.get() == 45, "Sum is incorrect"); } { - data native; + data> native; native.get<0>().set(5); native.get<1>().set(40); @@ -425,7 +425,7 @@ SAW_TEST("Interface basics"){ SAW_EXPECT(val.get() == -35, "Sum is incorrect"); } { - data native; + data> native; native.get<0>().set(5); native.get<1>().set(40); diff --git a/modules/codec/tests/csv.cpp b/modules/codec/tests/csv.cpp index ac394ce..6e9b124 100644 --- a/modules/codec/tests/csv.cpp +++ b/modules/codec/tests/csv.cpp @@ -22,7 +22,7 @@ SAW_TEST("Codec Csv Encode Basic"){ using namespace saw; size_t n_size = 3; - data native_data{n_size}; + data > native_data{n_size}; { auto& row = native_data.at(0); row.template get<"string">().set("foo"); diff --git a/modules/core/SConstruct b/modules/core/SConstruct index 643550d..e831b26 100644 --- a/modules/core/SConstruct +++ b/modules/core/SConstruct @@ -44,6 +44,7 @@ env_vars.Add('prefix', ) env=Environment(ENV=os.environ, variables=env_vars, CPPPATH=[], + CXX=['c++'], CPPDEFINES=['SAW_UNIX'], CXXFLAGS=['-std=c++20','-g','-Wall','-Wextra'], LIBS=[]) diff --git a/modules/io-tls/SConstruct b/modules/io-tls/SConstruct index fbd8657..5101537 100644 --- a/modules/io-tls/SConstruct +++ b/modules/io-tls/SConstruct @@ -44,6 +44,7 @@ env_vars.Add('prefix', ) env=Environment(ENV=os.environ, variables=env_vars, CPPPATH=[], + CXX=['c++'], CPPDEFINES=['SAW_UNIX'], CXXFLAGS=['-std=c++20','-g','-Wall','-Wextra'], LIBS=['gnutls','forstio-io']) diff --git a/modules/io/SConstruct b/modules/io/SConstruct index 3eedb77..adf0df9 100644 --- a/modules/io/SConstruct +++ b/modules/io/SConstruct @@ -51,6 +51,7 @@ env_vars.Add( ); env=Environment(ENV=os.environ, variables=env_vars, CPPPATH=[], + CXX = ['c++'], CPPDEFINES=[ 'SAW_UNIX' ], diff --git a/modules/io_codec/SConstruct b/modules/io_codec/SConstruct index 7d0fb6f..b1ea13d 100644 --- a/modules/io_codec/SConstruct +++ b/modules/io_codec/SConstruct @@ -51,6 +51,7 @@ env_vars.Add('prefix', ); env=Environment(ENV=os.environ, variables=env_vars, CPPPATH=[], + CXX=['c++'], CPPDEFINES=['SAW_UNIX'], CXXFLAGS=['-std=c++20','-g','-Wall','-Wextra'], LIBS=[ -- cgit v1.2.3