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,
25 const typename t_Visitor::Parameters ¶meters)
27 ARILES2_TRACE_FUNCTION;
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,
39 const typename t_Visitor::Parameters ¶meters)
41 ARILES2_TRACE_FUNCTION;
44 if (
true == parameters.sloppy_pairs_ and
true == visitor.startIteratedMap(t_Visitor::SIZE_LIMIT_EQUAL, 1))
47 true == visitor.startIteratedMapElement(entry.first),
48 "Could not read first element of a sloppy pair.");
50 visitor.endIteratedMapElement();
51 visitor.endIteratedMap();
55 apply_read<t_Visitor, std::string, t_Second>(visitor, entry, parameters);
66 template <
class t_Visitor,
typename t_First,
typename t_Second>
69 const std::pair<t_First, t_Second> &entry,
70 const typename t_Visitor::Parameters ¶m)
72 ARILES2_TRACE_FUNCTION;
73 writer.startMap(param, 2);
74 writer.visitMapEntry(entry.first,
"first", param);
75 writer.visitMapEntry(entry.second,
"second", param);
81 template <
class t_Visitor,
typename t_Second>
84 const std::pair<std::string, t_Second> &entry,
85 const typename t_Visitor::Parameters ¶m)
87 ARILES2_TRACE_FUNCTION;
88 if (
true == param.sloppy_pairs_)
90 if (
true == writer.startIteratedMap(1, param))
92 writer.startIteratedMapElement(entry.first);
94 writer.endIteratedMapElement();
95 writer.endIteratedMap();
102 writer.startMap(param, 2);
103 writer.visitMapEntry(entry.first,
"first", param);
104 writer.visitMapEntry(entry.second,
"second", param);
115 template <
class t_Visitor,
typename t_First,
typename t_Second>
118 const std::pair<t_First, t_Second> &left,
119 const std::pair<t_First, t_Second> &right,
120 const typename t_Visitor::Parameters ¶m)
122 ARILES2_TRACE_FUNCTION;
136 template <
class t_Visitor,
typename t_First,
typename t_Second>
139 std::pair<t_First, t_Second> &entry,
140 const typename t_Visitor::Parameters ¶m)
142 ARILES2_TRACE_FUNCTION;
155 template <
class t_Visitor,
typename t_First,
typename t_Second>
158 std::pair<t_First, t_Second> &entry,
159 const typename t_Visitor::Parameters ¶m)
161 ARILES2_TRACE_FUNCTION;
175 typename t_FirstLeft,
176 typename t_SecondLeft,
177 typename t_FirstRight,
178 typename t_SecondRight>
181 std::pair<t_FirstLeft, t_SecondLeft> &left,
182 const std::pair<t_FirstRight, t_SecondRight> &right,
183 const typename t_Visitor::Parameters ¶m)
185 ARILES2_TRACE_FUNCTION;
196 typename t_FirstLeft,
197 typename t_SecondLeft,
198 typename t_FirstRight,
199 typename t_SecondRight>
202 const std::pair<t_FirstLeft, t_SecondLeft> &left,
203 std::pair<t_FirstRight, t_SecondRight> &right,
204 const typename t_Visitor::Parameters ¶m)
206 ARILES2_TRACE_FUNCTION;
209 apply_copyto(visitor, left.second, right.second, param);