diff --git a/contrib/epee/include/serialization/keyvalue_serialization.h b/contrib/epee/include/serialization/keyvalue_serialization.h index ae8779f8..856ee830 100644 --- a/contrib/epee/include/serialization/keyvalue_serialization.h +++ b/contrib/epee/include/serialization/keyvalue_serialization.h @@ -72,7 +72,15 @@ public: \ epee::serialization::selector::serialize(this_ref.varialble, stg, hparent_section, val_name, auto_doc_mode, substitute, description); #define KV_SERIALIZE_N_DOC2(varialble, val_name) \ - {using var_type = decltype(this_ref.varialble); epee::serialization::selector::serialize(this_ref.varialble, stg, hparent_section, val_name, auto_doc_mode, + {using var_type = decltype(this_ref.varialble); \ + epee::serialization::selector::serialize(this_ref.varialble, stg, hparent_section, val_name); \ + if constexpr (t_storage::use_descriptions::value) \ + { \ + epee::serialization::selector::set_descr(this_ref.varialble, stg, hparent_section, val_name); \ + } \ + } + + //substitute, description); diff --git a/contrib/epee/include/serialization/keyvalue_serialization_overloads.h b/contrib/epee/include/serialization/keyvalue_serialization_overloads.h index e0b6f6d8..7ca5dd98 100644 --- a/contrib/epee/include/serialization/keyvalue_serialization_overloads.h +++ b/contrib/epee/include/serialization/keyvalue_serialization_overloads.h @@ -315,11 +315,18 @@ namespace epee struct selector { template - static bool serialize(const t_type& d, t_storage& stg, typename t_storage::hsection hparent_section, const char* pname, bool doc_mode = false, const t_type& doc_substitute = t_type(), const std::string& description = std::string()) + static bool serialize(const t_type& d, t_storage& stg, typename t_storage::hsection hparent_section, const char* pname) { stg.set_entry_description(hparent_section, pname, description); return kv_serialize( (doc_mode ? doc_substitute:d), stg, hparent_section, pname); } + //bool doc_mode = false, const t_type& doc_substitute = t_type(), const std::string& description = std::string() + template + static bool set_descr(t_storage& stg, typename t_storage::hsection hparent_section, const char* pname, const std::string& description = std::string(), const t_type& doc_substitute = t_type()) + { + stg.set_entry_description(hparent_section, pname, description); + return kv_serialize((doc_mode ? doc_substitute : d), stg, hparent_section, pname); + } template static bool serialize_stl_container_pod_val_as_blob(const t_type& d, t_storage& stg, typename t_storage::hsection hparent_section, const char* pname) diff --git a/contrib/epee/include/storages/portable_storage.h b/contrib/epee/include/storages/portable_storage.h index 0eed742b..b6e72668 100644 --- a/contrib/epee/include/storages/portable_storage.h +++ b/contrib/epee/include/storages/portable_storage.h @@ -49,6 +49,7 @@ namespace epee { public: //typedef epee::serialization::hsection hsection; + using use_descriptions = std::false_type; typedef t_section* hsection; typedef epee::serialization::harray harray; typedef storage_entry meta_entry; diff --git a/contrib/epee/include/storages/portable_storage_extended_for_doc.h b/contrib/epee/include/storages/portable_storage_extended_for_doc.h index aec4a766..a7b6094f 100644 --- a/contrib/epee/include/storages/portable_storage_extended_for_doc.h +++ b/contrib/epee/include/storages/portable_storage_extended_for_doc.h @@ -42,6 +42,8 @@ namespace epee class portable_storage_extended_doc: public portable_storage { public: + using use_descriptions = std::true_type; + void set_entry_description(hsection hparent_section, const std::string& name, const std::string& description) { if (!hparent_section) diff --git a/contrib/epee/include/storages/portable_storage_to_json.h b/contrib/epee/include/storages/portable_storage_to_json.h index cb434b87..3292c952 100644 --- a/contrib/epee/include/storages/portable_storage_to_json.h +++ b/contrib/epee/include/storages/portable_storage_to_json.h @@ -109,11 +109,15 @@ namespace epee template static void handle_obj_begin(t_stream& strm, size_t indent) - {} + { + strm << "{"; + } template static void handle_obj_end(t_stream& strm, size_t indent) - {} + { + strm << "}"; + } template static void handle_print_key(t_stream& strm, const std::string& key, size_t indent) @@ -125,11 +129,15 @@ namespace epee template static void handle_section_entry_separator(t_stream& strm, size_t indent) - {} + { + strm << ","; + } template static void handle_array_entry_separator(t_stream& strm, size_t indent) - {} + { + strm << ","; + } template static void handle_line_break(t_stream& strm, size_t indent)