summaryrefslogtreecommitdiff
path: root/modules
diff options
context:
space:
mode:
authorClaudius "keldu" Holeksa <mail@keldu.de>2024-06-12 15:04:42 +0200
committerClaudius "keldu" Holeksa <mail@keldu.de>2024-06-12 15:04:42 +0200
commite4e49a117702945066e3e279fa0f005200400cb7 (patch)
tree3e9bab0804083461c9ef0732a47abba1fb8a9fdf /modules
parent6831edddd22d2d8dbb73c88fb612c0bdd5b8ba19 (diff)
Separated Encoding and Storage approaches
Diffstat (limited to 'modules')
-rw-r--r--modules/codec-json/c++/json.tmpl.hpp6
-rw-r--r--modules/codec-json/tests/codec-json.cpp32
-rw-r--r--modules/codec-netcdf/c++/netcdf.hpp10
-rw-r--r--modules/codec-netcdf/tests/codec-netcdf.cpp8
-rw-r--r--modules/codec/c++/data.hpp91
-rw-r--r--modules/codec/c++/interface.hpp50
-rw-r--r--modules/codec/tests/codec.cpp58
-rw-r--r--modules/codec/tests/csv.cpp2
-rw-r--r--modules/remote-sycl/c++/remote.hpp6
-rw-r--r--modules/remote-sycl/examples/sycl_basic.cpp4
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;