|
@@ -78,7 +78,7 @@ protected:
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
-/// Template implementation of the attribute accessor (stores function pointers of specific class)
|
|
|
|
|
|
|
+/// Template implementation of the attribute accessor invoke helper class (stores function pointers of specific class)
|
|
|
template <class T, typename U> class AttributeAccessorImpl : public AttributeAccessor
|
|
template <class T, typename U> class AttributeAccessorImpl : public AttributeAccessor
|
|
|
{
|
|
{
|
|
|
public:
|
|
public:
|
|
@@ -92,26 +92,28 @@ public:
|
|
|
{
|
|
{
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ /// Invoke getter function
|
|
|
virtual Variant Get(Serializable* ptr)
|
|
virtual Variant Get(Serializable* ptr)
|
|
|
{
|
|
{
|
|
|
T* classPtr = static_cast<T*>(ptr);
|
|
T* classPtr = static_cast<T*>(ptr);
|
|
|
return Variant((classPtr->*getFunction_)());
|
|
return Variant((classPtr->*getFunction_)());
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ /// Invoke setter function
|
|
|
virtual void Set(Serializable* ptr, const Variant& value)
|
|
virtual void Set(Serializable* ptr, const Variant& value)
|
|
|
{
|
|
{
|
|
|
T* classPtr = static_cast<T*>(ptr);
|
|
T* classPtr = static_cast<T*>(ptr);
|
|
|
(classPtr->*setFunction_)(value.Get<U>());
|
|
(classPtr->*setFunction_)(value.Get<U>());
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- /// Class-specific pointer to get function
|
|
|
|
|
|
|
+ /// Class-specific pointer to getter function
|
|
|
GetFunctionPtr getFunction_;
|
|
GetFunctionPtr getFunction_;
|
|
|
- /// Class-specific pointer to set function
|
|
|
|
|
|
|
+ /// Class-specific pointer to setter function
|
|
|
SetFunctionPtr setFunction_;
|
|
SetFunctionPtr setFunction_;
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
-#define ATTRIBUTE(className, type, name, variable, defaultValue) context->RegisterAttribute<className>(AttributeInfo(type, name, offsetof(className, variable), 0, defaultValue, AM_BOTH))
|
|
|
|
|
-#define ATTRIBUTE_MODE(className, type, name, variable, defaultValue, mode) context->RegisterAttribute<className>(AttributeInfo(type, name, offsetof(className, variable), 0, defaultValue, mode))
|
|
|
|
|
|
|
+#define ATTRIBUTE(className, type, name, variable, defaultValue) context->RegisterAttribute<className>(AttributeInfo(type, name, offsetof(className, variable), defaultValue, AM_BOTH))
|
|
|
|
|
+#define ATTRIBUTE_MODE(className, type, name, variable, defaultValue, mode) context->RegisterAttribute<className>(AttributeInfo(type, name, offsetof(className, variable), defaultValue, mode))
|
|
|
#define ENUM_ATTRIBUTE(className, name, variable, enumNames, defaultValue) context->RegisterAttribute<className>(AttributeInfo(VAR_INT, name, offsetof(className, variable), enumNames, defaultValue, AM_BOTH))
|
|
#define ENUM_ATTRIBUTE(className, name, variable, enumNames, defaultValue) context->RegisterAttribute<className>(AttributeInfo(VAR_INT, name, offsetof(className, variable), enumNames, defaultValue, AM_BOTH))
|
|
|
#define ENUM_ATTRIBUTE_MODE(className, name, variable, enumNames, defaultValue, mode) context->RegisterAttribute<className>(AttributeInfo(VAR_INT, name, offsetof(className, variable), enumNames, defaultValue, mode))
|
|
#define ENUM_ATTRIBUTE_MODE(className, name, variable, enumNames, defaultValue, mode) context->RegisterAttribute<className>(AttributeInfo(VAR_INT, name, offsetof(className, variable), enumNames, defaultValue, mode))
|
|
|
#define ACCESSOR_ATTRIBUTE(className, type, name, getFunction, setFunction, typeName, defaultValue) context->RegisterAttribute<className>(AttributeInfo(type, name, new AttributeAccessorImpl<className, typeName>(&className::getFunction, &className::setFunction), defaultValue, AM_BOTH))
|
|
#define ACCESSOR_ATTRIBUTE(className, type, name, getFunction, setFunction, typeName, defaultValue) context->RegisterAttribute<className>(AttributeInfo(type, name, new AttributeAccessorImpl<className, typeName>(&className::getFunction, &className::setFunction), defaultValue, AM_BOTH))
|