diff options
Diffstat (limited to 'modules')
-rw-r--r-- | modules/codec-json/c++/json.tmpl.hpp | 6 | ||||
-rw-r--r-- | modules/codec-json/tests/codec-json.cpp | 32 | ||||
-rw-r--r-- | modules/codec-netcdf/c++/netcdf.hpp | 10 | ||||
-rw-r--r-- | modules/codec-netcdf/tests/codec-netcdf.cpp | 8 | ||||
-rw-r--r-- | modules/codec/c++/data.hpp | 91 | ||||
-rw-r--r-- | modules/codec/c++/interface.hpp | 50 | ||||
-rw-r--r-- | modules/codec/tests/codec.cpp | 58 | ||||
-rw-r--r-- | modules/codec/tests/csv.cpp | 2 | ||||
-rw-r--r-- | modules/remote-sycl/c++/remote.hpp | 6 | ||||
-rw-r--r-- | modules/remote-sycl/examples/sycl_basic.cpp | 4 |
10 files changed, 132 insertions, 135 deletions
diff --git a/modules/codec-json/c++/json.tmpl.hpp b/modules/codec-json/c++/json.tmpl.hpp index 002d477..3e3a74b 100644 --- a/modules/codec-json/c++/json.tmpl.hpp +++ b/modules/codec-json/c++/json.tmpl.hpp @@ -773,7 +773,7 @@ struct json_decode<schema::Array<T,D>, ToDecode> { using Schema = schema::Array<T,D>; template<size_t Level> - static error_or<void> decode_flat_level(buffer_view& buff, std::vector<data<T, encode::Native<storage::Default>>>& to, std::array<std::size_t, D>& index, std::array<std::size_t, D>& dims, bool log_dim){ + static error_or<void> decode_flat_level(buffer_view& buff, std::vector<data<T, encode::Native, storage::Default>>& to, std::array<std::size_t, D>& index, std::array<std::size_t, D>& dims, bool log_dim){ if constexpr (Level == D) { json_helper::skip_whitespace(buff); try { @@ -830,7 +830,7 @@ struct json_decode<schema::Array<T,D>, ToDecode> { } template<std::size_t Level> - static error_or<void> decode_unflat_level(std::vector<data<T,encode::Native<storage::Default>>>& flat, data<schema::Array<T,D>, ToDecode>& to, std::array<std::size_t, D>& index, std::size_t& flat_index) { + static error_or<void> decode_unflat_level(std::vector<data<T,encode::Native, storage::Default>>& flat, data<schema::Array<T,D>, ToDecode>& to, std::array<std::size_t, D>& 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<schema::Array<T,D>, ToDecode> { std::array<std::size_t, D> index; std::array<std::size_t, D> dims; std::fill(dims.begin(), dims.end(), 0); - std::vector<data<T,encode::Native<storage::Default>>> flat_array; + std::vector<data<T,encode::Native, storage::Default>> 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 d6492d2..dd8df8a 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<schema::UInt8, encode::Native<storage::Default>> native_int; + data<schema::UInt8, encode::Native, storage::Default> native_int; data<schema::UInt8, encode::Json> json_int; native_int.set(121); @@ -48,7 +48,7 @@ SAW_TEST("UInt8 write"){ SAW_TEST("UInt16 write"){ using namespace saw; - data<schema::UInt16, encode::Native<storage::Default>> native_int; + data<schema::UInt16, encode::Native, storage::Default> native_int; data<schema::UInt16, encode::Json> json_int; native_int.set(24413); @@ -68,7 +68,7 @@ SAW_TEST("UInt16 write"){ SAW_TEST("UInt32 write"){ using namespace saw; - data<schema::UInt32, encode::Native<storage::Default>> native_int; + data<schema::UInt32, encode::Native, storage::Default> native_int; data<schema::UInt32, encode::Json> json_int; native_int.set(44123); @@ -88,7 +88,7 @@ SAW_TEST("UInt32 write"){ SAW_TEST("UInt64 write"){ using namespace saw; - data<schema::UInt64, encode::Native<storage::Default>> native_int; + data<schema::UInt64, encode::Native, storage::Default> native_int; data<schema::UInt64, encode::Json> json_int; native_int.set(243345543); @@ -108,7 +108,7 @@ SAW_TEST("UInt64 write"){ SAW_TEST("Int8 write"){ using namespace saw; - data<schema::Int8, encode::Native<storage::Default>> native_int; + data<schema::Int8, encode::Native, storage::Default> native_int; data<schema::Int8, encode::Json> json_int; native_int.set(-121); @@ -128,7 +128,7 @@ SAW_TEST("Int8 write"){ SAW_TEST("Int16 write"){ using namespace saw; - data<schema::Int16, encode::Native<storage::Default>> native_int; + data<schema::Int16, encode::Native, storage::Default> native_int; data<schema::Int16, encode::Json> json_int; native_int.set(-24413); @@ -148,7 +148,7 @@ SAW_TEST("Int16 write"){ SAW_TEST("Int32 write"){ using namespace saw; - data<schema::Int32, encode::Native<storage::Default>> native_int; + data<schema::Int32, encode::Native, storage::Default> native_int; data<schema::Int32, encode::Json> json_int; native_int.set(44123); @@ -168,7 +168,7 @@ SAW_TEST("Int32 write"){ SAW_TEST("Int64 write"){ using namespace saw; - data<schema::Int64, encode::Native<storage::Default>> native_int; + data<schema::Int64, encode::Native, storage::Default> native_int; data<schema::Int64, encode::Json> json_int; native_int.set(243345543); @@ -188,7 +188,7 @@ SAW_TEST("Int64 write"){ SAW_TEST("String write and read"){ using namespace saw; - data<schema::String, encode::Native<storage::Default>> nat_str; + data<schema::String, encode::Native, storage::Default> nat_str; data<schema::String, encode::Json> 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<schema::TestTuple, encode::Native<storage::Default>> native_tup; + data<schema::TestTuple, encode::Native, storage::Default> native_tup; data<schema::TestTuple, encode::Json> 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<schema::TestArray, encode::Native<storage::Default>> native{3u}; + data<schema::TestArray, encode::Native, storage::Default> native{3u}; data<schema::TestArray, encode::Json> 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<schema::TestMultiArray, encode::Native<storage::Default>> native{2,1,2}; + data<schema::TestMultiArray, encode::Native, storage::Default> native{2,1,2}; data<schema::TestMultiArray, encode::Json> 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<schema::TestStruct, encode::Native<storage::Default>> native; + data<schema::TestStruct, encode::Native, storage::Default> native; data<schema::TestStruct, encode::Json> json; native.get<"foo">().set(5); @@ -319,7 +319,7 @@ SAW_TEST("Struct read and write"){ SAW_TEST("Int8 read"){ using namespace saw; - data<schema::Int8, encode::Native<storage::Default>> native_int; + data<schema::Int8, encode::Native, storage::Default> native_int; data<schema::Int8, encode::Json> json_int{"43"}; codec<schema::Int8, encode::Json> json_codec; @@ -337,7 +337,7 @@ SAW_TEST("Int8 read"){ SAW_TEST("Int64 read"){ using namespace saw; - data<schema::Int64, encode::Native<storage::Default>> native_int; + data<schema::Int64, encode::Native, storage::Default> native_int; data<schema::Int64, encode::Json> json_int{"-453"}; codec<schema::Int64, encode::Json> json_codec; @@ -355,7 +355,7 @@ SAW_TEST("Int64 read"){ SAW_TEST("Tuple Pretty Encode and Decode"){ using namespace saw; - data<schema::TestTuple, encode::Native<storage::Default>> native_tup; + data<schema::TestTuple, encode::Native, storage::Default> native_tup; data<schema::TestTuple, encode::Json> json_tup; auto& nat_zero = native_tup.template get<0>(); diff --git a/modules/codec-netcdf/c++/netcdf.hpp b/modules/codec-netcdf/c++/netcdf.hpp index f93eceb..e89928d 100644 --- a/modules/codec-netcdf/c++/netcdf.hpp +++ b/modules/codec-netcdf/c++/netcdf.hpp @@ -19,7 +19,7 @@ struct Netcdf {}; * Class representing the files system netcdf file */ template<typename Schema> -class data<Schema, encode::Netcdf> { +class data<Schema, encode::Netcdf, storage::Default> { private: std::vector<uint8_t> buff_; public: @@ -44,7 +44,7 @@ public: }; template<typename Schema> -class codec<Schema, encode::Netcdf>{ +class codec<Schema, encode::Netcdf,storage::Default>{ static_assert(always_false<Schema,encode::Netcdf>, "NetCDF only supports Structs as a root object"); }; @@ -53,7 +53,7 @@ class codec<Schema, encode::Netcdf>{ namespace saw { template<typename... Vals, string_literal... Keys> -class codec<schema::Struct<schema::Member<Vals,Keys>...>, encode::Netcdf> { +class codec<schema::Struct<schema::Member<Vals,Keys>...>, encode::Netcdf, storage::Default> { private: using Schema = schema::Struct<schema::Member<Vals,Keys>...>; public: @@ -69,7 +69,7 @@ public: * Encoder function */ template<typename FromEncoding> - error_or<void> encode(const data<Schema, FromEncoding>& from, data<Schema,encode::Netcdf>& to) { + error_or<void> encode(const data<Schema, FromEncoding, storage::Default>& from, data<Schema,encode::Netcdf, storage::Default>& to) { int rc{}; int ncid{}; @@ -131,7 +131,7 @@ public: * Decoder function */ template<typename ToEncoding> - error_or<void> decode(data<Schema, encode::Netcdf>& from_decode, data<Schema,ToEncoding>& to_decode) { + error_or<void> decode(data<Schema, encode::Netcdf, storage::Default>& from_decode, data<Schema,ToEncoding,storage::Default>& to_decode) { int ncid{}; int rc{}; diff --git a/modules/codec-netcdf/tests/codec-netcdf.cpp b/modules/codec-netcdf/tests/codec-netcdf.cpp index 0c9bc57..a47294f 100644 --- a/modules/codec-netcdf/tests/codec-netcdf.cpp +++ b/modules/codec-netcdf/tests/codec-netcdf.cpp @@ -46,7 +46,7 @@ std::array<uint8_t,156> tests_data_array_nc = { SAW_TEST("NetCDF Struct Primitive write"){ using namespace saw; - data<schema::TestStruct, encode::Native<storage::Default>> native; + data<schema::TestStruct, encode::Native, storage::Default> native; native.template get<"data">().set(5); native.template get<"other">().set(32.0); @@ -69,7 +69,7 @@ SAW_TEST("NetCDF Struct Primitive read"){ using namespace saw; data<schema::TestStruct, encode::Netcdf> netcdf{tests_data_primitive_nc}; - data<schema::TestStruct, encode::Native<storage::Default>> native; + data<schema::TestStruct, encode::Native, storage::Default> native; codec<schema::TestStruct, encode::Netcdf> codec; @@ -84,13 +84,13 @@ SAW_TEST("NetCDF Struct Array read"){ data<schema::TestArrayStruct, encode::Netcdf> netcdf{tests_data_array_nc}; - data<schema::TestArrayStruct, encode::Native<storage::Default>> native; + data<schema::TestArrayStruct, encode::Native, storage::Default> native; codec<schema::TestArrayStruct, encode::Netcdf> codec; auto eov = codec.decode(netcdf, native); SAW_EXPECT(eov.is_value(), "Decoding failed"); - auto& arr = native.get<"data">(); + auto& arr = native.template get<"data">(); SAW_EXPECT(arr.get_dim_size(0) == 5, "Incorrect dimension 0"); SAW_EXPECT(arr.get_dim_size(1) == 3, "Incorrect dimension 1"); diff --git a/modules/codec/c++/data.hpp b/modules/codec/c++/data.hpp index 2a5f082..79f5264 100644 --- a/modules/codec/c++/data.hpp +++ b/modules/codec/c++/data.hpp @@ -20,10 +20,9 @@ struct Default {}; } namespace encode { -template<typename Storage = storage::Default> struct Native {}; } -template<typename Schema, typename Encode> +template<typename Schema, typename Encode, typename Storage = storage::Default> class codec; /* * Helper for the basic message container, so the class doesn't have to be @@ -81,14 +80,14 @@ struct native_data_type<schema::Primitive<schema::FloatingPoint, 8>> { using type = double; }; -template<typename T, typename Encoding = encode::Native<storage::Default>> +template<typename T, typename Encoding = encode::Native, typename Storage = storage::Default> class data { private: static_assert(always_false<T>, "Type not supported"); }; -template<typename T, size_t N, typename Platform> -class data<schema::Primitive<T,N>, encode::Native<Platform>> { +template<typename T, size_t N> +class data<schema::Primitive<T,N>, encode::Native, storage::Default> { private: typename native_data_type<schema::Primitive<T,N>>::type value_; public: @@ -106,19 +105,19 @@ public: typename native_data_type<schema::Primitive<T,N>>::type get() const {return value_;} - data<schema::Primitive<T,N>, encode::Native<Platform>> operator*(const data<schema::Primitive<T,N>, encode::Native<Platform>>& rhs)const{ + data<schema::Primitive<T,N>, encode::Native, storage::Default> operator*(const data<schema::Primitive<T,N>, encode::Native, storage::Default>& rhs)const{ return {get() * rhs.get()}; } - data<schema::Primitive<T,N>, encode::Native<Platform>> operator/(const data<schema::Primitive<T,N>, encode::Native<Platform>>& rhs)const{ + data<schema::Primitive<T,N>, encode::Native, storage::Default> operator/(const data<schema::Primitive<T,N>, encode::Native, storage::Default>& rhs)const{ return {get() / rhs.get()}; } - data<schema::Primitive<T,N>, encode::Native<Platform>> operator+(const data<schema::Primitive<T,N>, encode::Native<Platform>>& rhs)const{ + data<schema::Primitive<T,N>, encode::Native, storage::Default> operator+(const data<schema::Primitive<T,N>, encode::Native, storage::Default>& rhs)const{ return {get() + rhs.get()}; } - data<schema::Primitive<T,N>, encode::Native<Platform>> operator-(const data<schema::Primitive<T,N>, encode::Native<Platform>>& rhs)const{ + data<schema::Primitive<T,N>, encode::Native, storage::Default> operator-(const data<schema::Primitive<T,N>, encode::Native, storage::Default>& rhs)const{ return {get() - rhs.get()}; } @@ -136,7 +135,7 @@ public: * Casts */ template<typename Target> - data<Target, encode::Native<Platform>> cast_to(){ + data<Target, encode::Native, storage::Default> cast_to(){ auto raw_to = static_cast<typename saw::native_data_type<Target>::type>(value_); return {raw_to}; } @@ -145,12 +144,12 @@ public: /** * Mixed precision class for native formats */ -template<typename TA, uint64_t NA, typename TB, uint64_t NB, typename Platform> -class data<schema::MixedPrecision<schema::Primitive<TA,NA>, schema::Primitive<TB,NB>>, encode::Native<Platform>>{ +template<typename TA, uint64_t NA, typename TB, uint64_t NB> +class data<schema::MixedPrecision<schema::Primitive<TA,NA>, schema::Primitive<TB,NB>>, encode::Native, storage::Default>{ public: using Schema = schema::MixedPrecision<schema::Primitive<TA,NA>, schema::Primitive<TB,NB>>; private: - data<typename Schema::StorageSchema, encode::Native<Platform>> value_; + data<typename Schema::StorageSchema, encode::Native, storage::Default> value_; public: data():value_{}{} @@ -169,9 +168,9 @@ public: * Union type for native data classes */ template<typename... T, string_literal... literals> -class data<schema::Union<schema::Member<T, literals>...>, encode::Native<storage::Default>> { +class data<schema::Union<schema::Member<T, literals>...>, encode::Native, storage::Default> { private: - std::variant<data<T,encode::Native<storage::Default>>...> value_; + std::variant<data<T,encode::Native, storage::Default>...> value_; public: data() = default; @@ -179,12 +178,12 @@ public: SAW_DEFAULT_MOVE(data); template<string_literal lit> - void set(data<typename parameter_pack_type<parameter_key_pack_index<lit, literals...>::value, T...>::type, encode::Native<storage::Default>> val){ + void set(data<typename parameter_pack_type<parameter_key_pack_index<lit, literals...>::value, T...>::type, encode::Native, storage::Default> val){ value_ = std::move(val); } template<string_literal lit> - data<typename parameter_pack_type<parameter_key_pack_index<lit, literals...>::value, T...>::type, encode::Native<storage::Default>>& init(){ + data<typename parameter_pack_type<parameter_key_pack_index<lit, literals...>::value, T...>::type, encode::Native, storage::Default>& init(){ value_.template emplace<parameter_key_pack_index<lit, literals...>::value>(); return get<lit>(); } @@ -195,12 +194,12 @@ public: } template<string_literal lit> - data<typename parameter_pack_type<parameter_key_pack_index<lit, literals...>::value, T...>::type, encode::Native<storage::Default>>& get(){ + data<typename parameter_pack_type<parameter_key_pack_index<lit, literals...>::value, T...>::type, encode::Native, storage::Default>& get(){ return std::get<parameter_key_pack_index<lit, literals...>::value>(value_); } template<string_literal lit> - const data<typename parameter_pack_type<parameter_key_pack_index<lit, literals...>::value, T...>::type, encode::Native<storage::Default>>& get() const{ + const data<typename parameter_pack_type<parameter_key_pack_index<lit, literals...>::value, T...>::type, encode::Native, storage::Default>& get() const{ return std::get<parameter_key_pack_index<lit, literals...>::value>(value_); } }; @@ -209,12 +208,12 @@ public: * Data class which represents a struct in the native format. */ template<typename... T, string_literal... literals> -class data<schema::Struct<schema::Member<T, literals>...>, encode::Native<storage::Default>> { +class data<schema::Struct<schema::Member<T, literals>...>, encode::Native, storage::Default> { private: /** * Tuple storing the member values. */ - std::tuple<data<T,encode::Native<storage::Default>>...> value_; + std::tuple<data<T,encode::Native, storage::Default>...> value_; public: /** * Default constructor. @@ -233,7 +232,7 @@ public: literal, literals... >::value , T...>::type - , encode::Native<storage::Default>>& get(){ + , encode::Native, storage::Default>& get(){ return std::get<parameter_key_pack_index<literal, literals...>::value>(value_); } @@ -247,7 +246,7 @@ public: literal, literals... >::value , T...>::type - , encode::Native<storage::Default>>& get() const { + , encode::Native, storage::Default>& get() const { return std::get<parameter_key_pack_index<literal, literals...>::value>(value_); } @@ -260,21 +259,21 @@ public: }; template<typename... T> -class data<schema::Tuple<T...>, encode::Native<storage::Default>> { +class data<schema::Tuple<T...>, encode::Native, storage::Default> { private: - std::tuple<data<T,encode::Native<storage::Default>>...> value_; + std::tuple<data<T,encode::Native, storage::Default>...> value_; public: data() = default; SAW_DEFAULT_COPY(data); SAW_DEFAULT_MOVE(data); template<size_t i> - data<typename parameter_pack_type<i,T...>::type, encode::Native<storage::Default>>& get(){ + data<typename parameter_pack_type<i,T...>::type, encode::Native, storage::Default>& get(){ return std::get<i>(value_); } template<size_t i> - const data<typename parameter_pack_type<i,T...>::type, encode::Native<storage::Default>>& get() const{ + const data<typename parameter_pack_type<i,T...>::type, encode::Native, storage::Default>& get() const{ return std::get<i>(value_); } @@ -284,11 +283,11 @@ public: }; template<typename T, size_t Dim> -class data<schema::Array<T,Dim>, encode::Native<storage::Default>> { +class data<schema::Array<T,Dim>, encode::Native, storage::Default> { private: // data<schema::FixedArray<schema::UInt64, Dim>> dims_; std::array<uint64_t, Dim> dims_; - std::vector<data<T, encode::Native<storage::Default>>> value_; + std::vector<data<T, encode::Native, storage::Default>> value_; uint64_t get_full_size() const { uint64_t s = 1; @@ -320,7 +319,7 @@ class data<schema::Array<T,Dim>, encode::Native<storage::Default>> { } template<size_t i = 0> - error_or<void> add(saw::data<T,encode::Native<storage::Default>> data){ + error_or<void> add(saw::data<T,encode::Native, storage::Default> 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. @@ -355,29 +354,29 @@ class data<schema::Array<T,Dim>, encode::Native<storage::Default>> { static_assert(sizeof...(Dims)==Dim, "Argument size must be equal to the Dimension"); } - data<T, encode::Native<storage::Default>>& at(const std::array<uint64_t, Dim>& ind){ + data<T, encode::Native, storage::Default>& at(const std::array<uint64_t, Dim>& ind){ return value_.at(this->get_flat_index(ind)); } - const data<T, encode::Native<storage::Default>>& at(const std::array<uint64_t, Dim>& ind) const { + const data<T, encode::Native, storage::Default>& at(const std::array<uint64_t, Dim>& ind) const { return value_.at(this->get_flat_index(ind)); } template<std::integral... Dims> - data<T, encode::Native<storage::Default>>& at(Dims... i){ + data<T, encode::Native, storage::Default>& at(Dims... i){ return value_.at(this->get_flat_index(std::array<uint64_t, Dim>{static_cast<uint64_t>(i)...})); } template<std::integral... Dims> - const data<T, encode::Native<storage::Default>>& at(Dims... i) const { + const data<T, encode::Native, storage::Default>& at(Dims... i) const { return value_.at(this->get_flat_index(std::array<uint64_t, Dim>{static_cast<uint64_t>(i)...})); } - data<T,encode::Native<storage::Default>>& at(const data<schema::FixedArray<schema::UInt64,Dim>>& i){ + data<T,encode::Native, storage::Default>& at(const data<schema::FixedArray<schema::UInt64,Dim>>& i){ return value_.at(this->get_flat_index(i)); } - const data<T,encode::Native<storage::Default>>& at(const data<schema::FixedArray<schema::UInt64,Dim>>& i)const{ + const data<T,encode::Native, storage::Default>& at(const data<schema::FixedArray<schema::UInt64,Dim>>& i)const{ return value_.at(this->get_flat_index(i)); } @@ -425,39 +424,39 @@ private: }; template<typename T, uint64_t... D> -class data<schema::FixedArray<T,D...>, encode::Native<storage::Default>> { +class data<schema::FixedArray<T,D...>, encode::Native, storage::Default> { private: - //using inner_type = std::array<data<T, encode::Native<storage::Default>>, multiply_helper<Dims...>::value>; + //using inner_type = std::array<data<T, encode::Native, storage::Default>, multiply_helper<Dims...>::value>; //std::unique_ptr<inner_type> value_; - using ArrayT = std::array<data<T, encode::Native<storage::Default>>, ct_multiply<uint64_t, D...>::value>; + using ArrayT = std::array<data<T, encode::Native, storage::Default>, ct_multiply<uint64_t, D...>::value>; ArrayT value_; public: data() = default; - data<T, encode::Native<storage::Default>>& at(const std::array<uint64_t, sizeof...(D)>& ind){ + data<T, encode::Native, storage::Default>& at(const std::array<uint64_t, sizeof...(D)>& ind){ return value_.at(this->get_flat_index(ind)); } - const data<T, encode::Native<storage::Default>>& at(const std::array<uint64_t, sizeof...(D)>& ind) const { + const data<T, encode::Native, storage::Default>& at(const std::array<uint64_t, sizeof...(D)>& ind) const { return value_.at(this->get_flat_index(ind)); } template<std::integral... Dims> - data<T, encode::Native<storage::Default>>& at(Dims... i) { + data<T, encode::Native, storage::Default>& at(Dims... i) { return value_.at(this->get_flat_index({i...})); } template<std::integral... Dims> - const data<T, encode::Native<storage::Default>>& at(Dims... i) const { + const data<T, encode::Native, storage::Default>& at(Dims... i) const { return value_.at(this->get_flat_index({i...})); } - data<T, encode::Native<storage::Default>>& at(const data<schema::FixedArray<schema::UInt64, sizeof...(D)>>& i){ + data<T, encode::Native, storage::Default>& at(const data<schema::FixedArray<schema::UInt64, sizeof...(D)>>& i){ return value_.at(this->get_flat_index(i)); } - const data<T, encode::Native<storage::Default>>& at(const data<schema::FixedArray<schema::UInt64, sizeof...(D)>>& i)const{ + const data<T, encode::Native, storage::Default>& at(const data<schema::FixedArray<schema::UInt64, sizeof...(D)>>& i)const{ return value_.at(this->get_flat_index(i)); } @@ -491,7 +490,7 @@ private: * Data type representing string. */ template<> -class data<schema::String, encode::Native<storage::Default>> { +class data<schema::String, encode::Native, storage::Default> { private: /** * The native way to represent strings. diff --git a/modules/codec/c++/interface.hpp b/modules/codec/c++/interface.hpp index 8c6808b..d55b415 100644 --- a/modules/codec/c++/interface.hpp +++ b/modules/codec/c++/interface.hpp @@ -8,32 +8,32 @@ #include "data.hpp" namespace saw { -template<typename SchemaFunc, typename Encode, typename Context = void_t > +template<typename SchemaFunc, typename Encode, typename Storage, typename Context = void_t > class function; namespace impl { -template<typename Request, typename Response, typename Encode, typename Ctx> +template<typename Request, typename Response, typename Encode, typename Storage, typename Ctx> struct FuncTypeHelper { - using Type = std::function<data<Response, Encode>(data<Request, Encode>, Ctx)>; + using Type = std::function<data<Response, Encode, Storage>(data<Request, Encode, Storage>, Ctx)>; }; -template<typename Request, typename Response, typename Encode> -struct FuncTypeHelper<Request, Response, Encode, void_t> { - using Type = std::function<data<Response, Encode>(data<Request, Encode>)>; +template<typename Request, typename Response, typename Encode, typename Storage> +struct FuncTypeHelper<Request, Response, Encode, Storage, void_t> { + using Type = std::function<data<Response, Encode, Storage>(data<Request, Encode, Storage>)>; }; } -template<typename Request, typename Response, typename Encode, typename Context> -class function<schema::Function<Request, Response>, Encode, Context> { +template<typename Request, typename Response, typename Encode, typename Storage, typename Context> +class function<schema::Function<Request, Response>, Encode, Storage, Context> { private: - typename impl::FuncTypeHelper<Request, Response, Encode, Context>::Type func_; + typename impl::FuncTypeHelper<Request, Response, Encode, Storage, Context>::Type func_; public: template<typename Func> function(Func func): func_{std::move(func)} {} - error_or<data<Response, Encode>> call(data<Request, Encode> req, Context ctx = {}){ + error_or<data<Response, Encode, Storage>> call(data<Request, Encode, Storage> req, Context ctx = {}){ if constexpr (std::is_same_v<Context, void_t>){ (void) ctx; return func_(std::move(req)); @@ -43,17 +43,17 @@ public: } }; -template<typename T, typename Encode, typename Context = void_t > +template<typename T, typename Encode, typename Storage = storage::Default, typename Context = void_t > class interface; -template<typename... Requests, typename... Responses, string_literal... Names, typename Encode, typename Context> -class interface<schema::Interface<schema::Member<schema::Function<Requests, Responses>, Names>...>, Encode, Context> { +template<typename... Requests, typename... Responses, string_literal... Names, typename Encode, typename Storage, typename Context> +class interface<schema::Interface<schema::Member<schema::Function<Requests, Responses>, Names>...>, Encode, Storage, Context> { public: using Schema = schema::Interface<schema::Member<schema::Function<Requests, Responses>,Names>...>; private: - std::tuple<function<schema::Function<Requests, Responses>, Encode, Context>...> funcs_; + std::tuple<function<schema::Function<Requests, Responses>, Encode, Storage, Context>...> funcs_; public: - interface(function<schema::Function<Requests, Responses>, Encode, Context>... funcs): + interface(function<schema::Function<Requests, Responses>, Encode, Storage, Context>... funcs): funcs_{std::move(funcs)...} {} @@ -75,8 +75,8 @@ public: >::value , Responses...>::type > - , - Encode + , Encode + , Storage , Context >& get(){ return std::get<parameter_key_pack_index<Lit, Names...>::value>(funcs_); @@ -90,14 +90,14 @@ public: Lit, Names... >::value , Responses...>::type - , Encode>> call( + , Encode, Storage>> call( data< typename parameter_pack_type< parameter_key_pack_index< Lit, Names... >::value , Requests...>::type - , Encode> req, + , Encode, Storage> req, Context ctx = {} ){ if constexpr (std::is_same_v<Context, void_t>) { @@ -109,19 +109,19 @@ public: } }; -template<typename T, typename Encode, typename Context = void_t> +template<typename T, typename Encode, typename Storage = storage::Default, typename Context = void_t> struct function_factory { template<typename Func> - static function<T,Encode, Context> create(Func func){ - return function<T,Encode,Context> {std::move(func)}; + static function<T,Encode, Storage, Context> create(Func func){ + return function<T,Encode, Storage, Context> {std::move(func)}; } }; -template<typename T, typename Encode, typename Context = void_t> +template<typename T, typename Encode, typename Storage = storage::Default, typename Context = void_t> struct interface_factory { template<typename... Func> - static interface<T,Encode,Context> create(Func... func){ - return interface<T,Encode,Context>{std::move(func)...}; + static interface<T,Encode,Storage,Context> create(Func... func){ + return interface<T,Encode,Storage,Context>{std::move(func)...}; } }; } diff --git a/modules/codec/tests/codec.cpp b/modules/codec/tests/codec.cpp index e8a2fb3..10d9d0c 100644 --- a/modules/codec/tests/codec.cpp +++ b/modules/codec/tests/codec.cpp @@ -51,7 +51,7 @@ using TestInterface = Interface< SAW_TEST("One Dimensional Array") { using namespace saw; - data<schema::OneDimArray, encode::Native<storage::Default>> arr{500u}; + data<schema::OneDimArray, encode::Native, storage::Default> arr{500u}; int bar = 0; @@ -70,7 +70,7 @@ SAW_TEST("One Dimensional Array") { SAW_TEST("One dim Array Default init"){ using namespace saw; - data<schema::OneDimArray, encode::Native<storage::Default>> arr; + data<schema::OneDimArray, encode::Native, storage::Default> 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"); @@ -79,7 +79,7 @@ SAW_TEST("One dim Array Default init"){ SAW_TEST("One dimensional Array Add"){ using namespace saw; - data<schema::OneDimArray, encode::Native<storage::Default>> arr{5u}; + data<schema::OneDimArray, encode::Native, storage::Default> arr{5u}; int bar = 0; @@ -96,7 +96,7 @@ SAW_TEST("One dimensional Array Add"){ SAW_TEST("Two Dimensional Array") { using namespace saw; - data<schema::TwoDimArray, encode::Native<storage::Default>> arr{10,30u}; + data<schema::TwoDimArray, encode::Native, storage::Default> arr{10,30u}; int expected_sum = (300 * 301) / 2; @@ -120,7 +120,7 @@ SAW_TEST("Two Dimensional Array") { SAW_TEST("Three Dimensional Array") { using namespace saw; - data<schema::ThreeDimArray, encode::Native<storage::Default>> arr{10,10u,3}; + data<schema::ThreeDimArray, encode::Native, storage::Default> arr{10,10u,3}; int expected_sum = (300 * 301) / 2; int bar = 0; @@ -146,7 +146,7 @@ SAW_TEST("Three Dimensional Array") { SAW_TEST("KelSimple UInt16 write"){ using namespace saw; - data<schema::UInt16, encode::Native<storage::Default>> native; + data<schema::UInt16, encode::Native, storage::Default> native; data<schema::UInt16, encode::KelSimple> simple; codec<schema::UInt16, encode::KelSimple> codec; @@ -169,7 +169,7 @@ SAW_TEST("KelSimple UInt16 write"){ SAW_TEST("KelSimple UInt32 write"){ using namespace saw; - data<schema::UInt32, encode::Native<storage::Default>> native; + data<schema::UInt32, encode::Native, storage::Default> native; data<schema::UInt32, encode::KelSimple> simple; codec<schema::UInt32, encode::KelSimple> codec; @@ -192,7 +192,7 @@ SAW_TEST("KelSimple UInt32 write"){ SAW_TEST("KelSimple Array write and read back"){ using namespace saw; - data<schema::TwoDimArray, encode::Native<storage::Default>> native{2,3}; + data<schema::TwoDimArray, encode::Native, storage::Default> native{2,3}; data<schema::TwoDimArray, encode::KelSimple> simple; codec<schema::TwoDimArray, encode::KelSimple> codec; @@ -225,7 +225,7 @@ SAW_TEST("KelSimple Array write and read back"){ SAW_TEST("KelSimple Struct write and read back"){ using namespace saw; - data<schema::TestStruct,encode::Native<storage::Default>> native; + data<schema::TestStruct,encode::Native, storage::Default> native; data<schema::TestStruct,encode::KelSimple> simple; auto& tda = native.template get<"two_dim_array">(); @@ -256,7 +256,7 @@ SAW_TEST("KelSimple Struct write and read back"){ SAW_TEST("Native Union same type compilation"){ using namespace saw; - data<schema::TestSameTypeUnion, encode::Native<storage::Default>> native; + data<schema::TestSameTypeUnion, encode::Native, storage::Default> native; native.template init<"two">().set(50u); @@ -269,10 +269,10 @@ SAW_TEST("Native Union same type compilation"){ SAW_TEST("KelSimple Union write and read back"){ using namespace saw; - data<schema::TestUnion,encode::Native<storage::Default>> native; + data<schema::TestUnion,encode::Native, storage::Default> native; data<schema::TestUnion,encode::KelSimple> simple; - native.template set<"number">(data<schema::UInt64, encode::Native<storage::Default>>{}); + native.template set<"number">(data<schema::UInt64, encode::Native, storage::Default>{}); native.template get<"number">().set(410); codec<schema::TestUnion, encode::KelSimple> codec; @@ -293,7 +293,7 @@ SAW_TEST("KelSimple Union write and read back"){ SAW_TEST("KelSimple Tuple write and read back"){ using namespace saw; - data<schema::TestTuple,encode::Native<storage::Default>> native; + data<schema::TestTuple,encode::Native, storage::Default> native; data<schema::TestTuple,encode::KelSimple> simple; auto& tda = native.template get<0>(); @@ -324,7 +324,7 @@ SAW_TEST("KelSimple Tuple write and read back"){ SAW_TEST("KelSimple String write and read back"){ using namespace saw; - data<schema::String,encode::Native<storage::Default>> native; + data<schema::String,encode::Native, storage::Default> native; data<schema::String,encode::KelSimple> simple; std::string str = "FooBananaJoe"; @@ -349,14 +349,14 @@ SAW_TEST("Function basics"){ using namespace saw; { - data<schema::TestInt32Pair, encode::Native<storage::Default>> native; + data<schema::TestInt32Pair, encode::Native, storage::Default> native; native.get<0>().set(5); native.get<1>().set(40); - auto func_add = function_factory<schema::TestCalcFunction, encode::Native<storage::Default>>::create( - [](data<schema::TestInt32Pair, encode::Native<storage::Default>> req){ - data<schema::Int32, encode::Native<storage::Default>> resp; + auto func_add = function_factory<schema::TestCalcFunction, encode::Native, storage::Default>::create( + [](data<schema::TestInt32Pair, encode::Native, storage::Default> req){ + data<schema::Int32, encode::Native, storage::Default> resp; resp.set(req.get<0>().get() + req.get<1>().get()); @@ -375,36 +375,36 @@ SAW_TEST("Function basics"){ SAW_TEST("Interface basics"){ using namespace saw; - data<schema::TestInt32Pair, encode::Native<storage::Default>> native; + data<schema::TestInt32Pair, encode::Native, storage::Default> native; auto func_add = - [](data<schema::TestInt32Pair, encode::Native<storage::Default>> req){ - data<schema::Int32, encode::Native<storage::Default>> resp; + [](data<schema::TestInt32Pair, encode::Native, storage::Default> req){ + data<schema::Int32, encode::Native, storage::Default> resp; resp.set(req.get<0>().get() + req.get<1>().get()); return resp; }; auto func_sub = - [](data<schema::TestInt32Pair, encode::Native<storage::Default>> req){ - data<schema::Int32, encode::Native<storage::Default>> resp; + [](data<schema::TestInt32Pair, encode::Native, storage::Default> req){ + data<schema::Int32, encode::Native, storage::Default> resp; resp.set(req.get<0>().get() - req.get<1>().get()); return resp; }; - auto func_multiply = [](data<schema::TestInt32Pair, encode::Native<storage::Default>> req){ - data<schema::Int32, encode::Native<storage::Default>> resp; + auto func_multiply = [](data<schema::TestInt32Pair, encode::Native, storage::Default> req){ + data<schema::Int32, encode::Native, storage::Default> resp; resp.set(req.get<0>().get() * req.get<1>().get()); return resp; }; - auto iface = interface_factory<schema::TestInterface, encode::Native<storage::Default>>::create(std::move(func_add), std::move(func_sub), std::move(func_multiply)); + auto iface = interface_factory<schema::TestInterface, encode::Native, storage::Default>::create(std::move(func_add), std::move(func_sub), std::move(func_multiply)); { - data<schema::TestInt32Pair, encode::Native<storage::Default>> native; + data<schema::TestInt32Pair, encode::Native, storage::Default> native; native.get<0>().set(5); native.get<1>().set(40); @@ -415,7 +415,7 @@ SAW_TEST("Interface basics"){ SAW_EXPECT(val.get() == 45, "Sum is incorrect"); } { - data<schema::TestInt32Pair, encode::Native<storage::Default>> native; + data<schema::TestInt32Pair, encode::Native, storage::Default> native; native.get<0>().set(5); native.get<1>().set(40); @@ -426,7 +426,7 @@ SAW_TEST("Interface basics"){ SAW_EXPECT(val.get() == -35, "Sum is incorrect"); } { - data<schema::TestInt32Pair, encode::Native<storage::Default>> native; + data<schema::TestInt32Pair, encode::Native, storage::Default> 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 04813c5..638b864 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 <TestArray, encode::Native<storage::Default>> native_data{n_size}; + data <TestArray, encode::Native, storage::Default> native_data{n_size}; { auto& row = native_data.at(0); row.template get<"string">().set("foo"); diff --git a/modules/remote-sycl/c++/remote.hpp b/modules/remote-sycl/c++/remote.hpp index d311ca5..d956314 100644 --- a/modules/remote-sycl/c++/remote.hpp +++ b/modules/remote-sycl/c++/remote.hpp @@ -190,14 +190,12 @@ public: /** * Rpc call */ - template<string_literal Name> + template<string_literal Name, typename ClientAllocation> error_or< id< typename schema_member_type<Name, Iface>::type::ResponseT > - > call(data_or_id<typename schema_member_type<Name, Iface>::type::RequestT, Encoding> input){ - - + > call(data_or_id<typename schema_member_type<Name, Iface>::type::RequestT, ClientAllocation> input){ /** * First check if it's data or an id. diff --git a/modules/remote-sycl/examples/sycl_basic.cpp b/modules/remote-sycl/examples/sycl_basic.cpp index 3f92cdb..41aa2a1 100644 --- a/modules/remote-sycl/examples/sycl_basic.cpp +++ b/modules/remote-sycl/examples/sycl_basic.cpp @@ -21,9 +21,9 @@ int main(){ auto rpc_server = listen_basic_sycl(remote_ctx, *rmt_addr); - saw::id<schema::UInt64> next_id{0u}; + saw::id<schema::Array<schema::UInt64>> next_id{0u}; { - auto eov = rpc_server.template call<"increment">(saw::data<schema::UInt64, saw::encode::Native<saw::rmt::Sycl>>{1u}); + auto eov = rpc_server.template call<"increment">(saw::data<schema::Array<schema::UInt64>, saw::encode::Native<saw::rmt::Sycl>>{1u}); if(eov.is_error()){ auto& err = eov.get_error(); std::cerr<<"Error: "<<err.get_category()<<" : "<<err.get_message()<<std::endl; |