diff options
author | Claudius "keldu" Holeksa <mail@keldu.de> | 2024-07-08 15:37:46 +0200 |
---|---|---|
committer | Claudius "keldu" Holeksa <mail@keldu.de> | 2024-07-08 15:37:46 +0200 |
commit | 2862cfcb86f857e4a75900974c3ee7c365edd6c0 (patch) | |
tree | d09f0fa2c1f15d5fd3c9cd0a3fee70ff87edcd01 /modules/tools | |
parent | 837bbd0896678d9345dce39b672eca699856c3f4 (diff) |
More cli fixing
Diffstat (limited to 'modules/tools')
-rw-r--r-- | modules/tools/c++/cli_analyzer.hpp | 32 |
1 files changed, 16 insertions, 16 deletions
diff --git a/modules/tools/c++/cli_analyzer.hpp b/modules/tools/c++/cli_analyzer.hpp index d74001c..885181e 100644 --- a/modules/tools/c++/cli_analyzer.hpp +++ b/modules/tools/c++/cli_analyzer.hpp @@ -17,7 +17,7 @@ struct cli_mode { struct list {}; }; -template<typename Schema, typename Encoding> +template<typename Schema, typename Encoding, typename Storage> struct cli_traverser { template<typename Traversal> static error_or<void> traverse(std::deque<std::string>& sch_path, data<Schema,Encoding>& enc_data, std::string& json_data){ @@ -25,7 +25,7 @@ struct cli_traverser { } }; -template<typename Schema, typename Encoding> +template<typename Schema, typename Encoding, typename Storage> struct cli_modifier { codec<Schema, encode::Json> json; static_assert( std::is_same_v<Encoding, encode::Native, storage::Default>, "Not supported" ); @@ -66,12 +66,12 @@ struct cli_modifier { } }; -template<typename Encoding> -struct cli_traverser<schema::String, Encoding> { +template<typename Encoding, typename Storage> +struct cli_traverser<schema::String, Encoding, Storage> { using Schema = schema::String; template<typename Traversal> - static error_or<void> traverse(std::deque<std::string>& sch_path, data<Schema,Encoding>& enc_data, std::string& json_data){ + static error_or<void> traverse(std::deque<std::string>& sch_path, data<Schema,Encoding,Storage>& enc_data, std::string& json_data){ if(not sch_path.empty()){ return make_error<err::invalid_state>("Schema path too long"); } @@ -88,8 +88,8 @@ struct cli_traverser<schema::String, Encoding> { }; -template<typename... T, typename Encoding> -struct cli_traverser<schema::Tuple<T...>, Encoding> { +template<typename... T, typename Encoding, typename Storage> +struct cli_traverser<schema::Tuple<T...>, Encoding, Storage> { using Schema = schema::Tuple<T...>; template<typename Traversal, size_t i> @@ -99,7 +99,7 @@ struct cli_traverser<schema::Tuple<T...>, Encoding> { std::string num_str = std::to_string(i); if( num_str == sch_path.front() ){ sch_path.pop_front(); - return cli_traverser<Type, Encoding>::template traverse<Traversal>(sch_path, enc_data.template get<i>(), json_data); + return cli_traverser<Type, Encoding, Storage>::template traverse<Traversal>(sch_path, enc_data.template get<i>(), json_data); } if ( (i+1) < sizeof...(T)){ @@ -112,18 +112,18 @@ struct cli_traverser<schema::Tuple<T...>, Encoding> { /** * Traverse the path until we hit the end of the provided path */ -template<typename... T, string_literal... Lits, typename Encoding> -struct cli_traverser<schema::Struct<schema::Member<T,Lits>...>, Encoding> { +template<typename... T, string_literal... Lits, typename Encoding, typename Storage> +struct cli_traverser<schema::Struct<schema::Member<T,Lits>...>, Encoding, Storage> { using Schema = schema::Struct<schema::Member<T,Lits>...>; template<typename Traversal, size_t i> - static error_or<void> traverse_member(std::deque<std::string>& sch_path, data<Schema,Encoding>& enc_data, std::string& json_data){ + static error_or<void> traverse_member(std::deque<std::string>& sch_path, data<Schema,Encoding, Storage>& enc_data, std::string& json_data){ using Type = typename parameter_pack_type<i,T...>::type; constexpr string_literal Literal = parameter_key_pack_type<i, Lits...>::literal; if ( Literal.view() == sch_path.front() ){ sch_path.pop_front(); - return cli_traverser<Type, Encoding>::template traverse<Traversal>(sch_path, enc_data.template get<Literal>(), json_data); + return cli_traverser<Type, Encoding, Storage>::template traverse<Traversal>(sch_path, enc_data.template get<Literal>(), json_data); } if constexpr ( (i+1) < sizeof...(T) ) { @@ -133,7 +133,7 @@ struct cli_traverser<schema::Struct<schema::Member<T,Lits>...>, Encoding> { } template<typename Traversal> - static error_or<void> traverse(std::deque<std::string>& sch_path, data<Schema,Encoding>& enc_data, std::string& json_data){ + static error_or<void> traverse(std::deque<std::string>& sch_path, data<Schema,Encoding, Storage>& enc_data, std::string& json_data){ /** * If our path is empty, then we have reached the desired destination. */ @@ -141,7 +141,7 @@ struct cli_traverser<schema::Struct<schema::Member<T,Lits>...>, Encoding> { /** * Decide during this step if we are reading or not */ - cli_modifier<Schema, Encoding> mod; + cli_modifier<Schema, Encoding, Storage> mod; if constexpr (std::is_same_v<Traversal, cli_mode::read>){ return mod.read(sch_path, enc_data, json_data); } else if constexpr (std::is_same_v<Traversal, cli_mode::write>) { @@ -167,7 +167,7 @@ struct parsed_args { std::deque<std::string> sch_path; }; -template<typename Schema, typename Encoding> +template<typename Schema, typename Encoding, typename Storage> error_or<void> modify_data_on_cli(const std::string_view& mode, const std::string_view& file_path, std::deque<std::string> sch_path, std::string& json_data){ /** * Read data from file @@ -184,7 +184,7 @@ error_or<void> modify_data_on_cli(const std::string_view& mode, const std::strin if(file_data.empty()){ return make_error<err::not_found>("File exists, but is empty."); } - data<Schema, Encoding> enc_data{std::string_view{file_data}}; + data<Schema, Encoding, Storage> enc_data{std::string_view{file_data}}; codec<Schema, Encoding> enc_codec; data<Schema> native_data; |