summaryrefslogtreecommitdiff
path: root/modules/tools
diff options
context:
space:
mode:
authorClaudius "keldu" Holeksa <mail@keldu.de>2024-07-08 15:37:46 +0200
committerClaudius "keldu" Holeksa <mail@keldu.de>2024-07-08 15:37:46 +0200
commit2862cfcb86f857e4a75900974c3ee7c365edd6c0 (patch)
treed09f0fa2c1f15d5fd3c9cd0a3fee70ff87edcd01 /modules/tools
parent837bbd0896678d9345dce39b672eca699856c3f4 (diff)
More cli fixing
Diffstat (limited to 'modules/tools')
-rw-r--r--modules/tools/c++/cli_analyzer.hpp32
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;