15 template <
class t_Visitor,
typename t_Entry>
18 ARILES2_POINTER_TYPE<t_Entry> &entry,
19 const typename t_Visitor::Parameters ¶meters)
21 ARILES2_TRACE_FUNCTION;
22 const bool is_null = reader.startPointer(parameters);
25 PointerHandler<ARILES2_POINTER_TYPE<t_Entry> >::reset(entry);
29 PointerHandler<ARILES2_POINTER_TYPE<t_Entry> >::allocate(entry);
32 reader.endPointer(is_null);
42 template <
class t_Visitor,
typename t_Entry>
45 const ARILES2_POINTER_TYPE<t_Entry> &entry,
46 const typename t_Visitor::Parameters ¶m)
48 ARILES2_TRACE_FUNCTION;
50 const bool is_null = PointerHandler<ARILES2_POINTER_TYPE<t_Entry> >::isNull(entry);
52 writer.startPointer(is_null, param);
57 writer.endPointer(is_null);
67 template <
class t_Visitor,
typename t_Entry>
70 const ARILES2_POINTER_TYPE<t_Entry> &left,
71 const ARILES2_POINTER_TYPE<t_Entry> &right,
72 const typename t_Visitor::Parameters ¶m)
74 ARILES2_TRACE_FUNCTION;
75 if (
true ==
PointerHandler<ARILES2_POINTER_TYPE<t_Entry> >::isNull(left))
77 if (
false ==
PointerHandler<ARILES2_POINTER_TYPE<t_Entry> >::isNull(right))
79 visitor.equal_ =
false;
84 if (
true ==
PointerHandler<ARILES2_POINTER_TYPE<t_Entry> >::isNull(right))
86 visitor.equal_ =
false;
102 template <
class t_Visitor,
typename t_Entry>
105 ARILES2_POINTER_TYPE<t_Entry> &entry,
106 const typename t_Visitor::Parameters & )
108 ARILES2_TRACE_FUNCTION;
109 PointerHandler<ARILES2_POINTER_TYPE<t_Entry> >::reset(entry);
119 template <
class t_Visitor,
typename t_Entry>
122 ARILES2_POINTER_TYPE<t_Entry> &entry,
123 const typename t_Visitor::Parameters ¶m)
125 ARILES2_TRACE_FUNCTION;
126 if (
false == (
PointerHandler<ARILES2_POINTER_TYPE<t_Entry> >::isNull(entry)))
139 template <
class t_Visitor,
typename t_Entry>
142 ARILES2_POINTER_TYPE<t_Entry> &left,
143 const ARILES2_POINTER_TYPE<t_Entry> &right,
144 const typename t_Visitor::Parameters ¶m)
146 ARILES2_TRACE_FUNCTION;
147 if (
true == param.deep_copy_)
149 if (
true ==
PointerHandler<ARILES2_POINTER_TYPE<t_Entry> >::isNull(right))
151 PointerHandler<ARILES2_POINTER_TYPE<t_Entry> >::reset(left);
155 if (
true ==
PointerHandler<ARILES2_POINTER_TYPE<t_Entry> >::isNull(left))
157 PointerHandler<ARILES2_POINTER_TYPE<t_Entry> >::allocate(left);
169 template <
class t_Visitor,
typename t_Left,
typename t_Right>
172 ARILES2_POINTER_TYPE<t_Left> &left,
173 const ARILES2_POINTER_TYPE<t_Right> &right,
174 const typename t_Visitor::Parameters ¶m)
176 ARILES2_TRACE_FUNCTION;
177 if (
true == param.deep_copy_)
179 if (
true ==
PointerHandler<ARILES2_POINTER_TYPE<t_Right> >::isNull(right))
181 PointerHandler<ARILES2_POINTER_TYPE<t_Left> >::reset(left);
185 if (
true ==
PointerHandler<ARILES2_POINTER_TYPE<t_Left> >::isNull(left))
187 PointerHandler<ARILES2_POINTER_TYPE<t_Left> >::allocate(left);
195 if (
true ==
PointerHandler<ARILES2_POINTER_TYPE<t_Right> >::isNull(right))
197 PointerHandler<ARILES2_POINTER_TYPE<t_Left> >::reset(left);
201 ARILES2_THROW(
"Shallow copies of pointers of different types are not supported.");
210 template <
class t_Visitor,
typename t_Entry>
213 const ARILES2_POINTER_TYPE<t_Entry> &left,
214 ARILES2_POINTER_TYPE<t_Entry> &right,
215 const typename t_Visitor::Parameters ¶m)
217 ARILES2_TRACE_FUNCTION;
218 if (
true == param.deep_copy_)
220 if (
true ==
PointerHandler<ARILES2_POINTER_TYPE<t_Entry> >::isNull(left))
222 PointerHandler<ARILES2_POINTER_TYPE<t_Entry> >::reset(right);
226 if (
true ==
PointerHandler<ARILES2_POINTER_TYPE<t_Entry> >::isNull(right))
228 PointerHandler<ARILES2_POINTER_TYPE<t_Entry> >::allocate(right);
240 template <
class t_Visitor,
typename t_Left,
typename t_Right>
243 const ARILES2_POINTER_TYPE<t_Left> &left,
244 ARILES2_POINTER_TYPE<t_Right> &right,
245 const typename t_Visitor::Parameters ¶m)
247 ARILES2_TRACE_FUNCTION;
248 if (
true == param.deep_copy_)
250 if (
true ==
PointerHandler<ARILES2_POINTER_TYPE<t_Left> >::isNull(left))
252 PointerHandler<ARILES2_POINTER_TYPE<t_Right> >::reset(right);
256 if (
true ==
PointerHandler<ARILES2_POINTER_TYPE<t_Right> >::isNull(right))
258 PointerHandler<ARILES2_POINTER_TYPE<t_Right> >::allocate(right);
266 if (
true ==
PointerHandler<ARILES2_POINTER_TYPE<t_Left> >::isNull(left))
268 PointerHandler<ARILES2_POINTER_TYPE<t_Right> >::reset(right);
272 ARILES2_THROW(
"Shallow copies of pointers of different types are not supported.");
279 #undef ARILES2_POINTER_HANDLER
280 #undef ARILES2_POINTER_TYPE