24#include "AstUtil/ReflectAPI.hpp"
25#include "AstCore/TimePoint.hpp"
58template<
typename T, TimePo
int T::* Member>
59A_ALWAYS_INLINE Property* aNewPropertyTimePointMem()
61 return _aNewPropertyTimePoint(
62 [](
const void* obj,
void* value) -> errc_t
64 *((TimePoint*)value) = ((T*)obj)->*Member;
67 [](
void* obj,
const void* value) -> errc_t
69 ((T*)obj)->*Member = *((TimePoint*)value);
76template<
typename T, TimePo
int T::* Member>
79 return aNewPropertyTimePointMem<T, Member>();
89template<
typename T, TimePo
int(T::*Getter)() const>
90A_ALWAYS_INLINE Property* aNewPropertyTimePoint()
92 return _aNewPropertyTimePoint(
93 [](
const void* obj,
void* value) -> errc_t
95 *((TimePoint*)value) = (((T*)obj)->*Getter)();
109template<
typename T, TimePo
int(T::*Getter)() const,
void (T::*Setter)(TimePo
int)>
112 A_STATIC_ASSERT_CXX14(Getter!=
nullptr,
"invalid getter");
113 A_STATIC_ASSERT_CXX14(Setter!=
nullptr,
"invalid setter");
116 [](
const void* obj,
void* value) -> errc_t
118 *((
TimePoint*)value) = (((T*)obj)->*Getter)();
121 [](
void* obj,
const void* value) -> errc_t
123 (((T*)obj)->*Setter)(*((
TimePoint*)value));
136template<
typename T, TimePo
int(T::*Getter)() const, errc_t (T::*Setter)(TimePo
int)>
137A_ALWAYS_INLINE Property* aNewPropertyTimePoint()
139 A_STATIC_ASSERT_CXX14(Getter!=
nullptr,
"invalid getter");
140 A_STATIC_ASSERT_CXX14(Setter!=
nullptr,
"invalid setter");
142 return _aNewPropertyTimePoint(
143 [](
const void* obj,
void* value) -> errc_t
145 *((TimePoint*)value) = (((T*)obj)->*Getter)();
148 [](
void* obj,
const void* value) -> errc_t
150 return (((T*)obj)->*Setter)(*((TimePoint*)value));
162template<
typename T, errc_t (T::*Getter)(TimePo
int&) const,
void (T::*Setter)(const TimePo
int&)>
165 A_STATIC_ASSERT_CXX14(Getter!=
nullptr,
"invalid getter");
166 A_STATIC_ASSERT_CXX14(Setter!=
nullptr,
"invalid setter");
169 [](
const void* obj,
void* value) -> errc_t
172 errc_t result = (
static_cast<const T*
>(obj)->*Getter)(time);
174 *
static_cast<TimePoint*
>(value) = time;
178 [](
void* obj,
const void* value) -> errc_t
180 (
static_cast<T*
>(obj)->*Setter)(*
static_cast<const TimePoint*
>(value));
187template<
typename T, const TimePo
int& (T::* Getter) () const,
void (T::* Setter)(const TimePo
int&)>
190 A_STATIC_ASSERT_CXX14(Getter!=
nullptr,
"invalid getter");
191 A_STATIC_ASSERT_CXX14(Setter!=
nullptr,
"invalid setter");
194 [](
const void* obj,
void* value) -> errc_t
196 *((TimePoint*)value) = (((T*)obj)->*Getter)();
199 [](
void* obj,
const void* value) -> errc_t
201 (((T*)obj)->*Setter)(*((TimePoint*)value));
208template<
typename T, const TimePo
int& (T::* Getter) () const, errc_t (T::* Setter)(const TimePo
int& value)>
211 A_STATIC_ASSERT_CXX14(Getter!=
nullptr,
"invalid getter");
212 A_STATIC_ASSERT_CXX14(Setter!=
nullptr,
"invalid setter");
215 [](
const void* obj,
void* value) -> errc_t
217 *((TimePoint*)value) = (((T*)obj)->*Getter)();
220 [](
void* obj,
const void* value) -> errc_t
222 return (((T*)obj)->*Setter)(*((TimePoint*)value));
绝对时间点
定义 TimePoint.hpp:107
errc_t(*)(void *obj, const void *value) FPropertySet
设置属性值
定义 ReflectAPI.hpp:37
errc_t(*)(const void *obj, void *value) FPropertyGet
获取属性值
定义 ReflectAPI.hpp:36
Property * _aNewPropertyTimePoint(FPropertyGet getter, FPropertySet setter)
创建一个时间点属性
定义 ReflectAPI.cpp:26
A_ALWAYS_INLINE Property * aNewPropertyTimePoint()
创建一个时间点属性
定义 ReflectAPI.hpp:77