14 #include "../visitors/serialization.h" 20 template <
class t_Visitor,
typename t_First,
typename t_Second>
23 std::pair<t_First, t_Second> &entry,
24 const typename t_Visitor::Parameters ¶meters)
27 visitor.template startMap<t_Visitor::SIZE_LIMIT_EQUAL>(2);
32 visitor(entry.first,
"first", param);
33 visitor(entry.second,
"second", param);
38 template <
class t_Visitor,
typename t_Second>
41 std::pair<std::string, t_Second> &entry,
42 const typename t_Visitor::Parameters ¶meters)
46 && parameters.isSet(t_Visitor::Parameters::SLOPPY_PAIRS_IF_SUPPORTED))
48 std::vector<std::string> entry_names;
49 ARILES_ASSERT(
true == visitor.getMapEntryNames(entry_names),
"Could not read names of map entries.");
50 if (1 == entry_names.size())
56 visitor.template startMap<t_Visitor::SIZE_LIMIT_EQUAL>(1);
58 if (
true == visitor(entry.second, entry_names[0], param))
60 entry.first = entry_names[0];
70 0 == entry_names.size()
71 and
true == parameters.isSet(t_Visitor::Parameters::ALLOW_MISSING_ENTRIES),
72 "Wrong number of pair entries for a sloppy pair.");
77 apply_read<t_Visitor, std::string, t_Second>(visitor, entry, parameters);
88 template <
class t_Visitor,
typename t_First,
typename t_Second>
91 const std::pair<t_First, t_Second> &entry,
92 const typename t_Visitor::Parameters ¶m)
96 writer(entry.first,
"first", param);
97 writer(entry.second,
"second", param);
103 template <
class t_Visitor,
typename t_Second>
106 const std::pair<std::string, t_Second> &entry,
107 const typename t_Visitor::Parameters ¶m)
111 && param.isSet(t_Visitor::Parameters::SLOPPY_PAIRS_IF_SUPPORTED))
114 writer(entry.second, entry.first, param);
122 writer(entry.first,
"first", param);
123 writer(entry.second,
"second", param);
135 template <
class t_Visitor,
typename t_First,
typename t_Second>
138 const std::pair<t_First, t_Second> &left,
139 const std::pair<t_First, t_Second> &right,
140 const typename t_Visitor::Parameters ¶m)
156 template <
class t_Visitor,
typename t_First,
typename t_Second>
158 const t_Visitor &visitor,
159 std::pair<t_First, t_Second> &entry,
160 const typename t_Visitor::Parameters ¶m)
175 template <
class t_Visitor,
typename t_First,
typename t_Second>
177 const t_Visitor &visitor,
178 std::pair<t_First, t_Second> &entry,
179 const typename t_Visitor::Parameters ¶m)
void ARILES_VISIBILITY_ATTRIBUTE apply_compare(t_Visitor &visitor, const t_Left &left, const t_Right &right, const typename t_Visitor::Parameters ¶m, ARILES_IS_BASE_ENABLER(ariles::Ariles, t_Left))
#define ARILES_TRACE_FUNCTION
void ARILES_VISIBILITY_ATTRIBUTE apply_process(const t_Visitor &visitor, t_Entry &entry, const typename t_Visitor::Parameters ¶m, ARILES_IS_BASE_ENABLER(ariles::Ariles, t_Entry))
void ARILES_VISIBILITY_ATTRIBUTE apply_defaults(const t_Visitor &visitor, t_Entry &entry, const typename t_Visitor::Parameters ¶m, ARILES_IS_BASE_ENABLER(ariles::defaults::Base, t_Entry))
void ARILES_VISIBILITY_ATTRIBUTE apply_write(t_Visitor &writer, const t_Entry &entry, const typename t_Visitor::Parameters ¶m, ARILES_IS_BASE_ENABLER(ariles::write::Base, t_Entry))
#define ARILES_VISIBILITY_ATTRIBUTE
void ARILES_VISIBILITY_ATTRIBUTE apply_read(t_Visitor &visitor, t_Entry &entry, const typename t_Visitor::Parameters ¶meters, ARILES_IS_BASE_ENABLER(ariles::read::Base, t_Entry))