54AST_UTIL_API errc_t aFakeGet(
const void* container,
void* value);
61AST_UTIL_API errc_t aFakeSet(
void* container,
const void* value);
80 Property(StringView name, StringView desc, FPropertyGet getter, FPropertySet setter)
82 , getter_(getter?getter:&aFakeGet)
83 , setter_(setter?setter:&aFakeSet)
85 Property(FPropertyGet getter, FPropertySet setter)
90 ~Property() =
default;
113 virtual errc_t
getValueInt(
const void* container,
int& value) = 0;
150 double getValueDouble(
const void* container);
151 int getValueInt(
const void* container);
152 bool getValueBool(
const void* container);
153 std::string getValueString(
const void* container);
156 T getValue(
const void* container);
160 bool isObject()
const;
163 errc_t setValueObject(
void* container,
Object* value);
166 errc_t getValueObject(
const void* container,
Object*& value);
170 bool readOnly()
const {
return setter_ ==
nullptr && getter_ !=
nullptr; }
172 bool writeOnly()
const {
return setter_ !=
nullptr && getter_ ==
nullptr; }
181 return getter_(container, value);
189 errc_t
setValue(
void* container,
const void* value)
191 return setter_(container, value);
195 FPropertySet setter_ {
nullptr};
200inline double Property::getValue<double>(
const void* container)
202 return getValueDouble(container);
205inline int Property::getValue<int>(
const void* container)
207 return getValueInt(container);
210inline bool Property::getValue<bool>(
const void* container)
212 return getValueBool(container);
216inline std::string Property::getValue<std::string>(
const void* container)
218 return getValueString(container);
对象基类,继承自该类的对象可以使用运行时类型信息相关功能,实现强弱引用计数、运行时元信息(属性访问、序列化等)等基础功能
定义 Object.hpp:86
定义 PropertyVisitor.hpp:44
A_ALWAYS_INLINE errc_t setValue(void *container, const void *value)
设置属性值
定义 Property.hpp:189
virtual errc_t setValueString(void *container, StringView value)=0
设置属性值(String类型)
EPropertyFlag
属性标志位
定义 Property.hpp:70
virtual errc_t getValueDouble(const void *container, double &value)=0
bool writeOnly() const
检查属性是否为只写属性
定义 Property.hpp:172
A_ALWAYS_INLINE errc_t getValue(void *container, void *value)
获取属性值
定义 Property.hpp:179
virtual errc_t accept(PropertyVisitor &visitor, const void *container)=0
接受访问者
virtual EValueType getValueType() const =0
获取属性值类型
virtual errc_t getValueBool(const void *container, bool &value)=0
获取属性值(bool类型)
virtual errc_t setValueBool(void *container, bool value)=0
设置属性值(bool类型)
virtual errc_t setValueInt(void *container, int value)=0
设置属性值(int类型)
virtual errc_t setValueDouble(void *container, double value)=0
设置属性值(double类型)
virtual errc_t getValueInt(const void *container, int &value)=0
获取属性值(int类型)
bool readOnly() const
检查属性是否为只读属性
定义 Property.hpp:170
virtual errc_t getValueString(const void *container, std::string &value)=0
获取属性值(String类型)
errc_t(*)(const void *obj, void *value) FPropertyGet
获取属性值
定义 ReflectAPI.hpp:36
errc_t aFakeSet(void *container, const void *value)
模拟设置属性值的函数
定义 Property.cpp:34
errc_t aFakeGet(const void *container, void *value)
模拟获取属性值的函数
定义 Property.cpp:28
EValueType
定义 Property.hpp:38