summaryrefslogtreecommitdiff
path: root/modules/codec/c++
diff options
context:
space:
mode:
Diffstat (limited to 'modules/codec/c++')
-rw-r--r--modules/codec/c++/args.hpp19
-rw-r--r--modules/codec/c++/schema.hpp12
2 files changed, 31 insertions, 0 deletions
diff --git a/modules/codec/c++/args.hpp b/modules/codec/c++/args.hpp
index 0253417..66acd97 100644
--- a/modules/codec/c++/args.hpp
+++ b/modules/codec/c++/args.hpp
@@ -199,4 +199,23 @@ public:
return eov;
}
};
+
+/**
+ * Helper function to reduce boilerplate
+ */
+template<typename ArgSch>
+error_or<data<ArgSch>> parse_args(int argc, char** argv){
+ data<ArgSch> dec_dat;
+
+ {
+ data<ArgSch,encode::Args> arg_dat{argc,argv};
+ codec<ArgSch,encode::Args> arg_cod;
+ auto eov = arg_cod.decode(arg_dat,dec_dat);
+ if(eov.is_error()){
+ return std::move(eov.get_error());
+ }
+ }
+
+ return dec_dat;
+}
}
diff --git a/modules/codec/c++/schema.hpp b/modules/codec/c++/schema.hpp
index 018cb41..340b122 100644
--- a/modules/codec/c++/schema.hpp
+++ b/modules/codec/c++/schema.hpp
@@ -178,6 +178,18 @@ struct MixedPrecision {
static_assert(is_primitive<PrimA>::value, "InterfaceSchema needs to be a Primitive");
static_assert(is_primitive<PrimB>::value, "StorageSchema needs to be a Primitive");
};
+/**
+ * Classes enabling IdMap stuff
+ */
+template<typename T>
+struct Id {
+ using Schema = Id;
+};
+
+template<typename T>
+struct IdMap {
+ using Schema = IdMap<T>;
+};
/**
* Classes enabling Rpc calls