diff options
Diffstat (limited to 'modules/codec/c++/args.hpp')
| -rw-r--r-- | modules/codec/c++/args.hpp | 19 |
1 files changed, 19 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; +} } |
