diff options
author | Claudius 'keldu' Holeksa <mail@keldu.de> | 2024-08-18 18:57:32 +0200 |
---|---|---|
committer | Claudius 'keldu' Holeksa <mail@keldu.de> | 2024-08-18 18:57:53 +0200 |
commit | 0b2d95b65e363e2ff3e1747a0035137c46d20751 (patch) | |
tree | 9af157d152d18f6a517c6c0eec43c20383274027 | |
parent | 16047a22363cf8b903faab6fcf04b6e3e6fbaa7d (diff) |
Adding comments to decoding failures
-rw-r--r-- | modules/codec-json/c++/json.tmpl.hpp | 22 |
1 files changed, 11 insertions, 11 deletions
diff --git a/modules/codec-json/c++/json.tmpl.hpp b/modules/codec-json/c++/json.tmpl.hpp index d17c02d..8dbee8c 100644 --- a/modules/codec-json/c++/json.tmpl.hpp +++ b/modules/codec-json/c++/json.tmpl.hpp @@ -528,7 +528,7 @@ struct json_decode<schema::Primitive<T,N>, ToDecode> { typename native_data_type<Schema>::type result; auto fc_result = std::from_chars(num_view.data(), num_view.data() + num_view.size(), result); if(fc_result.ec != std::errc{}){ - return make_error<err::invalid_state>(); + return make_error<err::invalid_state>("Couldn't decode Primitive Value"); } to.set(result); @@ -666,7 +666,7 @@ struct json_decode<schema::Struct<schema::Member<T,Lits>...>, ToDecode> { constexpr static string_literal Literal = parameter_key_pack_type<i, Lits...>::literal; if(search_name == Literal.view()){ if(fields[i]){ - return make_error<err::invalid_state>(); + return make_error<err::invalid_state>("Duplicate entry in Struct"); } fields[i] = true; auto eov = json_decode<Type, ToDecode>::decode(buff, to.template get<Literal>()); @@ -677,7 +677,7 @@ struct json_decode<schema::Struct<schema::Member<T,Lits>...>, ToDecode> { decode_field_search<i+1>(buff, to, fields, search_name); } }else { - return make_error<err::invalid_state>(); + return make_error<err::invalid_state>("Field in Struct not found"); } return void_t{}; } @@ -694,7 +694,7 @@ struct json_decode<schema::Struct<schema::Member<T,Lits>...>, ToDecode> { return make_error<err::buffer_exhausted>(); } if(buff.read() != ':'){ - return make_error<err::invalid_state>(); + return make_error<err::invalid_state>("Field separator in Struct expected"); } buff.read_advance(1); json_helper::skip_whitespace(buff); @@ -717,13 +717,13 @@ struct json_decode<schema::Struct<schema::Member<T,Lits>...>, ToDecode> { // If not all fields are set, the dataset is incomplete for(auto& iter : fields){ if(!iter){ - return make_error<err::invalid_state>(); + return make_error<err::invalid_state>("Not all fields were set"); } } buff.read_advance(1); return void_t{}; }else{ - return make_error<err::invalid_state>(); + return make_error<err::invalid_state>("Struct Separator ',' or Struct '}' ending expected"); } json_helper::skip_whitespace(buff); if(buff.read_composite_length() == 0){ @@ -738,7 +738,7 @@ struct json_decode<schema::Struct<schema::Member<T,Lits>...>, ToDecode> { std::fill(found_fields.begin(), found_fields.end(), false); SAW_ASSERT(buff.read() == '{'){ - return make_error<err::invalid_state>(); + return make_error<err::invalid_state>("Expected Struct beginning '{'"); } buff.read_advance(1); json_helper::skip_whitespace(buff); @@ -749,7 +749,7 @@ struct json_decode<schema::Struct<schema::Member<T,Lits>...>, ToDecode> { // Check if there are no elements present in the JSON Struct if(buff.read() == '}'){ if(sizeof...(T) > 0){ - return make_error<err::invalid_state>(); + return make_error<err::invalid_state>("Expected Struct ending '}'"); } buff.read_advance(1); return void_t{}; @@ -773,7 +773,7 @@ struct json_decode<schema::Tuple<T...>, ToDecode> { if constexpr (i < sizeof...(T)){ if constexpr ( i > 0 ){ if(buff.read() != ','){ - return make_error<err::invalid_state>(); + return make_error<err::invalid_state>("Expected ',' in Tuple"); } buff.read_advance(1); json_helper::skip_whitespace(buff); @@ -798,7 +798,7 @@ struct json_decode<schema::Tuple<T...>, ToDecode> { } }else{ if(buff.read() != ']'){ - return make_error<err::invalid_state>(); + return make_error<err::invalid_state>("Expected Tuple Ending ']'"); } buff.read_advance(1); } @@ -888,7 +888,7 @@ struct json_decode<schema::Array<T,D>, ToDecode> { if(log_dim){ dims[Level] = index[Level]; }else if (dims[Level] != index[Level]){ - return make_error<err::invalid_state>(); + return make_error<err::invalid_state>("Not matching Array endings"); } } return void_t{}; |