14 #include "../internal/helpers.h"
19 template <
class... t_Args>
22 return (entry.empty());
31 template <
class t_Visitor,
class... t_Args>
35 entry.resize(visitor.startArray());
36 for (
typename std::vector<t_Args...>::value_type &value : entry)
38 visitor.visitArrayElement(value, param);
43 template <
class t_Visitor,
class... t_Args>
46 std::vector<bool, t_Args...> &entry,
50 entry.resize(visitor.startArray());
51 for (std::size_t i = 0; i < entry.size(); ++i)
54 visitor.visitArrayElement(value, param);
67 template <
class t_Visitor,
class... t_Args>
70 const std::vector<t_Args...> &entry,
74 writer.startArray(entry.size(), param.compact_arrays_);
75 for (
const typename std::vector<t_Args...>::value_type &value : entry)
77 writer.visitArrayElement(value, param);
89 template <
class t_Visitor,
class... t_Args>
92 const std::vector<t_Args...> &left,
93 const std::vector<t_Args...> &right,
98 visitor.equal_ &= (left.size() == right.size());
100 for (std::size_t i = 0; i < left.size() and visitor.equal_; ++i)
113 template <
class t_Visitor,
class... t_Args>
116 std::vector<t_Args...> &entry,
131 template <
class t_Visitor,
class... t_Args>
133 const t_Visitor &visitor,
134 std::vector<t_Args...> &entry,
138 for (
typename std::vector<t_Args...>::value_type &value : entry)
144 template <
class t_Visitor,
class... t_Args>
146 const t_Visitor &visitor,
147 std::vector<bool, t_Args...> &entry,
151 for (std::size_t i = 0; i < entry.size(); ++i)
153 bool value = entry[i];
166 template <
class t_Visitor,
class... t_LeftArgs,
class... t_RightArgs>
169 std::vector<t_LeftArgs...> &left,
170 const std::vector<t_RightArgs...> &right,
176 left.reserve(right.size());
177 for (
const typename std::vector<t_RightArgs...>::value_type &right_value : right)
179 typename std::vector<t_LeftArgs...>::value_type left_value;
181 left.push_back(std::move(left_value));
189 template <
class t_Visitor,
class... t_LeftArgs,
class... t_RightArgs>
192 const std::vector<t_LeftArgs...> &left,
193 std::vector<t_RightArgs...> &right,
199 right.reserve(left.size());
200 for (
const typename std::vector<t_LeftArgs...>::value_type &left_value : left)
202 typename std::vector<t_RightArgs...>::value_type right_value;
204 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)
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