14#include "../internal/helpers.h"
19 template <
class t_Type, std::
size_t t_Size>
20 bool isMissing(
const std::array<t_Type, t_Size> &entry)
22 return (entry.empty());
31 template <
class t_Visitor,
class t_Type, std::
size_t t_Size>
34 std::array<t_Type, t_Size> &entry,
35 const typename t_Visitor::Parameters ¶m)
38 const std::size_t size = visitor.startArray();
41 throw std::runtime_error(
42 "Array size mismatch: expected " + std::to_string(t_Size) +
", got " + std::to_string(size));
44 for (std::size_t i = 0; i < t_Size; ++i)
46 visitor.visitArrayElement(entry[i], param);
58 template <
class t_Visitor,
class t_Type, std::
size_t t_Size>
61 const std::array<t_Type, t_Size> &entry,
62 const typename t_Visitor::Parameters ¶m)
65 writer.startArray(t_Size, param.compact_arrays_);
66 for (
const t_Type &value : entry)
68 writer.visitArrayElement(value, param);
80 template <
class t_Visitor,
class t_Type, std::
size_t t_Size>
83 const std::array<t_Type, t_Size> &left,
84 const std::array<t_Type, t_Size> &right,
85 const typename t_Visitor::Parameters ¶m)
89 for (std::size_t i = 0; i < t_Size; ++i)
102 template <
class t_Visitor,
class t_Type, std::
size_t t_Size>
104 const t_Visitor &visitor,
105 std::array<t_Type, t_Size> &entry,
106 const typename t_Visitor::Parameters ¶m)
109 for (t_Type &element : entry)
123 template <
class t_Visitor,
class t_Type, std::
size_t t_Size>
125 const t_Visitor &visitor,
126 std::array<t_Type, t_Size> &entry,
127 const typename t_Visitor::Parameters ¶m)
130 for (
typename std::array<t_Type, t_Size>::reference element : entry)
143 template <
class t_Visitor,
class t_LeftType,
class t_RightType, std::
size_t t_Size>
146 std::array<t_LeftType, t_Size> &left,
147 const std::array<t_RightType, t_Size> &right,
148 const typename t_Visitor::Parameters ¶m)
152 for (std::size_t i = 0; i < t_Size; ++i)
162 template <
class t_Visitor,
class t_LeftType,
class t_RightType, std::
size_t t_Size>
165 const std::array<t_LeftType, t_Size> &left,
166 std::array<t_RightType, t_Size> &right,
167 const typename t_Visitor::Parameters ¶m)
171 for (std::size_t i = 0; i < t_Size; ++i)
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