15#include "../internal/helpers.h"
22 template <
class t_Visitor,
class t_Rep,
class t_Period>
25 std::chrono::duration<t_Rep, t_Period> &entry,
26 const typename t_Visitor::Parameters ¶m)
31 visitor.readElement(value);
32 entry = std::chrono::duration<t_Rep, t_Period>(value);
36 template <
class t_Visitor,
class t_Clock,
class t_Duration>
39 std::chrono::time_point<t_Clock, t_Duration> &entry,
40 const typename t_Visitor::Parameters ¶m)
44 typename t_Duration::rep value;
45 visitor.readElement(value);
46 entry = std::chrono::time_point<t_Clock, t_Duration>(std::chrono::duration_cast<t_Duration>(
47 std::chrono::duration<typename t_Duration::rep, typename t_Duration::period>(value)));
57 template <
class t_Visitor,
class t_Rep,
class t_Period>
60 const std::chrono::duration<t_Rep, t_Period> &entry,
61 const typename t_Visitor::Parameters ¶m)
65 t_Rep count = entry.count();
66 writer.writeElement(count, param);
70 template <
class t_Visitor,
class t_Clock,
class t_Duration>
73 const std::chrono::time_point<t_Clock, t_Duration> &entry,
74 const typename t_Visitor::Parameters ¶m)
78 typename t_Duration::rep count = std::chrono::duration_cast<t_Duration>(entry.time_since_epoch()).count();
79 writer.writeElement(count, param);
89 template <
class t_Visitor,
class t_Rep,
class t_Period>
92 const std::chrono::duration<t_Rep, t_Period> &left,
93 const std::chrono::duration<t_Rep, t_Period> &right,
94 const typename t_Visitor::Parameters ¶m)
98 t_Rep left_count = left.count();
99 t_Rep right_count = right.count();
104 template <
class t_Visitor,
class t_Clock,
class t_Duration>
107 const std::chrono::time_point<t_Clock, t_Duration> &left,
108 const std::chrono::time_point<t_Clock, t_Duration> &right,
109 const typename t_Visitor::Parameters ¶m)
113 typename t_Duration::rep left_count = left.time_since_epoch().count();
114 typename t_Duration::rep right_count = right.time_since_epoch().count();
125 template <
class t_Visitor,
class t_Rep,
class t_Period>
128 std::chrono::duration<t_Rep, t_Period> &entry,
129 const typename t_Visitor::Parameters & )
132 entry = std::chrono::duration<t_Rep, t_Period>::zero();
136 template <
class t_Visitor,
class t_Clock,
class t_Duration>
139 std::chrono::time_point<t_Clock, t_Duration> &entry,
140 const typename t_Visitor::Parameters & )
143 entry = std::chrono::time_point<t_Clock, t_Duration>::min();
153 template <
class t_Visitor,
class t_Rep,
class t_Period>
155 const t_Visitor &visitor,
156 std::chrono::duration<t_Rep, t_Period> &entry,
157 const typename t_Visitor::Parameters ¶m)
161 t_Rep count = entry.count();
163 entry = std::chrono::duration<t_Rep, t_Period>(count);
167 template <
class t_Visitor,
class t_Clock,
class t_Duration>
169 const t_Visitor &visitor,
170 std::chrono::time_point<t_Clock, t_Duration> &entry,
171 const typename t_Visitor::Parameters ¶m)
175 t_Duration duration = entry.time_since_epoch();
177 entry = std::chrono::time_point<t_Clock, t_Duration>(duration);
187 template <
class t_Visitor,
class t_Rep,
class t_Period>
190 std::chrono::duration<t_Rep, t_Period> &left,
191 const std::chrono::duration<t_Rep, t_Period> &right,
192 const typename t_Visitor::Parameters & )
195 t_Rep right_count = right.
count();
196 std::chrono::duration<t_Rep, t_Period> converted_right =
197 std::chrono::duration_cast<std::chrono::duration<t_Rep, t_Period>>(
198 std::chrono::duration<t_Rep, t_Period>(right_count));
199 left = converted_right;
203 template <
class t_Visitor,
class t_Clock,
class t_Duration>
206 std::chrono::time_point<t_Clock, t_Duration> &left,
207 const std::chrono::time_point<t_Clock, t_Duration> &right,
208 const typename t_Visitor::Parameters & )
211 t_Duration right_duration = right.time_since_epoch();
212 t_Duration converted_duration = std::chrono::duration_cast<t_Duration>(right_duration);
213 left = std::chrono::time_point<t_Clock, t_Duration>(converted_duration);
220 template <
class t_Visitor,
class t_Rep,
class t_Period>
223 const std::chrono::duration<t_Rep, t_Period> &left,
224 std::chrono::duration<t_Rep, t_Period> &right,
225 const typename t_Visitor::Parameters & )
228 t_Rep left_count = left.count();
229 t_Rep converted_left = std::chrono::duration_cast<std::chrono::duration<t_Rep, t_Period>>(
230 std::chrono::duration<t_Rep, t_Period>(left_count))
232 right = std::chrono::duration<t_Rep, t_Period>(converted_left);
236 template <
class t_Visitor,
class t_Clock,
class t_Duration>
239 const std::chrono::time_point<t_Clock, t_Duration> &left,
240 std::chrono::time_point<t_Clock, t_Duration> &right,
241 const typename t_Visitor::Parameters & )
244 t_Duration left_duration = left.time_since_epoch();
245 t_Duration converted_duration = std::chrono::duration_cast<t_Duration>(left_duration);
246 right = std::chrono::time_point<t_Clock, t_Duration>(converted_duration);
#define CPPUT_UNUSED_ARG(parameter)
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))
#define CPPUT_TRACE_FUNCTION