14 template <
class t_Entry>
15 bool isMissing(
const ARILES2_POINTER_TYPE<t_Entry> &entry)
17 return (
PointerHandler<ARILES2_POINTER_TYPE<t_Entry>>::isNull(entry));
26 template <
class t_Visitor,
typename t_Entry>
29 ARILES2_POINTER_TYPE<t_Entry> &entry,
33 const bool is_null = reader.startPointer(parameters);
43 reader.endPointer(is_null);
53 template <
class t_Visitor,
typename t_Entry>
56 const ARILES2_POINTER_TYPE<t_Entry> &entry,
63 writer.startPointer(is_null, param);
68 writer.endPointer(is_null);
78 template <
class t_Visitor,
typename t_Entry>
81 const ARILES2_POINTER_TYPE<t_Entry> &left,
82 const ARILES2_POINTER_TYPE<t_Entry> &right,
88 if (not
PointerHandler<ARILES2_POINTER_TYPE<t_Entry>>::isNull(right))
90 visitor.equal_ =
false;
97 visitor.equal_ =
false;
113 template <
class t_Visitor,
typename t_Entry>
116 ARILES2_POINTER_TYPE<t_Entry> &entry,
130 template <
class t_Visitor,
typename t_Entry>
132 const t_Visitor &visitor,
133 ARILES2_POINTER_TYPE<t_Entry> &entry,
137 if (not(
PointerHandler<ARILES2_POINTER_TYPE<t_Entry>>::isNull(entry)))
150 template <
class t_Visitor,
typename t_Entry>
153 ARILES2_POINTER_TYPE<t_Entry> &left,
154 const ARILES2_POINTER_TYPE<t_Entry> &right,
158 if (param.deep_copy_)
180 template <
class t_Visitor,
typename t_Left,
typename t_Right>
183 ARILES2_POINTER_TYPE<t_Left> &left,
184 const ARILES2_POINTER_TYPE<t_Right> &right,
188 if (param.deep_copy_)
212 CPPUT_THROW(
"Shallow copies of pointers of different types are not supported.");
221 template <
class t_Visitor,
typename t_Entry>
224 const ARILES2_POINTER_TYPE<t_Entry> &left,
225 ARILES2_POINTER_TYPE<t_Entry> &right,
229 if (param.deep_copy_)
251 template <
class t_Visitor,
typename t_Left,
typename t_Right>
254 const ARILES2_POINTER_TYPE<t_Left> &left,
255 ARILES2_POINTER_TYPE<t_Right> &right,
259 if (param.deep_copy_)
283 CPPUT_THROW(
"Shallow copies of pointers of different types are not supported.");
290 #undef ARILES2_POINTER_HANDLER
291 #undef ARILES2_POINTER_TYPE
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))
bool isMissing(const ARILES2_POINTER_TYPE< t_Entry > &entry)
#define CPPUT_TRACE_FUNCTION