24#include "AstUtil/ReflectAPI.hpp"
57template<
typename T, TimePo
int T::* Member>
58A_ALWAYS_INLINE Property* aNewPropertyTimePointMem()
60 return _aNewPropertyTimePoint(
61 [](
const void* obj,
void* value) -> errc_t
63 *((TimePoint*)value) = ((T*)obj)->*Member;
66 [](
void* obj,
const void* value) -> errc_t
68 ((T*)obj)->*Member = *((TimePoint*)value);
75template<
typename T, TimePo
int T::* Member>
78 return aNewPropertyTimePointMem<T, Member>();
88template<
typename T, TimePo
int(T::*Getter)() const>
89A_ALWAYS_INLINE Property* aNewPropertyTimePoint()
91 return _aNewPropertyTimePoint(
92 [](
const void* obj,
void* value) -> errc_t
94 *((TimePoint*)value) = (((T*)obj)->*Getter)();
108template<
typename T, TimePo
int(T::*Getter)() const,
void (T::*Setter)(TimePo
int)>
111 A_STATIC_ASSERT_CXX14(Getter!=
nullptr,
"invalid getter");
112 A_STATIC_ASSERT_CXX14(Setter!=
nullptr,
"invalid setter");
115 [](
const void* obj,
void* value) -> errc_t
117 *((
TimePoint*)value) = (((T*)obj)->*Getter)();
120 [](
void* obj,
const void* value) -> errc_t
122 (((T*)obj)->*Setter)(*((
TimePoint*)value));
135template<
typename T, TimePo
int(T::*Getter)() const, errc_t (T::*Setter)(TimePo
int)>
136A_ALWAYS_INLINE Property* aNewPropertyTimePoint()
138 A_STATIC_ASSERT_CXX14(Getter!=
nullptr,
"invalid getter");
139 A_STATIC_ASSERT_CXX14(Setter!=
nullptr,
"invalid setter");
141 return _aNewPropertyTimePoint(
142 [](
const void* obj,
void* value) -> errc_t
144 *((TimePoint*)value) = (((T*)obj)->*Getter)();
147 [](
void* obj,
const void* value) -> errc_t
149 return (((T*)obj)->*Setter)(*((TimePoint*)value));
161template<
typename T, errc_t (T::*Getter)(TimePo
int&) const,
void (T::*Setter)(const TimePo
int&)>
164 A_STATIC_ASSERT_CXX14(Getter!=
nullptr,
"invalid getter");
165 A_STATIC_ASSERT_CXX14(Setter!=
nullptr,
"invalid setter");
168 [](
const void* obj,
void* value) -> errc_t
171 errc_t result = (
static_cast<const T*
>(obj)->*Getter)(time);
173 *
static_cast<TimePoint*
>(value) = time;
177 [](
void* obj,
const void* value) -> errc_t
179 (
static_cast<T*
>(obj)->*Setter)(*
static_cast<const TimePoint*
>(value));
186template<
typename T, const TimePo
int& (T::* Getter) () const,
void (T::* Setter)(const TimePo
int&)>
189 A_STATIC_ASSERT_CXX14(Getter!=
nullptr,
"invalid getter");
190 A_STATIC_ASSERT_CXX14(Setter!=
nullptr,
"invalid setter");
193 [](
const void* obj,
void* value) -> errc_t
195 *((TimePoint*)value) = (((T*)obj)->*Getter)();
198 [](
void* obj,
const void* value) -> errc_t
200 (((T*)obj)->*Setter)(*((TimePoint*)value));
207template<
typename T, const TimePo
int& (T::* Getter) () const, errc_t (T::* Setter)(const TimePo
int& value)>
210 A_STATIC_ASSERT_CXX14(Getter!=
nullptr,
"invalid getter");
211 A_STATIC_ASSERT_CXX14(Setter!=
nullptr,
"invalid setter");
214 [](
const void* obj,
void* value) -> errc_t
216 *((TimePoint*)value) = (((T*)obj)->*Getter)();
219 [](
void* obj,
const void* value) -> errc_t
221 return (((T*)obj)->*Setter)(*((TimePoint*)value));
绝对时间点
定义 TimePoint.hpp:106
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:76