1 #ifndef UGDK_SCRIPT_VIRTUALPRIMITIVE_H_
2 #define UGDK_SCRIPT_VIRTUALPRIMITIVE_H_
13 #define TYPENAME_MAP(definition) \
14 definition(const char*, String); \
15 definition(bool, Boolean); \
16 definition(int, Integer); \
17 definition(long, Integer); \
18 definition(short, Integer); \
19 definition(float, Number); \
20 definition(double, Number);
37 return static_cast <T*> (
42 data->Wrap(const_cast<void*>(static_cast<const void*>(value)),
TypeRegistry<
typename std::remove_const<T>::type>::type(), disown);
57 return *
static_cast<T*
>(
62 data->Wrap(const_cast<void*>(static_cast<const void*>(&value)),
TypeRegistry<
typename std::remove_const<T>::type>::type(), disown);
77 system::AssertCondition<system::InvalidOperation>(disown,
"Disown must be true when extracting std::unique_ptr");
92 template <
typename T,
typename S>
94 return static_cast<T
>(value);
98 inline std::string CheckAndCast<std::string, const char*> (
const char* value) {
99 return value ? value :
"";
102 #define DEFINE_SCRIPT_PRIMITIVE_VALUE(type, name, arg) \
104 class VirtualPrimitive<type> { \
106 static type value(const VirtualData::Ptr data, bool) { \
107 return CheckAndCast<type>(data->Unwrap##name()); \
109 static void set_value(const VirtualData::Ptr data, type value, bool) { \
110 data->Wrap##name(arg); \
113 VirtualPrimitive() {} \
116 struct is_virtual_primitive<type> { static const bool value = true; }
118 #define DEFINE_SCRIPT_SIMPLE_PRIMITIVE_VALUE(type, name) \
119 DEFINE_SCRIPT_PRIMITIVE_VALUE(type, name, value)
T CheckAndCast(S value)
Definition: virtualprimitive.h:93
#define DEFINE_SCRIPT_SIMPLE_PRIMITIVE_VALUE(type, name)
Definition: virtualprimitive.h:118
static void set_value(const VirtualData::Ptr data, const T *value, bool disown)
Definition: virtualprimitive.h:41
Definition: animation.h:11
std::shared_ptr< VirtualData > Ptr
Definition: virtualdata.h:46
static T & value(const VirtualData::Ptr data, bool disown)
Definition: virtualprimitive.h:56
static void set_value(const VirtualData::Ptr data, const T &value, bool disown)
Definition: virtualprimitive.h:61
Definition: virtualprimitive.h:26
#define TYPENAME_MAP(definition)
Definition: virtualprimitive.h:13
static void set_value(const VirtualData::Ptr data, std::unique_ptr< T > value, bool disown)
Definition: virtualprimitive.h:80
static const bool value
Definition: virtualprimitive.h:23
static T * value(const VirtualData::Ptr data, bool disown)
Definition: virtualprimitive.h:36
Definition: virtualprimitive.h:23
DEFINE_SCRIPT_PRIMITIVE_VALUE(std::string, String, value.c_str())
static std::unique_ptr< T > value(const VirtualData::Ptr data, bool disown)
Definition: virtualprimitive.h:76