14#include "../internal/helpers.h"
19 template <
class... t_Args>
22 return (entry.empty());
31 template <
class t_Visitor,
class... t_Args>
32 void apply_read(t_Visitor &visitor, std::list<t_Args...> &entry,
const typename t_Visitor::Parameters ¶m)
35 const std::size_t size = visitor.startArray();
37 for (std::size_t i = 0; i < size; ++i)
39 typename std::list<t_Args...>::value_type value;
40 visitor.visitArrayElement(value, param);
41 entry.push_back(std::move(value));
53 template <
class t_Visitor,
class... t_Args>
56 const std::list<t_Args...> &entry,
57 const typename t_Visitor::Parameters ¶m)
60 writer.startArray(entry.size(), param.compact_arrays_);
61 for (
const typename std::list<t_Args...>::value_type &value : entry)
63 writer.visitArrayElement(value, param);
75 template <
class t_Visitor,
class... t_Args>
78 const std::list<t_Args...> &left,
79 const std::list<t_Args...> &right,
80 const typename t_Visitor::Parameters ¶m)
84 visitor.equal_ &= (left.size() == right.size());
86 typename std::list<t_Args...>::const_iterator left_it = left.begin();
87 typename std::list<t_Args...>::const_iterator right_it = right.begin();
89 for (; left_it != left.end() && right_it != right.end(); ++left_it, ++right_it)
102 template <
class t_Visitor,
class... t_Args>
105 std::list<t_Args...> &entry,
106 const typename t_Visitor::Parameters & )
120 template <
class t_Visitor,
class... t_Args>
122 const t_Visitor &visitor,
123 std::list<t_Args...> &entry,
124 const typename t_Visitor::Parameters ¶m)
127 for (
typename std::list<t_Args...>::reference value : entry)
140 template <
class t_Visitor,
class... t_LeftArgs,
class... t_RightArgs>
143 std::list<t_LeftArgs...> &left,
144 const std::list<t_RightArgs...> &right,
145 const typename t_Visitor::Parameters ¶m)
150 for (
const typename std::list<t_RightArgs...>::value_type &right_value : right)
152 typename std::list<t_LeftArgs...>::value_type left_value;
154 left.push_back(std::move(left_value));
162 template <
class t_Visitor,
class... t_LeftArgs,
class... t_RightArgs>
165 const std::list<t_LeftArgs...> &left,
166 std::list<t_RightArgs...> &right,
167 const typename t_Visitor::Parameters ¶m)
172 for (
const typename std::list<t_LeftArgs...>::value_type &left_value : left)
174 typename std::list<t_RightArgs...>::value_type right_value;
176 right.push_back(std::move(right_value));
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)
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