14 #include "../internal/helpers.h"
15 #include "../visitors/serialization.h"
21 template <
class t_Visitor,
typename t_First,
typename t_Second>
24 std::pair<t_First, t_Second> &entry,
28 visitor.startMap(t_Visitor::SIZE_LIMIT_EQUAL, 2);
29 visitor.visitMapEntry(entry.first,
"first", parameters,
true);
30 visitor.visitMapEntry(entry.second,
"second", parameters,
true);
35 template <
class t_Visitor,
typename t_Second>
38 std::pair<std::string, t_Second> &entry,
44 if (parameters.sloppy_pairs_ and visitor.startIteratedMap(t_Visitor::SIZE_LIMIT_EQUAL, 1))
47 visitor.startIteratedMapElement(entry.first),
"Could not read first element of a sloppy pair.");
49 visitor.endIteratedMapElement();
50 visitor.endIteratedMap();
54 apply_read<t_Visitor, std::string, t_Second>(visitor, entry, parameters);
65 template <
class t_Visitor,
typename t_First,
typename t_Second>
68 const std::pair<t_First, t_Second> &entry,
72 writer.startMap(param, 2);
73 writer.visitMapEntry(entry.first,
"first", param);
74 writer.visitMapEntry(entry.second,
"second", param);
80 template <
class t_Visitor,
typename t_Second>
83 const std::pair<std::string, t_Second> &entry,
87 if (param.sloppy_pairs_)
89 if (writer.startIteratedMap(1, param))
91 writer.startIteratedMapElement(entry.first);
93 writer.endIteratedMapElement();
94 writer.endIteratedMap();
101 writer.startMap(param, 2);
102 writer.visitMapEntry(entry.first,
"first", param);
103 writer.visitMapEntry(entry.second,
"second", param);
114 template <
class t_Visitor,
typename t_First,
typename t_Second>
117 const std::pair<t_First, t_Second> &left,
118 const std::pair<t_First, t_Second> &right,
135 template <
class t_Visitor,
typename t_First,
typename t_Second>
137 const t_Visitor &visitor,
138 std::pair<t_First, t_Second> &entry,
154 template <
class t_Visitor,
typename t_First,
typename t_Second>
156 const t_Visitor &visitor,
157 std::pair<t_First, t_Second> &entry,
174 typename t_FirstLeft,
175 typename t_SecondLeft,
176 typename t_FirstRight,
177 typename t_SecondRight>
180 std::pair<t_FirstLeft, t_SecondLeft> &left,
181 const std::pair<t_FirstRight, t_SecondRight> &right,
195 typename t_FirstLeft,
196 typename t_SecondLeft,
197 typename t_FirstRight,
198 typename t_SecondRight>
201 const std::pair<t_FirstLeft, t_SecondLeft> &left,
202 std::pair<t_FirstRight, t_SecondRight> &right,
208 apply_copyto(visitor, left.second, right.second, param);
#define CPPUT_ASSERT(condition,...)
void apply_compare(t_Visitor &visitor, const t_Left &left, const t_Right &right, const typename t_Visitor::Parameters ¶m)
void apply_copyfrom(t_Visitor &visitor, t_Left &left, const t_Right &right, const typename t_Visitor::Parameters ¶m)
void apply_copyto(t_Visitor &visitor, const t_Left &left, t_Right &right, const typename t_Visitor::Parameters ¶m)
visitor::Parameters Parameters
void apply_defaults(const t_Visitor &visitor, t_Entry &entry, const typename t_Visitor::Parameters ¶m, ARILES2_IS_BASE_ENABLER(ariles2::defaults::Base, t_Entry))
void apply_process(const t_Visitor &visitor, t_Entry &entry, const typename t_Visitor::Parameters ¶m)
void apply_read(t_Visitor &visitor, t_Entry &entry, const typename t_Visitor::Parameters ¶meters, ARILES2_IS_BASE_ENABLER(ariles2::read::Base, t_Entry))
void apply_write(t_Visitor &writer, const t_Entry &entry, const typename t_Visitor::Parameters ¶meters, ARILES2_IS_BASE_ENABLER(ariles2::write::Base, t_Entry))
#define CPPUT_TRACE_FUNCTION