16#include "../internal/helpers.h"
25 template <
class t_Visitor, std::size_t... t_Indices,
typename... t_Args>
28 std::tuple<t_Args...> &entry,
29 const typename t_Visitor::Parameters ¶m,
30 std::index_sequence<t_Indices...>)
32 (visitor.visitMapEntry(std::get<t_Indices>(entry),
"tuple_" + std::to_string(t_Indices), param,
true),
37 template <
class t_Visitor,
typename... t_Args>
38 void apply_read(t_Visitor &visitor, std::tuple<t_Args...> &entry,
const typename t_Visitor::Parameters ¶m)
43 visitor.startMap(visitor.SIZE_LIMIT_EQUAL,
sizeof...(t_Args));
44 impl::apply_read(visitor, entry, param, std::index_sequence_for<t_Args...>{});
57 template <
class t_Visitor, std::size_t... t_Indices,
typename... t_Args>
60 const std::tuple<t_Args...> &entry,
61 const typename t_Visitor::Parameters ¶m,
62 std::index_sequence<t_Indices...>)
64 (writer.visitMapEntry(std::get<t_Indices>(entry),
"tuple_" + std::to_string(t_Indices), param), ...);
68 template <
class t_Visitor,
typename... t_Args>
71 const std::tuple<t_Args...> &entry,
72 const typename t_Visitor::Parameters ¶m)
77 writer.startMap(param,
sizeof...(t_Args));
91 template <
class t_Visitor, std::size_t... t_Indices,
typename... t_Args>
94 const std::tuple<t_Args...> &left,
95 const std::tuple<t_Args...> &right,
96 const typename t_Visitor::Parameters ¶m,
97 std::index_sequence<t_Indices...>)
99 (
apply_compare(visitor, std::get<t_Indices>(left), std::get<t_Indices>(right), param), ...);
103 template <
class t_Visitor,
typename... t_Args>
106 const std::tuple<t_Args...> &left,
107 const std::tuple<t_Args...> &right,
108 const typename t_Visitor::Parameters ¶m)
125 template <
class t_Visitor, std::size_t... t_Indices,
typename... t_Args>
127 const t_Visitor &visitor,
128 std::tuple<t_Args...> &entry,
129 const typename t_Visitor::Parameters ¶m,
130 std::index_sequence<t_Indices...>)
132 (
apply_defaults(visitor, std::get<t_Indices>(entry), param), ...);
136 template <
class t_Visitor,
typename... t_Args>
138 const t_Visitor &visitor,
139 std::tuple<t_Args...> &entry,
140 const typename t_Visitor::Parameters ¶m)
157 template <
class t_Visitor, std::size_t... t_Indices,
typename... t_Args>
159 const t_Visitor &visitor,
160 std::tuple<t_Args...> &entry,
161 const typename t_Visitor::Parameters ¶m,
162 std::index_sequence<t_Indices...>)
164 (
apply_process(visitor, std::get<t_Indices>(entry), param), ...);
168 template <
class t_Visitor,
typename... t_Args>
170 const t_Visitor &visitor,
171 std::tuple<t_Args...> &entry,
172 const typename t_Visitor::Parameters ¶m)
189 template <
class t_Visitor, std::size_t... t_Indices,
typename... t_Args>
192 std::tuple<t_Args...> &left,
193 const std::tuple<t_Args...> &right,
194 const typename t_Visitor::Parameters ¶m,
195 std::index_sequence<t_Indices...>)
197 (
apply_copyfrom(visitor, std::get<t_Indices>(left), std::get<t_Indices>(right), param), ...);
201 template <
class t_Visitor,
typename... t_Args>
204 std::tuple<t_Args...> &left,
205 const std::tuple<t_Args...> &right,
206 const typename t_Visitor::Parameters ¶m)
218 template <
class t_Visitor, std::size_t... t_Indices,
typename... t_Args>
221 const std::tuple<t_Args...> &left,
222 std::tuple<t_Args...> &right,
223 const typename t_Visitor::Parameters ¶m,
224 std::index_sequence<t_Indices...>)
226 (
apply_copyto(visitor, std::get<t_Indices>(left), std::get<t_Indices>(right), param), ...);
230 template <
class t_Visitor,
typename... t_Args>
233 const std::tuple<t_Args...> &left,
234 std::tuple<t_Args...> &right,
235 const typename t_Visitor::Parameters ¶m)
238 impl::apply_copyto(visitor, left, right, param, std::index_sequence_for<t_Args...>{});
#define CPPUT_UNUSED_ARG(parameter)
void apply_compare(t_Visitor &visitor, const std::tuple< t_Args... > &left, const std::tuple< t_Args... > &right, const typename t_Visitor::Parameters ¶m, std::index_sequence< t_Indices... >)
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, std::tuple< t_Args... > &left, const std::tuple< t_Args... > &right, const typename t_Visitor::Parameters ¶m, std::index_sequence< t_Indices... >)
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 std::tuple< t_Args... > &left, std::tuple< t_Args... > &right, const typename t_Visitor::Parameters ¶m, std::index_sequence< t_Indices... >)
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, std::tuple< t_Args... > &entry, const typename t_Visitor::Parameters ¶m, std::index_sequence< t_Indices... >)
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, std::tuple< t_Args... > &entry, const typename t_Visitor::Parameters ¶m, std::index_sequence< t_Indices... >)
void apply_process(const t_Visitor &visitor, t_Entry &entry, const typename t_Visitor::Parameters ¶m)
void apply_read(t_Visitor &visitor, std::tuple< t_Args... > &entry, const typename t_Visitor::Parameters ¶m, std::index_sequence< t_Indices... >)
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 std::tuple< t_Args... > &entry, const typename t_Visitor::Parameters ¶m, std::index_sequence< t_Indices... >)
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))
#define CPPUT_TRACE_FUNCTION