OROCHI
 
Loading...
Searching...
No Matches
GxProperty.h
Go to the documentation of this file.
1//===========================================================================
9//===========================================================================
10#pragma once
11
12GX_CORE_NAMESPACE_BEGIN()
13class GxClassBaseRoot;
14class GxRtti;
15#if GX_DEVELOP
16class GxGuiBase;
17#endif //GX_DEVELOP
18
19struct GxString;
20struct GxStringW;
21struct GxRect;
22struct GxSize;
23struct GxColor;
24struct GxColorHDR;
25struct GxColorHSV;
26struct GxPoint2;
27
28struct GxVector2;
29struct GxVector3;
30struct GxVector4;
31struct GxVector2d;
32struct GxVector3d;
33struct GxVector4d;
34struct GxMatrixAffine;
35struct GxMatrix44;
36struct GxQuaternion;
37
38struct GxFlag32Base;
39
40#if GX_DEVELOP
41extern GxIdCheckTree PropertyIdCheckTree;
42#endif //GX_DEVELOP
43
44//===========================================================================
46//===========================================================================
48{
49 //-------------------------------------------------------------
51 //-------------------------------------------------------------
53public:
55 enum class TYPE
56 {
57 UNKNOWN,
58 /*変数型*/
59 CHAR,
60 S8,
61 U8,
62 S16,
63 U16,
64 S32,
65 U32,
66 S64,
67 U64,
68 F32,
69 F64,
70 B32,
71 CSTR,
72 CWSTR,
73 TEXT,
74 TEXT_W,
75 /*変数型終了*/
77 /*構造体*/
78 VECTOR2,
79 VECTOR3,
80 VECTOR4,
81 VECTOR2D,
82 VECTOR3D,
83 VECTOR4D,
84 MATRIX44,
87 SIZE,
88 RECT,
89 COLOR,
90 COLOR_HDR,
91 COLOR_HSV,
92 POINT2,
94 STRING,
95 STRING_W,
96 /*構造体終了*/
97 STRUCT,
98 /*参照*/
99 OBJECT,
100 PROPERTY,
101 /*参照終了*/
102 CUSTOM,
103 /*ポインタ*/
104 POINTER,
111 /*ポインタ終了*/
114 /*GUI整形用*/
115 SEPARATE,
116 EVENT,
118 PAGE_BEGIN,
119 PAGE_END,
120 SPAN,
121 ICON,
122
123 COUNT_MAX,
124 };
126 static constexpr u32 DEFAULT_ID = 0xffffffffL;
129 {
131 // データ属性
132 ATTRIBUTE_NAME = (1 << 0),
133 ATTRIBUTE_VALUE = (1 << 1),
134 ATTRIBUTE_DYNAMIC = (1 << 2),
135 ATTRIBUTE_ARRAY = (1 << 3),
137 ATTRIBUTE_POINTER = (1 << 5),
138 ATTRIBUTE_STRUCT = (1 << 6),
139 ATTRIBUTE_RTTI = (1 << 7),
141 // GUI属性
144 ATTRIBUTE_HIDE = (1 << 11),
145 ATTRIBUTE_EXPAND = (1 << 12),
146 ATTRIBUTE_ALIAS = (1 << 13),
148 ATTRIBUTE_SLIDER = (1 << 15),
149 };
151 static constexpr u32 ATTRIBUTE_PACK_VALUE = ATTRIBUTE_VALUE;
152 static constexpr u32 ATTRIBUTE_PACK_STRUCT = ATTRIBUTE_VALUE | ATTRIBUTE_REFERENCE | ATTRIBUTE_RTTI | ATTRIBUTE_STRUCT;
153 static constexpr u32 ATTRIBUTE_PACK_REFERENCE = ATTRIBUTE_VALUE | ATTRIBUTE_REFERENCE;
154 static constexpr u32 ATTRIBUTE_PACK_POINTER = ATTRIBUTE_VALUE | ATTRIBUTE_POINTER;
155 static constexpr u32 ATTRIBUTE_PACK_CSTR = ATTRIBUTE_READONLY | ATTRIBUTE_NOSERIALIZE;
156 static constexpr u32 ATTRIBUTE_PACK_VOID_POINTER = ATTRIBUTE_READONLY | ATTRIBUTE_NOSERIALIZE;
159 {
160 POINTER,
161 B32,
162 U32,
163 S32,
164 F32,
165 };
166 // アクセス関数ポインタ型定義
167 typedef void (GxClassBaseRoot::*GET_VALUE_FUNCTION)(void* const pValue);
168 typedef void (GxClassBaseRoot::*SET_VALUE_FUNCTION)(const void* const pValue);
169 typedef void (GxClassBaseRoot::*GET_INDEX_VALUE_FUNCTION)(void* const pValue, u32 index);
170 typedef void (GxClassBaseRoot::*SET_INDEX_VALUE_FUNCTION)(const void* const pValue, u32 index);
171 typedef u32 (GxClassBaseRoot::*GET_COUNT_FUNCTION)(void) const;
172 typedef void (GxClassBaseRoot::*SET_COUNT_FUNCTION)(u32 count);
173 // イベント関数ポインタ型定義
174 typedef void (GxClassBaseRoot::*EVENT_FUNCTION)(void);
175 typedef void (GxClassBaseRoot::*EVENT_ARGUMENT_FUNCTION_POINTER)(void* pArgument);
176 typedef void (GxClassBaseRoot::*EVENT_ARGUMENT_FUNCTION_B32)(b32 argumentB32);
177 typedef void (GxClassBaseRoot::*EVENT_ARGUMENT_FUNCTION_U32)(u32 argumentU32);
178 typedef void (GxClassBaseRoot::*EVENT_ARGUMENT_FUNCTION_S32)(s32 argumentS32);
179 typedef void (GxClassBaseRoot::*EVENT_ARGUMENT_FUNCTION_F32)(f32 argumentF32);
180 // 構造体アクセス関数ポインタ型定義
181 typedef void (GxStructBase::*STRUCT_GET_VALUE_FUNCTION)(void* const pValue);
182 typedef void (GxStructBase::*STRUCT_SET_VALUE_FUNCTION)(const void* const pValue);
183 typedef void (GxStructBase::*STRUCT_GET_INDEX_VALUE_FUNCTION)(void* const pValue, u32 index);
184 typedef void (GxStructBase::*STRUCT_SET_INDEX_VALUE_FUNCTION)(const void* const pValue, u32 index);
185 typedef u32 (GxStructBase::*STRUCT_GET_COUNT_FUNCTION)(void) const;
186 typedef void (GxStructBase::*STRUCT_SET_COUNT_FUNCTION)(u32 count);
187 // 構造体イベント関数ポインタ型定義
188 typedef void (GxStructBase::*STRUCT_EVENT_FUNCTION)(void);
189 typedef void (GxStructBase::*STRUCT_EVENT_ARGUMENT_FUNCTION_POINTER)(void* pArgument);
190 typedef void (GxStructBase::*STRUCT_EVENT_ARGUMENT_FUNCTION_B32)(b32 argumentB32);
191 typedef void (GxStructBase::*STRUCT_EVENT_ARGUMENT_FUNCTION_U32)(u32 argumentU32);
192 typedef void (GxStructBase::*STRUCT_EVENT_ARGUMENT_FUNCTION_S32)(s32 argumentS32);
193 typedef void (GxStructBase::*STRUCT_EVENT_ARGUMENT_FUNCTION_F32)(f32 argumentF32);
194 // プロパティ経由アクセス関数ポインタ型定義
195 typedef void (*PROPERTY_FUNCTION_GET_VALUE)(const GxProperty* pProperty, const GxTypedObject* pOwner, void* const pValue, u32 index);
196 typedef void (*PROPERTY_FUNCTION_SET_VALUE)(GxProperty* pProperty, GxTypedObject* pOwner, const void* const pValue, u32 index);
197 typedef void (*PROPERTY_FUNCTION_COPY_VALUE)(GxProperty* pProperty, GxTypedObject* pObjectDst, GxTypedObject* pObjectSrc, u32 index);
198 typedef void (*PROPERTY_FUNCTION_TO_STRING)(GxProperty* pProperty, GxTypedObject* pOwner, GxString& string, u32 index);
199 typedef b32 (*PROPERTY_FUNCTION_FROM_STRING)(GxProperty* pProperty, GxTypedObject* pOwner, GxString& string, u32 index);
200 typedef GxRtti& (*PROPERTY_FUNCTION_GET_RTTI)(const GxTypedObject* pObject);
202 static b32 getRttiAndValueFromString(const GxString& string, GxString& rttiName, GxString& propertyValueString);
203#if GX_DEVELOP
205 static b32 setPropertyValueFromString(GxProperty* pProperty, GxTypedObject* pOwner, u32 index, GxString propertyValueString, const GxRtti* pOwnerRtti);
206#endif //GX_DEVELOP
207
208 // データアクセスクラス
209 class GxAccessor; // データアクセス基底クラス
210 template <class T> class GxTypeAccessor; // データアクセスクラス
211 template <class T> friend class GxTypeAccessor; // フレンド用データアクセスクラス
212 class GxInstanceAccessor; // 実体アクセスクラス
213 class GxPointerAccessor; // ポインタアクセスクラス
214 class GxCustomProperty; // カスタム値登録クラス
217 {
218 static constexpr u32 NAME_LENGTH_MAX = 32;
220 u32 _size;
222 u32 _padding[1];
223 PROPERTY_FUNCTION_GET_VALUE _pFunctionGetValue;
224 PROPERTY_FUNCTION_SET_VALUE _pFunctionSetValue;
225 PROPERTY_FUNCTION_COPY_VALUE _pFunctionCopyValue;
226 PROPERTY_FUNCTION_TO_STRING _pFunctionToString;
227 PROPERTY_FUNCTION_FROM_STRING _pFunctionFromString;
228 PROPERTY_FUNCTION_GET_RTTI _pFunctionGetRtti;
229#if GX_DEVELOP
230 GX_CHAR _name[NAME_LENGTH_MAX];
231#endif //GX_DEVELOP
232 };
233
236 {
237 //-------------------------------------------------------------
239 //-------------------------------------------------------------
241 public:
243 enum class TYPE
244 {
245 SYSTEM,
246 UNIQUE,
247 };
248
250 //-------------------------------------------------------------
252 //-------------------------------------------------------------
254
258 GxFunction(size_t value, u32 count, u32 stride, TYPE functionType = TYPE::SYSTEM);
260 GxFunction(GET_VALUE_FUNCTION pGetValueFunction, SET_VALUE_FUNCTION pSetValueFunction, TYPE functionType = TYPE::SYSTEM);
262 GxFunction(GET_INDEX_VALUE_FUNCTION pGetIndexValueFunction, SET_INDEX_VALUE_FUNCTION pSetIndexValueFunction, GET_COUNT_FUNCTION pGetCountFunction, SET_COUNT_FUNCTION pSetCountFunction, TYPE functionType = TYPE::SYSTEM);
264 GxFunction(STRUCT_GET_VALUE_FUNCTION pGetValueFunction, STRUCT_SET_VALUE_FUNCTION pSetValueFunction, TYPE functionType = TYPE::SYSTEM);
266 GxFunction(STRUCT_GET_INDEX_VALUE_FUNCTION pGetIndexValueFunction, STRUCT_SET_INDEX_VALUE_FUNCTION pSetIndexValueFunction, STRUCT_GET_COUNT_FUNCTION pGetCountFunction, STRUCT_SET_COUNT_FUNCTION pSetCountFunction, TYPE functionType = TYPE::SYSTEM);
268 GxFunction(EVENT_FUNCTION pEventFunction, GxTypedObject* pOwner = nullptr, TYPE functionType = TYPE::SYSTEM);
270 GxFunction(EVENT_ARGUMENT_FUNCTION_POINTER pEventArgumentFunctionPointer, GxTypedObject* pOwner = nullptr, void* pArgument = nullptr, TYPE functionType = TYPE::SYSTEM);
272 GxFunction(EVENT_ARGUMENT_FUNCTION_B32 pEventArgumentFunctionB32, GxTypedObject* pOwner = nullptr, b32 argument = false, TYPE functionType = TYPE::SYSTEM);
274 GxFunction(EVENT_ARGUMENT_FUNCTION_U32 pEventArgumentFunctionU32, GxTypedObject* pOwner = nullptr, u32 argument = 0, TYPE functionType = TYPE::SYSTEM);
276 GxFunction(EVENT_ARGUMENT_FUNCTION_S32 pEventArgumentFunctionS32, GxTypedObject* pOwner = nullptr, s32 argument = 0, TYPE functionType = TYPE::SYSTEM);
278 GxFunction(EVENT_ARGUMENT_FUNCTION_F32 pEventArgumentFunctionF32, GxTypedObject* pOwner = nullptr, f32 argument = 0.0f, TYPE functionType = TYPE::SYSTEM);
280 GxFunction(STRUCT_EVENT_FUNCTION pEventFunction, GxTypedObject* pOwner = nullptr, TYPE functionType = TYPE::SYSTEM);
282 GxFunction(STRUCT_EVENT_ARGUMENT_FUNCTION_POINTER pEventArgumentFunctionPointer, GxTypedObject* pOwner = nullptr, void* pArgument = nullptr, TYPE functionType = TYPE::SYSTEM);
284 GxFunction(STRUCT_EVENT_ARGUMENT_FUNCTION_B32 pEventArgumentFunctionB32, GxTypedObject* pOwner = nullptr, b32 argument = false, TYPE functionType = TYPE::SYSTEM);
286 GxFunction(STRUCT_EVENT_ARGUMENT_FUNCTION_U32 pEventArgumentFunctionU32, GxTypedObject* pOwner = nullptr, u32 argument = 0, TYPE functionType = TYPE::SYSTEM);
288 GxFunction(STRUCT_EVENT_ARGUMENT_FUNCTION_S32 pEventArgumentFunctionS32, GxTypedObject* pOwner = nullptr, s32 argument = 0, TYPE functionType = TYPE::SYSTEM);
290 GxFunction(STRUCT_EVENT_ARGUMENT_FUNCTION_F32 pEventArgumentFunctionF32, GxTypedObject* pOwner = nullptr, f32 argument = 0.0f, TYPE functionType = TYPE::SYSTEM);
292 GxFunction(const GxFunction& function);
294 virtual ~GxFunction(void){}
296 const GxFunction& operator = (const GxFunction& function);
297
299 //-------------------------------------------------------------
301 //-------------------------------------------------------------
303 public:
305 void getValue(const GxTypedObject* pObject, void* const pValue) const { this->_getValue(pObject, pValue); }
307 void setValue(GxTypedObject* pObject, const void* const pValue) const { this->_setValue(pObject, pValue); }
309 void getValueIndex(const GxTypedObject* pObject, void* const pValue, u32 index) const { this->_getValueIndex(pObject, pValue, index); }
311 void setValueIndex(GxTypedObject* pObject, const void* const pValue, u32 index) const { this->_setValueIndex(pObject, pValue, index); }
313 u32 getCount(const GxTypedObject* pObject) const { return this->_getCount(pObject); }
315 void setCount(GxTypedObject* pObject, const u32 count){ this->_setCount(pObject, count); }
317 void callEvent(GxTypedObject* pObject = nullptr){ this->_callEvent(pObject); }
318
320 constexpr TYPE getType(void) const { return _functionType; }
322 constexpr void setPropertyType(GxProperty::TYPE type){ _propertyType = type; }
324 constexpr GxProperty::TYPE getPropertyType(void) const { return _propertyType; }
326 b32 getAttribute(GxProperty::ATTRIBUTE attribute) const;
328 void setAttribute(GxProperty::ATTRIBUTE attribute, b32 enable);
330 constexpr u32 getAttributeData(void) const { return _attribute; }
332 constexpr void setAttributeData(u32 attributeData){ _attribute = attributeData; }
334 GX_FORCE_INLINE GX_CSTR getVirtualName(void) const { if( getAttribute(ATTRIBUTE_VALUE) ){ return _vName; } return nullptr; }
336 GX_FORCE_INLINE void setVirtualName(GX_CSTR name){ if( getAttribute(ATTRIBUTE_VALUE) ){ _vName = name; } }
338 void* getValuePointer(const GxTypedObject* pObject, u32 index = 0) const;
340 constexpr void* getEventArgumentPointer(void) const { return _pEventArgumentPointer; }
342 constexpr GxTypedObject* getEventOwner(void) const { return _pEventOwner; }
344 constexpr void setEventOwner(GxTypedObject* pOwner) { _pEventOwner = pOwner; }
345
346 protected:
348 virtual void _getValue(const GxTypedObject* pObject, void* const pValue) const;
350 virtual void _setValue(GxTypedObject* pObject, const void* const pValue) const;
352 virtual void _getValueIndex(const GxTypedObject* pObject, void* const pValue, u32 index) const;
354 virtual void _setValueIndex(GxTypedObject* pObject, const void* const pValue, u32 index) const;
356 virtual u32 _getCount(const GxTypedObject* pObject) const;
358 virtual void _setCount(GxTypedObject* pObject, const u32 count);
360 virtual void _callEvent(GxTypedObject* /*pObject*/){}
361 private:
363 void constructSub(void);
364
366 //-------------------------------------------------------------
368 //-------------------------------------------------------------
370 protected:
374 union
375 {
377 struct
378 {
379 size_t _pValue;
381 u32 _count;
382#if defined(_PS4) || defined(_PS5)
383 u64 reserve[2];
384#endif //_PS4 || _PS5
385 GX_CSTR _vName;
386 };
388 struct
389 {
390 GET_VALUE_FUNCTION _pGetValueFunction;
391 SET_VALUE_FUNCTION _pSetValueFunction;
393 };
395 struct
396 {
397 STRUCT_GET_VALUE_FUNCTION _pGetStructValueFunction;
398 STRUCT_SET_VALUE_FUNCTION _pSetStructValueFunction;
400 };
402 struct
403 {
404 GET_INDEX_VALUE_FUNCTION _pGetValueIndexFunction;
405 SET_INDEX_VALUE_FUNCTION _pSetValueIndexFunction;
406 GET_COUNT_FUNCTION _pGetCountFunction;
407 SET_COUNT_FUNCTION _pSetCountFunction;
408 };
410 struct
411 {
412 STRUCT_GET_INDEX_VALUE_FUNCTION _pGetStructValueIndexFunction;
413 STRUCT_SET_INDEX_VALUE_FUNCTION _pSetStructValueIndexFunction;
414 STRUCT_GET_COUNT_FUNCTION _pGetStructCountFunction;
415 STRUCT_SET_COUNT_FUNCTION _pSetStructCountFunction;
416 };
418 struct
419 {
420 union
421 {
422 EVENT_FUNCTION _pEventFunction;
423 STRUCT_EVENT_FUNCTION _pStructEventFunction;
424 };
427 };
428
430 struct
431 {
432 union
433 {
435 EVENT_ARGUMENT_FUNCTION_POINTER _pEventArgumentFunctionPointer;
436 EVENT_ARGUMENT_FUNCTION_B32 _pEventArgumentFunctionB32;
437 EVENT_ARGUMENT_FUNCTION_U32 _pEventArgumentFunctionU32;
438 EVENT_ARGUMENT_FUNCTION_S32 _pEventArgumentFunctionS32;
439 EVENT_ARGUMENT_FUNCTION_F32 _pEventArgumentFunctionF32;
440 STRUCT_EVENT_ARGUMENT_FUNCTION_POINTER _pStructEventArgumentFunctionPointer;
441 STRUCT_EVENT_ARGUMENT_FUNCTION_B32 _pStructEventArgumentFunctionB32;
442 STRUCT_EVENT_ARGUMENT_FUNCTION_U32 _pStructEventArgumentFunctionU32;
443 STRUCT_EVENT_ARGUMENT_FUNCTION_S32 _pStructEventArgumentFunctionS32;
444 STRUCT_EVENT_ARGUMENT_FUNCTION_F32 _pStructEventArgumentFunctionF32;
445 };
447 union
448 {
454 };
456 };
457 };
458
460 };
461
462 // 関数テンプレートクラス
463 template <class T> class GxUniqueFunction;
464 class GxStructUniqueFunction;
465
467#if GX_DEVELOP
468 GxProperty(GX_CHAR&, const GxProperty::GxFunction& function, u32 attribute, GxRtti* pRtti, GxRtti* pOwnerRtti, u32 id, GX_CSTR name, GX_CSTR virtualName, const GX_ENUM* pEnum = nullptr, const GX_FLAG* pFlag = nullptr, u32 enumCount = 0, s32 constIndex = -1, f64 min = 0, f64 max = 0) { constructSub(TYPE::CHAR, function, attribute | ATTRIBUTE_PACK_VALUE, pRtti, pOwnerRtti, id, name, virtualName, pEnum, pFlag, enumCount, constIndex, min, max); }
469#else //GX_DEVELOP
470 GxProperty(GX_CHAR&, const GxProperty::GxFunction& function, u32 attribute, GxRtti* pRtti, GxRtti* pOwnerRtti, u32 id){ constructSub(TYPE::CHAR, function, attribute | ATTRIBUTE_PACK_VALUE, pRtti, pOwnerRtti, id); }
471#endif // !GX_DEVELOP
473 void getValue(const GxTypedObject* pObject, GX_CHAR& value, u32 index = 0) const { const GxInformation& information = getInformation(TYPE::CHAR); information._pFunctionGetValue(this, pObject, &value, index); }
475 void setValue(GxTypedObject* pObject, const GX_CHAR& value, u32 index = 0){ const GxInformation& information = getInformation(TYPE::CHAR); information._pFunctionSetValue(this, pObject, &value, index); }
476
478#if GX_DEVELOP
479 GxProperty(s8&, const GxProperty::GxFunction& function, u32 attribute, GxRtti* pRtti, GxRtti* pOwnerRtti, u32 id, GX_CSTR name, GX_CSTR virtualName, const GX_ENUM* pEnum = nullptr, const GX_FLAG* pFlag = nullptr, u32 enumCount = 0, s32 constIndex = -1, f64 min = 0, f64 max = 0){ constructSub(TYPE::S8, function, attribute | ATTRIBUTE_PACK_VALUE, pRtti, pOwnerRtti, id, name, virtualName, pEnum, pFlag, enumCount, constIndex, min, max); }
480#else //GX_DEVELOP
481 GxProperty(s8&, const GxProperty::GxFunction& function, u32 attribute, GxRtti* pRtti, GxRtti* pOwnerRtti, u32 id){ constructSub(TYPE::S8, function, attribute | ATTRIBUTE_PACK_VALUE, pRtti, pOwnerRtti, id); }
482#endif // !GX_DEVELOP
484 void getValue(const GxTypedObject* pObject, s8& value, u32 index = 0) const { const GxInformation& information = getInformation(TYPE::S8); information._pFunctionGetValue(this, pObject, &value, index); }
486 void setValue(GxTypedObject* pObject, const s8& value, u32 index = 0){ const GxInformation& information = getInformation(TYPE::S8); information._pFunctionSetValue(this, pObject, &value, index); }
487
489#if GX_DEVELOP
490 GxProperty(u8&, const GxProperty::GxFunction& function, u32 attribute, GxRtti* pRtti, GxRtti* pOwnerRtti, u32 id, GX_CSTR name, GX_CSTR virtualName, const GX_ENUM* pEnum = nullptr, const GX_FLAG* pFlag = nullptr, u32 enumCount = 0, s32 constIndex = -1, f64 min = 0, f64 max = 0){ constructSub(TYPE::U8, function, attribute | ATTRIBUTE_PACK_VALUE, pRtti, pOwnerRtti, id, name, virtualName, pEnum, pFlag, enumCount, constIndex, min, max); }
491#else //GX_DEVELOP
492 GxProperty(u8&, const GxProperty::GxFunction& function, u32 attribute, GxRtti* pRtti, GxRtti* pOwnerRtti, u32 id){ constructSub(TYPE::U8, function, attribute | ATTRIBUTE_PACK_VALUE, pRtti, pOwnerRtti, id); }
493#endif // !GX_DEVELOP
495 void getValue(const GxTypedObject* pObject, u8& value, u32 index = 0) const { const GxInformation& information = getInformation(TYPE::U8); information._pFunctionGetValue(this, pObject, &value, index); }
497 void setValue(GxTypedObject* pObject, const u8& value, u32 index = 0){ const GxInformation& information = getInformation(TYPE::U8); information._pFunctionSetValue(this, pObject, &value, index); }
498
500#if GX_DEVELOP
501 GxProperty(s16&, const GxProperty::GxFunction& function, u32 attribute, GxRtti* pRtti, GxRtti* pOwnerRtti, u32 id, GX_CSTR name, GX_CSTR virtualName, const GX_ENUM* pEnum = nullptr, const GX_FLAG* pFlag = nullptr, u32 enumCount = 0, s32 constIndex = -1, f64 min = 0, f64 max = 0){ constructSub(TYPE::S16, function, attribute | ATTRIBUTE_PACK_VALUE, pRtti, pOwnerRtti, id, name, virtualName, pEnum, pFlag, enumCount, constIndex, min, max); }
502#else //GX_DEVELOP
503 GxProperty(s16&, const GxProperty::GxFunction& function, u32 attribute, GxRtti* pRtti, GxRtti* pOwnerRtti, u32 id){ constructSub(TYPE::S16, function, attribute | ATTRIBUTE_PACK_VALUE, pRtti, pOwnerRtti, id); }
504#endif // !GX_DEVELOP
506 void getValue(const GxTypedObject* pObject, s16& value, u32 index = 0) const { const GxInformation& information = getInformation(TYPE::S16); information._pFunctionGetValue(this, pObject, &value, index); }
508 void setValue(GxTypedObject* pObject, const s16& value, u32 index = 0){ const GxInformation& information = getInformation(TYPE::S16); information._pFunctionSetValue(this, pObject, &value, index); }
509
511#if GX_DEVELOP
512 GxProperty(u16&, const GxProperty::GxFunction& function, u32 attribute, GxRtti* pRtti, GxRtti* pOwnerRtti, u32 id, GX_CSTR name, GX_CSTR virtualName, const GX_ENUM* pEnum = nullptr, const GX_FLAG* pFlag = nullptr, u32 enumCount = 0, s32 constIndex = -1, f64 min = 0, f64 max = 0){ constructSub(TYPE::U16, function, attribute | ATTRIBUTE_PACK_VALUE, pRtti, pOwnerRtti, id, name, virtualName, pEnum, pFlag, enumCount, constIndex, min, max); }
513#else //GX_DEVELOP
514 GxProperty(u16&, const GxProperty::GxFunction& function, u32 attribute, GxRtti* pRtti, GxRtti* pOwnerRtti, u32 id){ constructSub(TYPE::U16, function, attribute | ATTRIBUTE_PACK_VALUE, pRtti, pOwnerRtti, id); }
515#endif // !GX_DEVELOP
517 void getValue(const GxTypedObject* pObject, u16& value, u32 index = 0) const { const GxInformation& information = getInformation(TYPE::U16); information._pFunctionGetValue(this, pObject, &value, index); }
519 void setValue(GxTypedObject* pObject, const u16& value, u32 index = 0){ const GxInformation& information = getInformation(TYPE::U16); information._pFunctionSetValue(this, pObject, &value, index); }
520
522#if GX_DEVELOP
523 GxProperty(s32&, const GxProperty::GxFunction& function, u32 attribute, GxRtti* pRtti, GxRtti* pOwnerRtti, u32 id, GX_CSTR name, GX_CSTR virtualName, const GX_ENUM* pEnum = nullptr, const GX_FLAG* pFlag = nullptr, u32 enumCount = 0, s32 constIndex = -1, f64 min = 0, f64 max = 0) { constructSub(TYPE::S32, function, attribute | ATTRIBUTE_PACK_VALUE, pRtti, pOwnerRtti, id, name, virtualName, pEnum, pFlag, enumCount, constIndex, min, max); }
524#else //GX_DEVELOP
525 GxProperty(s32&, const GxProperty::GxFunction& function, u32 attribute, GxRtti* pRtti, GxRtti* pOwnerRtti, u32 id){ constructSub(TYPE::S32, function, attribute | ATTRIBUTE_PACK_VALUE, pRtti, pOwnerRtti, id); }
526#endif // !GX_DEVELOP
528 void getValue(const GxTypedObject* pObject, s32& value, u32 index = 0) const { const GxInformation& information = getInformation(TYPE::S32); information._pFunctionGetValue(this, pObject, &value, index); }
530 void setValue(GxTypedObject* pObject, const s32& value, u32 index = 0){ const GxInformation& information = getInformation(TYPE::S32); information._pFunctionSetValue(this, pObject, &value, index); }
531
533#if GX_DEVELOP
534 GxProperty(u32&, const GxProperty::GxFunction& function, u32 attribute, GxRtti* pRtti, GxRtti* pOwnerRtti, u32 id, GX_CSTR name, GX_CSTR virtualName, const GX_ENUM* pEnum = nullptr, const GX_FLAG* pFlag = nullptr, u32 enumCount = 0, s32 constIndex = -1, f64 min = 0, f64 max = 0){ constructSub(TYPE::U32, function, attribute | ATTRIBUTE_PACK_VALUE, pRtti, pOwnerRtti, id, name, virtualName, pEnum, pFlag, enumCount, constIndex, min, max); }
535#else //GX_DEVELOP
536 GxProperty(u32&, const GxProperty::GxFunction& function, u32 attribute, GxRtti* pRtti, GxRtti* pOwnerRtti, u32 id){ constructSub(TYPE::U32, function, attribute | ATTRIBUTE_PACK_VALUE, pRtti, pOwnerRtti, id); }
537#endif // !GX_DEVELOP
539 void getValue(const GxTypedObject* pObject, u32& value, u32 index = 0) const { const GxInformation& information = getInformation(TYPE::U32); information._pFunctionGetValue(this, pObject, &value, index); }
541 void setValue(GxTypedObject* pObject, const u32& value, u32 index = 0){ const GxInformation& information = getInformation(TYPE::U32); information._pFunctionSetValue(this, pObject, &value, index); }
542
544#if GX_DEVELOP
545 GxProperty(s64&, const GxProperty::GxFunction& function, u32 attribute, GxRtti* pRtti, GxRtti* pOwnerRtti, u32 id, GX_CSTR name, GX_CSTR virtualName, const GX_ENUM* pEnum = nullptr, const GX_FLAG* pFlag = nullptr, u32 enumCount = 0, s32 constIndex = -1, f64 min = 0, f64 max = 0){ constructSub(TYPE::S64, function, attribute | ATTRIBUTE_PACK_VALUE, pRtti, pOwnerRtti, id, name, virtualName, pEnum, pFlag, enumCount, constIndex, min, max); }
546#else //GX_DEVELOP
547 GxProperty(s64&, const GxProperty::GxFunction& function, u32 attribute, GxRtti* pRtti, GxRtti* pOwnerRtti, u32 id){ constructSub(TYPE::S64, function, attribute | ATTRIBUTE_PACK_VALUE, pRtti, pOwnerRtti, id); }
548#endif // !GX_DEVELOP
550 void getValue(const GxTypedObject* pObject, s64& value, u32 index = 0) const { const GxInformation& information = getInformation(TYPE::S64); information._pFunctionGetValue(this, pObject, &value, index); }
552 void setValue(GxTypedObject* pObject, const s64& value, u32 index = 0){ const GxInformation& information = getInformation(TYPE::S64); information._pFunctionSetValue(this, pObject, &value, index); }
553
555#if GX_DEVELOP
556 GxProperty(u64&, const GxProperty::GxFunction& function, u32 attribute, GxRtti* pRtti, GxRtti* pOwnerRtti, u32 id, GX_CSTR name, GX_CSTR virtualName, const GX_ENUM* pEnum = nullptr, const GX_FLAG* pFlag = nullptr, u32 enumCount = 0, s32 constIndex = -1, f64 min = 0, f64 max = 0){ constructSub(TYPE::U64, function, attribute | ATTRIBUTE_PACK_VALUE, pRtti, pOwnerRtti, id, name, virtualName, pEnum, pFlag, enumCount, constIndex, min, max); }
557#else //GX_DEVELOP
558 GxProperty(u64&, const GxProperty::GxFunction& function, u32 attribute, GxRtti* pRtti, GxRtti* pOwnerRtti, u32 id){ constructSub(TYPE::U64, function, attribute | ATTRIBUTE_PACK_VALUE, pRtti, pOwnerRtti, id); }
559#endif // !GX_DEVELOP
561 void getValue(const GxTypedObject* pObject, u64& value, u32 index = 0) const { const GxInformation& information = getInformation(TYPE::U64); information._pFunctionGetValue(this, pObject, &value, index); }
563 void setValue(GxTypedObject* pObject, const u64& value, u32 index = 0){ const GxInformation& information = getInformation(TYPE::U64); information._pFunctionSetValue(this, pObject, &value, index); }
564
566#if GX_DEVELOP
567 GxProperty(f32&, const GxProperty::GxFunction& function, u32 attribute, GxRtti* pRtti, GxRtti* pOwnerRtti, u32 id, GX_CSTR name, GX_CSTR virtualName, const GX_ENUM* pEnum = nullptr, const GX_FLAG* pFlag = nullptr, u32 enumCount = 0, s32 constIndex = -1, f64 min = 0, f64 max = 0){ constructSub(TYPE::F32, function, attribute | ATTRIBUTE_PACK_VALUE, pRtti, pOwnerRtti, id, name, virtualName, pEnum, pFlag, enumCount, constIndex, min, max); }
568#else //GX_DEVELOP
569 GxProperty(f32&, const GxProperty::GxFunction& function, u32 attribute, GxRtti* pRtti, GxRtti* pOwnerRtti, u32 id){ constructSub(TYPE::F32, function, attribute | ATTRIBUTE_PACK_VALUE, pRtti, pOwnerRtti, id); }
570#endif // !GX_DEVELOP
572 void getValue(const GxTypedObject* pObject, f32& value, u32 index = 0) const { const GxInformation& information = getInformation(TYPE::F32); information._pFunctionGetValue(this, pObject, &value, index); }
574 void setValue(GxTypedObject* pObject, const f32& value, u32 index = 0){ const GxInformation& information = getInformation(TYPE::F32); information._pFunctionSetValue(this, pObject, &value, index); }
575
577#if GX_DEVELOP
578 GxProperty(f64&, const GxProperty::GxFunction& function, u32 attribute, GxRtti* pRtti, GxRtti* pOwnerRtti, u32 id, GX_CSTR name, GX_CSTR virtualName, const GX_ENUM* pEnum = nullptr, const GX_FLAG* pFlag = nullptr, u32 enumCount = 0, s32 constIndex = -1, f64 min = 0, f64 max = 0){ constructSub(TYPE::F64, function, attribute | ATTRIBUTE_PACK_VALUE, pRtti, pOwnerRtti, id, name, virtualName, pEnum, pFlag, enumCount, constIndex, min, max); }
579#else //GX_DEVELOP
580 GxProperty(f64&, const GxProperty::GxFunction& function, u32 attribute, GxRtti* pRtti, GxRtti* pOwnerRtti, u32 id){ constructSub(TYPE::F64, function, attribute | ATTRIBUTE_PACK_VALUE, pRtti, pOwnerRtti, id); }
581#endif // !GX_DEVELOP
583 void getValue(const GxTypedObject* pObject, f64& value, u32 index = 0) const { const GxInformation& information = getInformation(TYPE::F64); information._pFunctionGetValue(this, pObject, &value, index); }
585 void setValue(GxTypedObject* pObject, const f64& value, u32 index = 0){ const GxInformation& information = getInformation(TYPE::F64); information._pFunctionSetValue(this, pObject, &value, index); }
586
588#if GX_DEVELOP
589 GxProperty(b32&, const GxProperty::GxFunction& function, u32 attribute, GxRtti* pRtti, GxRtti* pOwnerRtti, u32 id, GX_CSTR name, GX_CSTR virtualName, const GX_ENUM* pEnum = nullptr, const GX_FLAG* pFlag = nullptr, u32 enumCount = 0, s32 constIndex = -1, f64 min = 0, f64 max = 0){ constructSub(TYPE::B32, function, attribute | ATTRIBUTE_PACK_VALUE, pRtti, pOwnerRtti, id, name, virtualName, pEnum, pFlag, enumCount, constIndex, min, max); }
590#else //GX_DEVELOP
591 GxProperty(b32&, const GxProperty::GxFunction& function, u32 attribute, GxRtti* pRtti, GxRtti* pOwnerRtti, u32 id){ constructSub(TYPE::B32, function, attribute | ATTRIBUTE_PACK_VALUE, pRtti, pOwnerRtti, id); }
592#endif // !GX_DEVELOP
594 void getValue(const GxTypedObject* pObject, b32& value, u32 index = 0) const { const GxInformation& information = getInformation(TYPE::B32); information._pFunctionGetValue(this, pObject, &value, index); }
596 void setValue(GxTypedObject* pObject, const b32& value, u32 index = 0){ const GxInformation& information = getInformation(TYPE::B32); information._pFunctionSetValue(this, pObject, &value, index); }
597
599#if GX_DEVELOP
600 GxProperty(GX_CSTR&, const GxProperty::GxFunction& function, u32 attribute, GxRtti* pRtti, GxRtti* pOwnerRtti, u32 id, GX_CSTR name, GX_CSTR virtualName, const GX_ENUM* pEnum = nullptr, const GX_FLAG* pFlag = nullptr, u32 enumCount = 0, s32 constIndex = -1, f64 min = 0, f64 max = 0){ constructSub(TYPE::CSTR, function, attribute | ATTRIBUTE_PACK_VALUE | ATTRIBUTE_PACK_CSTR, pRtti, pOwnerRtti, id, name, virtualName, pEnum, pFlag, enumCount, constIndex, min, max); }
601#else //GX_DEVELOP
602 GxProperty(GX_CSTR&, const GxProperty::GxFunction& function, u32 attribute, GxRtti* pRtti, GxRtti* pOwnerRtti, u32 id){ constructSub(TYPE::CSTR, function, attribute | ATTRIBUTE_PACK_VALUE | ATTRIBUTE_PACK_CSTR, pRtti, pOwnerRtti, id); }
603#endif // !GX_DEVELOP
605 void getValue(const GxTypedObject* pObject, GX_CSTR& value, u32 index = 0) const { const GxInformation& information = getInformation(TYPE::CSTR); information._pFunctionGetValue(this, pObject, &value, index); }
607 void setValue(GxTypedObject* pObject, const GX_CSTR& value, u32 index = 0){ const GxInformation& information = getInformation(TYPE::CSTR); information._pFunctionSetValue(this, pObject, &value, index); }
608
610#if GX_DEVELOP
611 GxProperty(GX_CWSTR&, const GxProperty::GxFunction& function, u32 attribute, GxRtti* pRtti, GxRtti* pOwnerRtti, u32 id, GX_CSTR name, GX_CSTR virtualName, const GX_ENUM* pEnum = nullptr, const GX_FLAG* pFlag = nullptr, u32 enumCount = 0, s32 constIndex = -1, f64 min = 0, f64 max = 0){ constructSub(TYPE::CWSTR, function, attribute | ATTRIBUTE_PACK_VALUE | ATTRIBUTE_PACK_CSTR, pRtti, pOwnerRtti, id, name, virtualName, pEnum, pFlag, enumCount, constIndex, min, max); }
612#else //GX_DEVELOP
613 GxProperty(GX_CWSTR&, const GxProperty::GxFunction& function, u32 attribute, GxRtti* pRtti, GxRtti* pOwnerRtti, u32 id){ constructSub(TYPE::CWSTR, function, attribute | ATTRIBUTE_PACK_VALUE | ATTRIBUTE_PACK_CSTR, pRtti, pOwnerRtti, id); }
614#endif // !GX_DEVELOP
616 void getValue(const GxTypedObject* pObject, GX_CWSTR& value, u32 index = 0) const { const GxInformation& information = getInformation(TYPE::CWSTR); information._pFunctionGetValue(this, pObject, &value, index); }
618 void setValue(GxTypedObject* pObject, const GX_CWSTR& value, u32 index = 0){ const GxInformation& information = getInformation(TYPE::CWSTR); information._pFunctionSetValue(this, pObject, &value, index); }
619
621#if GX_DEVELOP
622 GxProperty(GxVector2&, const GxProperty::GxFunction& function, u32 attribute, GxRtti* pRtti, GxRtti* pOwnerRtti, u32 id, GX_CSTR name, GX_CSTR virtualName, const GX_ENUM* pEnum = nullptr, const GX_FLAG* pFlag = nullptr, u32 enumCount = 0, s32 constIndex = -1, f64 min = 0, f64 max = 0){ constructSub(TYPE::VECTOR2, function, attribute | ATTRIBUTE_PACK_STRUCT, pRtti, pOwnerRtti, id, name, virtualName, pEnum, pFlag, enumCount, constIndex, min, max); }
623#else //GX_DEVELOP
624 GxProperty(GxVector2&, const GxProperty::GxFunction& function, u32 attribute, GxRtti* pRtti, GxRtti* pOwnerRtti, u32 id){ constructSub(TYPE::VECTOR2, function, attribute | ATTRIBUTE_PACK_STRUCT, pRtti, pOwnerRtti, id); }
625#endif // !GX_DEVELOP
627 void getValue(const GxTypedObject* pObject, GxVector2*& value, u32 index = 0) const { const GxInformation& information = getInformation(TYPE::VECTOR2); information._pFunctionGetValue(this, pObject, &value, index); }
629 void setValue(GxTypedObject* pObject, const GxVector2* const& value, u32 index = 0){ const GxInformation& information = getInformation(TYPE::VECTOR2); information._pFunctionSetValue(this, pObject, value, index); }
630
632#if GX_DEVELOP
633 GxProperty(GxVector3&, const GxProperty::GxFunction& function, u32 attribute, GxRtti* pRtti, GxRtti* pOwnerRtti, u32 id, GX_CSTR name, GX_CSTR virtualName, const GX_ENUM* pEnum = nullptr, const GX_FLAG* pFlag = nullptr, u32 enumCount = 0, s32 constIndex = -1, f64 min = 0, f64 max = 0){ constructSub(TYPE::VECTOR3, function, attribute | ATTRIBUTE_PACK_STRUCT, pRtti, pOwnerRtti, id, name, virtualName, pEnum, pFlag, enumCount, constIndex, min, max); }
634#else //GX_DEVELOP
635 GxProperty(GxVector3&, const GxProperty::GxFunction& function, u32 attribute, GxRtti* pRtti, GxRtti* pOwnerRtti, u32 id){ constructSub(TYPE::VECTOR3, function, attribute | ATTRIBUTE_PACK_STRUCT, pRtti, pOwnerRtti, id); }
636#endif // !GX_DEVELOP
638 void getValue(const GxTypedObject* pObject, GxVector3*& value, u32 index = 0) const { const GxInformation& information = getInformation(TYPE::VECTOR3); information._pFunctionGetValue(this, pObject, &value, index); }
640 void setValue(GxTypedObject* pObject, const GxVector3* const& value, u32 index = 0){ const GxInformation& information = getInformation(TYPE::VECTOR3); information._pFunctionSetValue(this, pObject, value, index); }
641
643#if GX_DEVELOP
644 GxProperty(GxVector4&, const GxProperty::GxFunction& function, u32 attribute, GxRtti* pRtti, GxRtti* pOwnerRtti, u32 id, GX_CSTR name, GX_CSTR virtualName, const GX_ENUM* pEnum = nullptr, const GX_FLAG* pFlag = nullptr, u32 enumCount = 0, s32 constIndex = -1, f64 min = 0, f64 max = 0){ constructSub(TYPE::VECTOR4, function, attribute | ATTRIBUTE_PACK_STRUCT, pRtti, pOwnerRtti, id, name, virtualName, pEnum, pFlag, enumCount, constIndex, min, max); }
645#else //GX_DEVELOP
646 GxProperty(GxVector4&, const GxProperty::GxFunction& function, u32 attribute, GxRtti* pRtti, GxRtti* pOwnerRtti, u32 id){ constructSub(TYPE::VECTOR4, function, attribute | ATTRIBUTE_PACK_STRUCT, pRtti, pOwnerRtti, id); }
647#endif // !GX_DEVELOP
649 void getValue(const GxTypedObject* pObject, GxVector4*& value, u32 index = 0) const { const GxInformation& information = getInformation(TYPE::VECTOR4); information._pFunctionGetValue(this, pObject, &value, index); }
651 void setValue(GxTypedObject* pObject, const GxVector4* const& value, u32 index = 0){ const GxInformation& information = getInformation(TYPE::VECTOR4); information._pFunctionSetValue(this, pObject, value, index); }
652
654#if GX_DEVELOP
655 GxProperty(GxVector2d&, const GxProperty::GxFunction& function, u32 attribute, GxRtti* pRtti, GxRtti* pOwnerRtti, u32 id, GX_CSTR name, GX_CSTR virtualName, const GX_ENUM* pEnum = nullptr, const GX_FLAG* pFlag = nullptr, u32 enumCount = 0, s32 constIndex = -1, f64 min = 0, f64 max = 0) { constructSub(TYPE::VECTOR2D, function, attribute | ATTRIBUTE_PACK_STRUCT, pRtti, pOwnerRtti, id, name, virtualName, pEnum, pFlag, enumCount, constIndex, min, max); }
656#else //GX_DEVELOP
657 GxProperty(GxVector2d&, const GxProperty::GxFunction& function, u32 attribute, GxRtti* pRtti, GxRtti* pOwnerRtti, u32 id) { constructSub(TYPE::VECTOR2D, function, attribute | ATTRIBUTE_PACK_STRUCT, pRtti, pOwnerRtti, id); }
658#endif // !GX_DEVELOP
660 void getValue(const GxTypedObject* pObject, GxVector2d*& value, u32 index = 0) const { const GxInformation& information = getInformation(TYPE::VECTOR2D); information._pFunctionGetValue(this, pObject, &value, index); }
662 void setValue(GxTypedObject* pObject, const GxVector2d* const& value, u32 index = 0) { const GxInformation& information = getInformation(TYPE::VECTOR2D); information._pFunctionSetValue(this, pObject, value, index); }
663
665#if GX_DEVELOP
666 GxProperty(GxVector3d&, const GxProperty::GxFunction& function, u32 attribute, GxRtti* pRtti, GxRtti* pOwnerRtti, u32 id, GX_CSTR name, GX_CSTR virtualName, const GX_ENUM* pEnum = nullptr, const GX_FLAG* pFlag = nullptr, u32 enumCount = 0, s32 constIndex = -1, f64 min = 0, f64 max = 0) { constructSub(TYPE::VECTOR3D, function, attribute | ATTRIBUTE_PACK_STRUCT, pRtti, pOwnerRtti, id, name, virtualName, pEnum, pFlag, enumCount, constIndex, min, max); }
667#else //GX_DEVELOP
668 GxProperty(GxVector3d&, const GxProperty::GxFunction& function, u32 attribute, GxRtti* pRtti, GxRtti* pOwnerRtti, u32 id) { constructSub(TYPE::VECTOR3D, function, attribute | ATTRIBUTE_PACK_STRUCT, pRtti, pOwnerRtti, id); }
669#endif // !GX_DEVELOP
671 void getValue(const GxTypedObject* pObject, GxVector3d*& value, u32 index = 0) const { const GxInformation& information = getInformation(TYPE::VECTOR3D); information._pFunctionGetValue(this, pObject, &value, index); }
673 void setValue(GxTypedObject* pObject, const GxVector3d* const& value, u32 index = 0) { const GxInformation& information = getInformation(TYPE::VECTOR3D); information._pFunctionSetValue(this, pObject, value, index); }
674
676#if GX_DEVELOP
677 GxProperty(GxVector4d&, const GxProperty::GxFunction& function, u32 attribute, GxRtti* pRtti, GxRtti* pOwnerRtti, u32 id, GX_CSTR name, GX_CSTR virtualName, const GX_ENUM* pEnum = nullptr, const GX_FLAG* pFlag = nullptr, u32 enumCount = 0, s32 constIndex = -1, f64 min = 0, f64 max = 0) { constructSub(TYPE::VECTOR4D, function, attribute | ATTRIBUTE_PACK_STRUCT, pRtti, pOwnerRtti, id, name, virtualName, pEnum, pFlag, enumCount, constIndex, min, max); }
678#else //GX_DEVELOP
679 GxProperty(GxVector4d&, const GxProperty::GxFunction& function, u32 attribute, GxRtti* pRtti, GxRtti* pOwnerRtti, u32 id) { constructSub(TYPE::VECTOR4D, function, attribute | ATTRIBUTE_PACK_STRUCT, pRtti, pOwnerRtti, id); }
680#endif // !GX_DEVELOP
682 void getValue(const GxTypedObject* pObject, GxVector4d*& value, u32 index = 0) const { const GxInformation& information = getInformation(TYPE::VECTOR4D); information._pFunctionGetValue(this, pObject, &value, index); }
684 void setValue(GxTypedObject* pObject, const GxVector4d* const& value, u32 index = 0) { const GxInformation& information = getInformation(TYPE::VECTOR4D); information._pFunctionSetValue(this, pObject, value, index); }
685
687#if GX_DEVELOP
688 GxProperty(GxMatrix44&, const GxProperty::GxFunction& function, u32 attribute, GxRtti* pRtti, GxRtti* pOwnerRtti, u32 id, GX_CSTR name, GX_CSTR virtualName, const GX_ENUM* pEnum = nullptr, const GX_FLAG* pFlag = nullptr, u32 enumCount = 0, s32 constIndex = -1, f64 min = 0, f64 max = 0){ constructSub(TYPE::MATRIX44, function, attribute | ATTRIBUTE_PACK_STRUCT, pRtti, pOwnerRtti, id, name, virtualName, pEnum, pFlag, enumCount, constIndex, min, max); }
689#else //GX_DEVELOP
690 GxProperty(GxMatrix44&, const GxProperty::GxFunction& function, u32 attribute, GxRtti* pRtti, GxRtti* pOwnerRtti, u32 id){ constructSub(TYPE::MATRIX44, function, attribute | ATTRIBUTE_PACK_STRUCT, pRtti, pOwnerRtti, id); }
691#endif // !GX_DEVELOP
693 void getValue(const GxTypedObject* pObject, GxMatrix44*& value, u32 index = 0) const { const GxInformation& information = getInformation(TYPE::MATRIX44); information._pFunctionGetValue(this, pObject, &value, index); }
695 void setValue(GxTypedObject* pObject, const GxMatrix44* const& value, u32 index = 0){ const GxInformation& information = getInformation(TYPE::MATRIX44); information._pFunctionSetValue(this, pObject, value, index); }
696
698#if GX_DEVELOP
699 GxProperty(GxMatrixAffine&, const GxProperty::GxFunction& function, u32 attribute, GxRtti* pRtti, GxRtti* pOwnerRtti, u32 id, GX_CSTR name, GX_CSTR virtualName, const GX_ENUM* pEnum = nullptr, const GX_FLAG* pFlag = nullptr, u32 enumCount = 0, s32 constIndex = -1, f64 min = 0, f64 max = 0){ constructSub(TYPE::MATRIXAFFINE, function, attribute | ATTRIBUTE_PACK_STRUCT, pRtti, pOwnerRtti, id, name, virtualName, pEnum, pFlag, enumCount, constIndex, min, max); }
700#else //GX_DEVELOP
701 GxProperty(GxMatrixAffine&, const GxProperty::GxFunction& function, u32 attribute, GxRtti* pRtti, GxRtti* pOwnerRtti, u32 id){ constructSub(TYPE::MATRIXAFFINE, function, attribute | ATTRIBUTE_PACK_STRUCT, pRtti, pOwnerRtti, id); }
702#endif // !GX_DEVELOP
704 void getValue(const GxTypedObject* pObject, GxMatrixAffine*& value, u32 index = 0) const { const GxInformation& information = getInformation(TYPE::MATRIXAFFINE); information._pFunctionGetValue(this, pObject, &value, index); }
706 void setValue(GxTypedObject* pObject, const GxMatrixAffine* const& value, u32 index = 0){ const GxInformation& information = getInformation(TYPE::MATRIXAFFINE); information._pFunctionSetValue(this, pObject, value, index); }
707
709#if GX_DEVELOP
710 GxProperty(GxQuaternion&, const GxProperty::GxFunction& function, u32 attribute, GxRtti* pRtti, GxRtti* pOwnerRtti, u32 id, GX_CSTR name, GX_CSTR virtualName, const GX_ENUM* pEnum = nullptr, const GX_FLAG* pFlag = nullptr, u32 enumCount = 0, s32 constIndex = -1, f64 min = 0, f64 max = 0){ constructSub(TYPE::QUATERNION, function, attribute | ATTRIBUTE_PACK_STRUCT, pRtti, pOwnerRtti, id, name, virtualName, pEnum, pFlag, enumCount, constIndex, min, max); }
711#else //GX_DEVELOP
712 GxProperty(GxQuaternion&, const GxProperty::GxFunction& function, u32 attribute, GxRtti* pRtti, GxRtti* pOwnerRtti, u32 id){ constructSub(TYPE::QUATERNION, function, attribute | ATTRIBUTE_PACK_STRUCT, pRtti, pOwnerRtti, id); }
713#endif // !GX_DEVELOP
715 void getValue(const GxTypedObject* pObject, GxQuaternion*& value, u32 index = 0) const { const GxInformation& information = getInformation(TYPE::QUATERNION); information._pFunctionGetValue(this, pObject, &value, index); }
717 void setValue(GxTypedObject* pObject, const GxQuaternion* const& value, u32 index = 0){ const GxInformation& information = getInformation(TYPE::QUATERNION); information._pFunctionSetValue(this, pObject, value, index); }
718
720#if GX_DEVELOP
721 GxProperty(GxSize&, const GxProperty::GxFunction& function, u32 attribute, GxRtti* pRtti, GxRtti* pOwnerRtti, u32 id, GX_CSTR name, GX_CSTR virtualName, const GX_ENUM* pEnum = nullptr, const GX_FLAG* pFlag = nullptr, u32 enumCount = 0, s32 constIndex = -1, f64 min = 0, f64 max = 0){ constructSub(TYPE::SIZE, function, attribute | ATTRIBUTE_PACK_STRUCT, pRtti, pOwnerRtti, id, name, virtualName, pEnum, pFlag, enumCount, constIndex, min, max); }
722#else //GX_DEVELOP
723 GxProperty(GxSize&, const GxProperty::GxFunction& function, u32 attribute, GxRtti* pRtti, GxRtti* pOwnerRtti, u32 id){ constructSub(TYPE::SIZE, function, attribute | ATTRIBUTE_PACK_STRUCT, pRtti, pOwnerRtti, id); }
724#endif // !GX_DEVELOP
726 void getValue(const GxTypedObject* pObject, GxSize*& value, u32 index = 0) const { const GxInformation& information = getInformation(TYPE::SIZE); information._pFunctionGetValue(this, pObject, &value, index); }
728 void setValue(GxTypedObject* pObject, const GxSize* const& value, u32 index = 0){ const GxInformation& information = getInformation(TYPE::SIZE); information._pFunctionSetValue(this, pObject, value, index); }
729
731#if GX_DEVELOP
732 GxProperty(GxRect&, const GxProperty::GxFunction& function, u32 attribute, GxRtti* pRtti, GxRtti* pOwnerRtti, u32 id, GX_CSTR name, GX_CSTR virtualName, const GX_ENUM* pEnum = nullptr, const GX_FLAG* pFlag = nullptr, u32 enumCount = 0, s32 constIndex = -1, f64 min = 0, f64 max = 0){ constructSub(TYPE::RECT, function, attribute | ATTRIBUTE_PACK_STRUCT, pRtti, pOwnerRtti, id, name, virtualName, pEnum, pFlag, enumCount, constIndex, min, max); }
733#else //GX_DEVELOP
734 GxProperty(GxRect&, const GxProperty::GxFunction& function, u32 attribute, GxRtti* pRtti, GxRtti* pOwnerRtti, u32 id){ constructSub(TYPE::RECT, function, attribute | ATTRIBUTE_PACK_STRUCT, pRtti, pOwnerRtti, id); }
735#endif // !GX_DEVELOP
737 void getValue(const GxTypedObject* pObject, GxRect*& value, u32 index = 0) const { const GxInformation& information = getInformation(TYPE::RECT); information._pFunctionGetValue(this, pObject, &value, index); }
739 void setValue(GxTypedObject* pObject, const GxRect* const& value, u32 index = 0){ const GxInformation& information = getInformation(TYPE::RECT); information._pFunctionSetValue(this, pObject, value, index); }
740
742#if GX_DEVELOP
743 GxProperty(GxColor&, const GxProperty::GxFunction& function, u32 attribute, GxRtti* pRtti, GxRtti* pOwnerRtti, u32 id, GX_CSTR name, GX_CSTR virtualName, const GX_ENUM* pEnum = nullptr, const GX_FLAG* pFlag = nullptr, u32 enumCount = 0, s32 constIndex = -1, f64 min = 0, f64 max = 0){ constructSub(TYPE::COLOR, function, attribute | ATTRIBUTE_PACK_STRUCT, pRtti, pOwnerRtti, id, name, virtualName, pEnum, pFlag, enumCount, constIndex, min, max); }
744#else //GX_DEVELOP
745 GxProperty(GxColor&, const GxProperty::GxFunction& function, u32 attribute, GxRtti* pRtti, GxRtti* pOwnerRtti, u32 id){ constructSub(TYPE::COLOR, function, attribute | ATTRIBUTE_PACK_STRUCT, pRtti, pOwnerRtti, id); }
746#endif // !GX_DEVELOP
748 void getValue(const GxTypedObject* pObject, GxColor*& value, u32 index = 0) const { const GxInformation& information = getInformation(TYPE::COLOR); information._pFunctionGetValue(this, pObject, &value, index); }
750 void setValue(GxTypedObject* pObject, const GxColor* const& value, u32 index = 0){ const GxInformation& information = getInformation(TYPE::COLOR); information._pFunctionSetValue(this, pObject, value, index); }
751
753#if GX_DEVELOP
754 GxProperty(GxColorHDR&, const GxProperty::GxFunction& function, u32 attribute, GxRtti* pRtti, GxRtti* pOwnerRtti, u32 id, GX_CSTR name, GX_CSTR virtualName, const GX_ENUM* pEnum = nullptr, const GX_FLAG* pFlag = nullptr, u32 enumCount = 0, s32 constIndex = -1, f64 min = 0, f64 max = 0){ constructSub(TYPE::COLOR_HDR, function, attribute | ATTRIBUTE_PACK_STRUCT, pRtti, pOwnerRtti, id, name, virtualName, pEnum, pFlag, enumCount, constIndex, min, max); }
755#else //GX_DEVELOP
756 GxProperty(GxColorHDR&, const GxProperty::GxFunction& function, u32 attribute, GxRtti* pRtti, GxRtti* pOwnerRtti, u32 id){ constructSub(TYPE::COLOR_HDR, function, attribute | ATTRIBUTE_PACK_STRUCT, pRtti, pOwnerRtti, id); }
757#endif // !GX_DEVELOP
759 void getValue(const GxTypedObject* pObject, GxColorHDR*& value, u32 index = 0) const { const GxInformation& information = getInformation(TYPE::COLOR_HDR); information._pFunctionGetValue(this, pObject, &value, index); }
761 void setValue(GxTypedObject* pObject, const GxColorHDR* const& value, u32 index = 0){ const GxInformation& information = getInformation(TYPE::COLOR_HDR); information._pFunctionSetValue(this, pObject, value, index); }
762
764#if GX_DEVELOP
765 GxProperty(GxColorHSV&, const GxProperty::GxFunction& function, u32 attribute, GxRtti* pRtti, GxRtti* pOwnerRtti, u32 id, GX_CSTR name, GX_CSTR virtualName, const GX_ENUM* pEnum = nullptr, const GX_FLAG* pFlag = nullptr, u32 enumCount = 0, s32 constIndex = -1, f64 min = 0, f64 max = 0){ constructSub(TYPE::COLOR_HSV, function, attribute | ATTRIBUTE_PACK_STRUCT, pRtti, pOwnerRtti, id, name, virtualName, pEnum, pFlag, enumCount, constIndex, min, max); }
766#else //GX_DEVELOP
767 GxProperty(GxColorHSV&, const GxProperty::GxFunction& function, u32 attribute, GxRtti* pRtti, GxRtti* pOwnerRtti, u32 id){ constructSub(TYPE::COLOR_HSV, function, attribute | ATTRIBUTE_PACK_STRUCT, pRtti, pOwnerRtti, id); }
768#endif // !GX_DEVELOP
770 void getValue(const GxTypedObject* pObject, GxColorHSV*& value, u32 index = 0) const { const GxInformation& information = getInformation(TYPE::COLOR_HSV); information._pFunctionGetValue(this, pObject, &value, index); }
772 void setValue(GxTypedObject* pObject, const GxColorHSV* const& value, u32 index = 0){ const GxInformation& information = getInformation(TYPE::COLOR_HSV); information._pFunctionSetValue(this, pObject, value, index); }
773
775#if GX_DEVELOP
776 GxProperty(GxPoint2&, const GxProperty::GxFunction& function, u32 attribute, GxRtti* pRtti, GxRtti* pOwnerRtti, u32 id, GX_CSTR name, GX_CSTR virtualName, const GX_ENUM* pEnum = nullptr, const GX_FLAG* pFlag = nullptr, u32 enumCount = 0, s32 constIndex = -1, f64 min = 0, f64 max = 0){ constructSub(TYPE::POINT2, function, attribute | ATTRIBUTE_PACK_STRUCT, pRtti, pOwnerRtti, id, name, virtualName, pEnum, pFlag, enumCount, constIndex, min, max); }
777#else //GX_DEVELOP
778 GxProperty(GxPoint2&, const GxProperty::GxFunction& function, u32 attribute, GxRtti* pRtti, GxRtti* pOwnerRtti, u32 id){ constructSub(TYPE::POINT2, function, attribute | ATTRIBUTE_PACK_STRUCT, pRtti, pOwnerRtti, id); }
779#endif // !GX_DEVELOP
781 void getValue(const GxTypedObject* pObject, GxPoint2*& value, u32 index = 0) const { const GxInformation& information = getInformation(TYPE::POINT2); information._pFunctionGetValue(this, pObject, &value, index); }
783 void setValue(GxTypedObject* pObject, const GxPoint2* const& value, u32 index = 0){ const GxInformation& information = getInformation(TYPE::POINT2); information._pFunctionSetValue(this, pObject, value, index); }
784
786#if GX_DEVELOP
787 GxProperty(GxFlag32Base&, const GxProperty::GxFunction& function, u32 attribute, GxRtti* pRtti, GxRtti* pOwnerRtti, u32 id, GX_CSTR name, GX_CSTR virtualName, const GX_ENUM* pEnum = nullptr, const GX_FLAG* pFlag = nullptr, u32 enumCount = 0, s32 constIndex = -1, f64 min = 0, f64 max = 0){ constructSub(TYPE::FLAG32_BASE, function, attribute | ATTRIBUTE_PACK_STRUCT, pRtti, pOwnerRtti, id, name, virtualName, pEnum, pFlag, enumCount, constIndex, min, max); }
788#else //GX_DEVELOP
789 GxProperty(GxFlag32Base&, const GxProperty::GxFunction& function, u32 attribute, GxRtti* pRtti, GxRtti* pOwnerRtti, u32 id){ constructSub(TYPE::FLAG32_BASE, function, attribute | ATTRIBUTE_PACK_STRUCT, pRtti, pOwnerRtti, id); }
790#endif // !GX_DEVELOP
792 void getValue(const GxTypedObject* pObject, GxFlag32Base*& value, u32 index = 0) const { const GxInformation& information = getInformation(TYPE::FLAG32_BASE); information._pFunctionGetValue(this, pObject, &value, index); }
794 void setValue(GxTypedObject* pObject, const GxFlag32Base* const& value, u32 index = 0){ const GxInformation& information = getInformation(TYPE::FLAG32_BASE); information._pFunctionSetValue(this, pObject, value, index); }
795
797#if GX_DEVELOP
798 GxProperty(GxString&, const GxProperty::GxFunction& function, u32 attribute, GxRtti* pRtti, GxRtti* pOwnerRtti, u32 id, GX_CSTR name, GX_CSTR virtualName, const GX_ENUM* pEnum = nullptr, const GX_FLAG* pFlag = nullptr, u32 enumCount = 0, s32 constIndex = -1, f64 min = 0, f64 max = 0){ constructSub(TYPE::STRING, function, attribute | ATTRIBUTE_PACK_STRUCT | ATTRIBUTE_RTTI, pRtti, pOwnerRtti, id, name, virtualName, pEnum, pFlag, enumCount, constIndex, min, max); }
799#else //GX_DEVELOP
800 GxProperty(GxString&, const GxProperty::GxFunction& function, u32 attribute, GxRtti* pRtti, GxRtti* pOwnerRtti, u32 id){ constructSub(TYPE::STRING, function, attribute | ATTRIBUTE_PACK_STRUCT | ATTRIBUTE_RTTI, pRtti, pOwnerRtti, id); }
801#endif // !GX_DEVELOP
803 void getValue(const GxTypedObject* pObject, GxString*& value, u32 index = 0) const { const GxInformation& information = getInformation(TYPE::STRING); information._pFunctionGetValue(this, pObject, &value, index); }
805 void setValue(GxTypedObject* pObject, const GxString* const& value, u32 index = 0){ const GxInformation& information = getInformation(TYPE::STRING); information._pFunctionSetValue(this, pObject, value, index); }
806
808#if GX_DEVELOP
809 GxProperty(GxStringW&, const GxProperty::GxFunction& function, u32 attribute, GxRtti* pRtti, GxRtti* pOwnerRtti, u32 id, GX_CSTR name, GX_CSTR virtualName, const GX_ENUM* pEnum = nullptr, const GX_FLAG* pFlag = nullptr, u32 enumCount = 0, s32 constIndex = -1, f64 min = 0, f64 max = 0){ constructSub(TYPE::STRING_W, function, attribute | ATTRIBUTE_PACK_STRUCT | ATTRIBUTE_RTTI, pRtti, pOwnerRtti, id, name, virtualName, pEnum, pFlag, enumCount, constIndex, min, max); }
810#else //GX_DEVELOP
811 GxProperty(GxStringW&, const GxProperty::GxFunction& function, u32 attribute, GxRtti* pRtti, GxRtti* pOwnerRtti, u32 id){ constructSub(TYPE::STRING_W, function, attribute | ATTRIBUTE_PACK_STRUCT | ATTRIBUTE_RTTI, pRtti, pOwnerRtti, id); }
812#endif // !GX_DEVELOP
814 void getValue(const GxTypedObject* pObject, GxStringW*& value, u32 index = 0) const { const GxInformation& information = getInformation(TYPE::STRING_W); information._pFunctionGetValue(this, pObject, &value, index); }
816 void setValue(GxTypedObject* pObject, const GxStringW* const& value, u32 index = 0){ const GxInformation& information = getInformation(TYPE::STRING_W); information._pFunctionSetValue(this, pObject, value, index); }
817
819#if GX_DEVELOP
820 GxProperty(GxClassBaseRoot&, const GxProperty::GxFunction& function, u32 attribute, GxRtti* pRtti, GxRtti* pOwnerRtti, u32 id, GX_CSTR name, GX_CSTR virtualName, const GX_ENUM* pEnum = nullptr, const GX_FLAG* pFlag = nullptr, u32 enumCount = 0, s32 constIndex = -1, f64 min = 0, f64 max = 0){ constructSub(TYPE::OBJECT, function, attribute | ATTRIBUTE_PACK_REFERENCE | ATTRIBUTE_RTTI, pRtti, pOwnerRtti, id, name, virtualName, pEnum, pFlag, enumCount, constIndex, min, max); }
821#else //GX_DEVELOP
822 GxProperty(GxClassBaseRoot&, const GxProperty::GxFunction& function, u32 attribute, GxRtti* pRtti, GxRtti* pOwnerRtti, u32 id){ constructSub(TYPE::OBJECT, function, attribute | ATTRIBUTE_PACK_REFERENCE | ATTRIBUTE_RTTI, pRtti, pOwnerRtti, id); }
823#endif // !GX_DEVELOP
825 void getValue(const GxTypedObject* pObject, GxClassBaseRoot*& value, u32 index = 0) const{ const GxInformation& information = getInformation(TYPE::OBJECT); information._pFunctionGetValue(this, pObject, &value, index); }
827 void setValue(GxTypedObject* pObject, const GxClassBaseRoot* const& value, u32 index = 0){ const GxInformation& information = getInformation(TYPE::OBJECT); information._pFunctionSetValue(this, pObject, value, index); }
828
830#if GX_DEVELOP
831 GxProperty(GxProperty&, const GxProperty::GxFunction& function, u32 attribute, GxRtti* pRtti, GxRtti* pOwnerRtti, u32 id, GX_CSTR name, GX_CSTR virtualName, const GX_ENUM* pEnum = nullptr, const GX_FLAG* pFlag = nullptr, u32 enumCount = 0, s32 constIndex = -1, f64 min = 0, f64 max = 0){ constructSub(TYPE::PROPERTY, function, attribute | ATTRIBUTE_PACK_REFERENCE, pRtti, pOwnerRtti, id, name, virtualName, pEnum, pFlag, enumCount, constIndex, min, max); }
832#else //GX_DEVELOP
833 GxProperty(GxProperty&, const GxProperty::GxFunction& function, u32 attribute, GxRtti* pRtti, GxRtti* pOwnerRtti, u32 id){ constructSub(TYPE::PROPERTY, function, attribute | ATTRIBUTE_PACK_REFERENCE, pRtti, pOwnerRtti, id); }
834#endif // !GX_DEVELOP
836 void getValue(const GxTypedObject* pObject, GxProperty*& value, u32 index = 0) const{ const GxInformation& information = getInformation(TYPE::PROPERTY); information._pFunctionGetValue(this, pObject, &value, index); }
838 void setValue(GxTypedObject* pObject, const GxProperty* const& value, u32 index = 0){ const GxInformation& information = getInformation(TYPE::PROPERTY); information._pFunctionSetValue(this, pObject, value, index); }
839
841#if GX_DEVELOP
842 GxProperty(void*, const GxProperty::GxFunction& function, u32 attribute, GxRtti* pRtti, GxRtti* pOwnerRtti, u32 id, GX_CSTR name, GX_CSTR virtualName, const GX_ENUM* pEnum = nullptr, const GX_FLAG* pFlag = nullptr, u32 enumCount = 0, s32 constIndex = -1, f64 min = 0, f64 max = 0){ constructSub(TYPE::POINTER, function, attribute | ATTRIBUTE_PACK_POINTER | ATTRIBUTE_PACK_VOID_POINTER, pRtti, pOwnerRtti, id, name, virtualName, pEnum, pFlag, enumCount, constIndex, min, max); }
843#else //GX_DEVELOP
844 GxProperty(void*, const GxProperty::GxFunction& function, u32 attribute, GxRtti* pRtti, GxRtti* pOwnerRtti, u32 id){ constructSub(TYPE::POINTER, function, attribute | ATTRIBUTE_PACK_POINTER | ATTRIBUTE_PACK_VOID_POINTER, pRtti, pOwnerRtti, id); }
845#endif // !GX_DEVELOP
847 void getValue(const GxTypedObject* pObject, void** const ppValue, u32 index = 0) const { const GxInformation& information = getInformation(TYPE::POINTER); information._pFunctionGetValue(this, pObject, ppValue, index); }
849 void setValue(GxTypedObject* pObject, const void** const ppValue, u32 index = 0){ const GxInformation& information = getInformation(TYPE::POINTER); information._pFunctionSetValue(this, pObject, ppValue, index); }
850
852#if GX_DEVELOP
853 GxProperty(GxString*, const GxProperty::GxFunction& function, u32 attribute, GxRtti* pRtti, GxRtti* pOwnerRtti, u32 id, GX_CSTR name, GX_CSTR virtualName, const GX_ENUM* pEnum = nullptr, const GX_FLAG* pFlag = nullptr, u32 enumCount = 0, s32 constIndex = -1, f64 min = 0, f64 max = 0){ constructSub(TYPE::STRING_POINTER, function, attribute | ATTRIBUTE_PACK_POINTER | ATTRIBUTE_RTTI, pRtti, pOwnerRtti, id, name, virtualName, pEnum, pFlag, enumCount, constIndex, min, max); }
854#else //GX_DEVELOP
855 GxProperty(GxString*, const GxProperty::GxFunction& function, u32 attribute, GxRtti* pRtti, GxRtti* pOwnerRtti, u32 id){ constructSub(TYPE::STRING_POINTER, function, attribute | ATTRIBUTE_PACK_POINTER | ATTRIBUTE_RTTI, pRtti, pOwnerRtti, id); }
856#endif // !GX_DEVELOP
858 void getValue(const GxTypedObject* pObject, GxString** const ppValue, u32 index = 0) const { const GxInformation& information = getInformation(TYPE::STRING_POINTER); information._pFunctionGetValue(this, pObject, ppValue, index); }
860 void setValue(GxTypedObject* pObject, const GxString** const ppValue, u32 index = 0){ const GxInformation& information = getInformation(TYPE::STRING_POINTER); information._pFunctionSetValue(this, pObject, ppValue, index); }
861
863#if GX_DEVELOP
864 GxProperty(GxStringW*, const GxProperty::GxFunction& function, u32 attribute, GxRtti* pRtti, GxRtti* pOwnerRtti, u32 id, GX_CSTR name, GX_CSTR virtualName, const GX_ENUM* pEnum = nullptr, const GX_FLAG* pFlag = nullptr, u32 enumCount = 0, s32 constIndex = -1, f64 min = 0, f64 max = 0){ constructSub(TYPE::STRING_W_POINTER, function, attribute | ATTRIBUTE_PACK_POINTER | ATTRIBUTE_RTTI, pRtti, pOwnerRtti, id, name, virtualName, pEnum, pFlag, enumCount, constIndex, min, max); }
865#else //GX_DEVELOP
866 GxProperty(GxStringW*, const GxProperty::GxFunction& function, u32 attribute, GxRtti* pRtti, GxRtti* pOwnerRtti, u32 id){ constructSub(TYPE::STRING_W_POINTER, function, attribute | ATTRIBUTE_PACK_POINTER | ATTRIBUTE_RTTI, pRtti, pOwnerRtti, id); }
867#endif // !GX_DEVELOP
869 void getValue(const GxTypedObject* pObject, GxStringW** const ppValue, u32 index = 0) const { const GxInformation& information = getInformation(TYPE::STRING_W_POINTER); information._pFunctionGetValue(this, pObject, ppValue, index); }
871 void setValue(GxTypedObject* pObject, const GxStringW** const ppValue, u32 index = 0){ const GxInformation& information = getInformation(TYPE::STRING_W_POINTER); information._pFunctionSetValue(this, pObject, ppValue, index); }
872
874#if GX_DEVELOP
875 GxProperty(GxClassBaseRoot*, const GxProperty::GxFunction& function, u32 attribute, GxRtti* pRtti, GxRtti* pOwnerRtti, u32 id, GX_CSTR name, GX_CSTR virtualName, const GX_ENUM* pEnum = nullptr, const GX_FLAG* pFlag = nullptr, u32 enumCount = 0, s32 constIndex = -1, f64 min = 0, f64 max = 0){ constructSub(TYPE::OBJECT_POINTER, function, attribute | ATTRIBUTE_PACK_POINTER | ATTRIBUTE_RTTI, pRtti, pOwnerRtti, id, name, virtualName, pEnum, pFlag, enumCount, constIndex, min, max); }
876#else //GX_DEVELOP
877 GxProperty(GxClassBaseRoot*, const GxProperty::GxFunction& function, u32 attribute, GxRtti* pRtti, GxRtti* pOwnerRtti, u32 id){ constructSub(TYPE::OBJECT_POINTER, function, attribute | ATTRIBUTE_PACK_POINTER | ATTRIBUTE_RTTI, pRtti, pOwnerRtti, id); }
878#endif // !GX_DEVELOP
880 void getValue(const GxTypedObject* pObject, GxClassBaseRoot** const ppValue, u32 index = 0) const { const GxInformation& information = getInformation(TYPE::OBJECT_POINTER); information._pFunctionGetValue(this, pObject, ppValue, index); }
882 void setValue(GxTypedObject* pObject, const GxClassBaseRoot** const ppValue, u32 index = 0){ const GxInformation& information = getInformation(TYPE::OBJECT_POINTER); information._pFunctionSetValue(this, pObject, ppValue, index); }
883
885#if GX_DEVELOP
886 GxProperty(const GxRtti*, const GxProperty::GxFunction& function, u32 attribute, GxRtti* pRtti, GxRtti* pOwnerRtti, u32 id, GX_CSTR name, GX_CSTR virtualName, const GX_ENUM* pEnum = nullptr, const GX_FLAG* pFlag = nullptr, u32 enumCount = 0, s32 constIndex = -1, f64 min = 0, f64 max = 0){ constructSub(TYPE::RTTI_POINTER, function, attribute | ATTRIBUTE_PACK_POINTER, pRtti, pOwnerRtti, id, name, virtualName, pEnum, pFlag, enumCount, constIndex, min, max); }
887#else //GX_DEVELOP
888 GxProperty(const GxRtti*, const GxProperty::GxFunction& function, u32 attribute, GxRtti* pRtti, GxRtti* pOwnerRtti, u32 id){ constructSub(TYPE::RTTI_POINTER, function, attribute | ATTRIBUTE_PACK_POINTER, pRtti, pOwnerRtti, id); }
889#endif // !GX_DEVELOP
891 void getValue(const GxTypedObject* pObject, const GxRtti** const ppValue, u32 index = 0) const { const GxInformation& information = getInformation(TYPE::RTTI_POINTER); information._pFunctionGetValue(this, pObject, ppValue, index); }
893 void setValue(GxTypedObject* pObject, const GxRtti** const ppValue, u32 index = 0){ const GxInformation& information = getInformation(TYPE::RTTI_POINTER); information._pFunctionSetValue(this, pObject, ppValue, index); }
894
896#if GX_DEVELOP
897 GxProperty(GxProperty*, const GxProperty::GxFunction& function, u32 attribute, GxRtti* pRtti, GxRtti* pOwnerRtti, u32 id, GX_CSTR name, GX_CSTR virtualName, const GX_ENUM* pEnum = nullptr, const GX_FLAG* pFlag = nullptr, u32 enumCount = 0, s32 constIndex = -1, f64 min = 0, f64 max = 0){ constructSub(TYPE::PROPERTY_POINTER, function, attribute | ATTRIBUTE_PACK_POINTER, pRtti, pOwnerRtti, id, name, virtualName, pEnum, pFlag, enumCount, constIndex, min, max); }
898#else //GX_DEVELOP
899 GxProperty(GxProperty*, const GxProperty::GxFunction& function, u32 attribute, GxRtti* pRtti, GxRtti* pOwnerRtti, u32 id){ constructSub(TYPE::PROPERTY_POINTER, function, attribute | ATTRIBUTE_PACK_POINTER, pRtti, pOwnerRtti, id); }
900#endif // !GX_DEVELOP
902 void getValue(const GxTypedObject* pObject, GxProperty** const ppValue, u32 index = 0) const { const GxInformation& information = getInformation(TYPE::PROPERTY_POINTER); information._pFunctionGetValue(this, pObject, ppValue, index); }
904 void setValue(GxTypedObject* pObject, const GxProperty** const ppValue, u32 index = 0){ const GxInformation& information = getInformation(TYPE::PROPERTY_POINTER); information._pFunctionSetValue(this, pObject, ppValue, index); }
905
907#if GX_DEVELOP
908 GxProperty(const gx::core::GxFunction*, const GxProperty::GxFunction& function, u32 attribute, GxRtti* pRtti, GxRtti* pOwnerRtti, u32 id, GX_CSTR name, GX_CSTR virtualName, const GX_ENUM* pEnum = nullptr, const GX_FLAG* pFlag = nullptr, u32 enumCount = 0, s32 constIndex = -1, f64 min = 0, f64 max = 0)
909 {
910 if (attribute & ATTRIBUTE_DYNAMIC_FUNCTION)
911 {
912 constructSub(TYPE::OBJECT_POINTER, function, attribute | ATTRIBUTE_PACK_POINTER | ATTRIBUTE_RTTI, pRtti, pOwnerRtti, id, name, virtualName, pEnum, pFlag, enumCount, constIndex, min, max);
913 }
914 else
915 {
916 constructSub(TYPE::FUNCTION_POINTER, function, attribute | ATTRIBUTE_PACK_POINTER, pRtti, pOwnerRtti, id, name, virtualName, pEnum, pFlag, enumCount, constIndex, min, max);
917 }
918 }
919#else //GX_DEVELOP
920 GxProperty(const gx::core::GxFunction*, const GxProperty::GxFunction& function, u32 attribute, GxRtti* pRtti, GxRtti* pOwnerRtti, u32 id)
921 {
922 if (attribute & ATTRIBUTE_DYNAMIC_FUNCTION)
923 {
924 constructSub(TYPE::OBJECT_POINTER, function, attribute | ATTRIBUTE_PACK_POINTER | ATTRIBUTE_RTTI, pRtti, pOwnerRtti, id);
925 }
926 else
927 {
928 constructSub(TYPE::FUNCTION_POINTER, function, attribute | ATTRIBUTE_PACK_POINTER, pRtti, pOwnerRtti, id);
929 }
930 }
931#endif // !GX_DEVELOP
933 void getValue(const GxTypedObject* pObject, const GxFunction** const ppValue, u32 index = 0) const { const GxInformation& information = getInformation(isAttribute(ATTRIBUTE_DYNAMIC_FUNCTION) ? TYPE::OBJECT_POINTER : TYPE::FUNCTION_POINTER); information._pFunctionGetValue(this, pObject, ppValue, index); }
935 void setValue(GxTypedObject* pObject, const GxFunction** const ppValue, u32 index = 0) { const GxInformation& information = getInformation(isAttribute(ATTRIBUTE_DYNAMIC_FUNCTION) ? TYPE::OBJECT_POINTER : TYPE::FUNCTION_POINTER); information._pFunctionSetValue(this, pObject, ppValue, index); }
936
938 void reflectValue(GxTypedObject* pObject, u32 index = 0);
939
941 //-------------------------------------------------------------
943 //-------------------------------------------------------------
945
947 GxProperty(void) : _pRtti(nullptr), _pOwnerRtti(nullptr), _id(DEFAULT_ID)
948#if GX_DEVELOP
949 , _pEnum(nullptr), _enumCount(0), _name(nullptr), _constIndex(-1), _min(0), _max(0)
950#endif //GX_DEVELOP
951 {}
952
954 GxProperty(TYPE type, const GxProperty::GxFunction& function, u32 attribute, GxRtti* pRtti, GxRtti* pOwnerRtti, u32 id
955#if GX_DEVELOP
956 , GX_CSTR name, GX_CSTR vname, const GX_ENUM* pEnum = nullptr, const GX_FLAG* pFlag = nullptr, u32 enumCount = 0, s32 constIndex = -1, f64 min = 0, f64 max = 0
957#endif //GX_DEVELOP
958 );
959
961 static void initialize(void);
962
963private:
965 void constructSub(TYPE type, const GxProperty::GxFunction& function, u32 attribute, GxRtti* pRtti, GxRtti* pOwnerRtti, u32 id
966#if GX_DEVELOP
967 , GX_CSTR name, GX_CSTR vname, const GX_ENUM* pEnum = nullptr, const GX_FLAG* pFlag = nullptr, u32 enumCount = 0, s32 constIndex = -1, f64 min = 0, f64 max = 0
968#endif //GX_DEVELOP
969 );
970
972 //-------------------------------------------------------------
974 //-------------------------------------------------------------
976public:
978 GxProperty& operator = (const GxProperty& property);
979#if GX_DEVELOP
981 b32 operator == (GX_CSTR string) const;
983 b32 operator != (GX_CSTR string) const;
984#endif //GX_DEVELOP
985
987 //-------------------------------------------------------------
989 //-------------------------------------------------------------
991
993 void callEvent(GxTypedObject* pObject = nullptr);
994#if GX_DEVELOP
996 void trace(GxTypedObject* pObject);
997private:
999 template<class T> void traceBasetype(GxTypedObject* pObject);
1001 template<class T> void traceStruct(GxTypedObject* pObject);
1002#endif //GX_DEVELOP
1003
1005 //-------------------------------------------------------------
1007 //-------------------------------------------------------------
1009public:
1011 constexpr u32 getId(void) const { return _id; }
1013 constexpr void setId(u32 id) { _id = id; }
1015 u32 getArrayCount(const GxTypedObject* pObject) const;
1017 void setArrayCount(GxTypedObject* pObject, u32 count);
1019 GxInformation& getInformation(void) const { return _information[static_cast<s32>(getType())]; }
1021 static GxInformation& getInformation(GxProperty::TYPE type){ return _information[static_cast<s32>(type)]; }
1023 GxRtti* getRttiPointer(const GxTypedObject* pOwner = nullptr, const u32 index = 0) const;
1025 const GxFunction& getFunction(void) const { return _function; }
1027 constexpr GxRtti* getMemberRtti(void) const { return _pRtti; }
1029 constexpr void setMemberRtti(GxRtti* pRtti){ _pRtti = pRtti; }
1031 constexpr GxRtti* getOwnerRtti(void) const { return _pOwnerRtti; }
1033 constexpr void setOwnerRtti(GxRtti* pOwnerRtti){ _pOwnerRtti = pOwnerRtti; }
1035 b32 isStructCustomProperty(void) const;
1037 static GxCustomProperty* getCustomProperty(const GxRtti* pRtti);
1039 static GxCustomProperty* getCustomProperty(u32 id);
1040#if GX_DEVELOP
1042 static GxCustomProperty* getCustomProperty(GX_CSTR name);
1043#endif //GX_DEVELOP
1045 static void registerCustomProperty(GxCustomProperty* pCustomProperty);
1047 static constexpr void* getDummyBuffer(void){ return static_cast<void*>(_dummyBuffer); }
1049 b32 isEvent(void) const { return (getType() == TYPE::EVENT) || (getType() == TYPE::EVENT_ARGUMENT); }
1050#if GX_DEVELOP
1052 GX_FORCE_INLINE GX_CSTR getName(void) const { return (isAttribute(ATTRIBUTE_NAME) ? _name : nullptr); }
1054 GX_FORCE_INLINE static GX_CSTR getName(GxProperty::TYPE type){ return getInformation(type)._name; }
1056 constexpr void setName(GX_CSTR name){ _name = name; }
1058 GX_CSTR getVirtualName(void) const;
1060 void setVirtualName( GX_CSTR name );
1062 GX_CSTR getFormalName(void) const;
1064 GX_FORCE_INLINE GX_CSTR getTypeName(void) const { return getInformation(getType())._name; }
1066 constexpr GX_ENUM* getEnum(void) const { return _pEnum; }
1068 constexpr GX_FLAG* getFlag(void) const { return _pFlag; }
1070 constexpr u32 getEnumCount(void) const { return _enumCount; }
1072 constexpr f64 getMin(void) const { return _min; }
1074 constexpr f64 getMax(void) const { return _max; }
1075#endif //GX_DEVELOP
1077 GX_FORCE_INLINE b32 isAttribute(ATTRIBUTE attribute) const { return _function.getAttribute(attribute); }
1079 GX_FORCE_INLINE void setAttribute(ATTRIBUTE attribute, b32 enable){ _function.setAttribute(attribute, enable); }
1081 constexpr u32 getAttributeData(void) const { return _function.getAttributeData(); }
1083 constexpr GxProperty::TYPE getType(void) const { return _function.getPropertyType(); }
1084#if GX_DEVELOP
1086 static GxProperty::TYPE getType(GX_CSTR name);
1087#endif //GX_DEVELOP
1089 constexpr void setType(GxProperty::TYPE type) { _function.setPropertyType(type); }
1090
1092 //-------------------------------------------------------------
1094 //-------------------------------------------------------------
1096
1097private:
1098 static GxInformation _information[static_cast<s32>(TYPE::COUNT_MAX)];
1099 static GxCustomProperty* _pCustomProperty;
1100 static b32 _initialFlag;
1101 GX_ALIGN16_BEGIN static GX_CHAR _dummyBuffer[16] GX_ALIGN16_END;
1102 GxFunction _function;
1103 GxRtti* _pRtti;
1104 GxRtti* _pOwnerRtti;
1105 u32 _id;
1106#if GX_DEVELOP
1107 union
1108 {
1109 GX_ENUM* _pEnum;
1110 GX_FLAG* _pFlag;
1111 };
1112 u32 _enumCount;
1113 GX_CSTR _name;
1114 s32 _constIndex;
1115 f64 _min;
1116 f64 _max;
1117#endif //GX_DEVELOP
1118
1120};
1121
1122//===========================================================================
1124//===========================================================================
1125template <class T>
1127{
1128 //-------------------------------------------------------------
1130 //-------------------------------------------------------------
1132public:
1133 typedef void (T::*GET_VALUE_FUNCTION)(void* const pValue);
1134 typedef void (T::*SET_VALUE_FUNCTION)(const void* const pValue);
1135 typedef void (T::*GET_INDEX_VALUE_FUNCTION)(void* const pValue, u32 index);
1136 typedef void (T::*SET_INDEX_VALUE_FUNCTION)(const void* const pValue, u32 index);
1137
1138 typedef u32 (T::*GET_COUNT_FUNCTION)(void) const;
1139 typedef void (T::*SET_COUNT_FUNCTION)(u32 count);
1140
1141 typedef void (T::*EVENT_FUNCTION)(void);
1142 typedef void (T::*EVENT_ARGUMENT_FUNCTION_POINTER)(void* pArgument);
1143 typedef void (T::*EVENT_ARGUMENT_FUNCTION_B32)(b32 argumentB32);
1144 typedef void (T::*EVENT_ARGUMENT_FUNCTION_U32)(u32 argumentU32);
1145 typedef void (T::*EVENT_ARGUMENT_FUNCTION_S32)(s32 argumentS32);
1146 typedef void (T::*EVENT_ARGUMENT_FUNCTION_F32)(f32 argumentF32);
1147
1149 //-------------------------------------------------------------
1151 //-------------------------------------------------------------
1153
1157 GxUniqueFunction(void* pValue, u32 count, u32 stride)
1158#if defined(_PS4) || defined(_NX64) || defined(_PS5)
1159 : GxFunction((size_t)pValue, count, stride, TYPE::UNIQUE){}
1160#else //_PS4 || _NX64 || _PS5
1161 : GxFunction(pValue, count, stride, TYPE::UNIQUE){}
1162#endif // !(_PS4 || _NX64 || _PS5)
1164 GxUniqueFunction(GET_VALUE_FUNCTION pGetValueFunction, SET_VALUE_FUNCTION pSetValueFunction)
1165 : GxFunction((GxProperty::GET_VALUE_FUNCTION)pGetValueFunction, (GxProperty::SET_VALUE_FUNCTION)pSetValueFunction, TYPE::UNIQUE){}
1167 GxUniqueFunction(GET_INDEX_VALUE_FUNCTION pGetIndexValueFunction, SET_INDEX_VALUE_FUNCTION pSetIndexValueFunction, GET_COUNT_FUNCTION pGetCountFunction, SET_COUNT_FUNCTION pSetCountFunction)
1168 : GxFunction((GxProperty::GET_INDEX_VALUE_FUNCTION)pGetIndexValueFunction, (GxProperty::SET_INDEX_VALUE_FUNCTION)pSetIndexValueFunction, (GxProperty::GET_COUNT_FUNCTION)pGetCountFunction, (GxProperty::SET_COUNT_FUNCTION)pSetCountFunction, TYPE::UNIQUE){}
1170 GxUniqueFunction(EVENT_FUNCTION pEventFunction, GxTypedObject* pOwner=nullptr)
1171 : GxFunction((GxProperty::EVENT_FUNCTION)pEventFunction, pOwner, TYPE::UNIQUE){}
1173 GxUniqueFunction(EVENT_ARGUMENT_FUNCTION_POINTER pEventArgumentFunctionPointer, GxTypedObject* pOwner = nullptr, void* pArgument = nullptr)
1174 : GxFunction((GxProperty::EVENT_ARGUMENT_FUNCTION_POINTER)pEventArgumentFunctionPointer, pOwner, pArgument, TYPE::UNIQUE){}
1176 GxUniqueFunction(EVENT_ARGUMENT_FUNCTION_B32 pEventArgumentFunctionB32, GxTypedObject* pOwner = nullptr, b32 argumentB32 = false)
1177 : GxFunction((GxProperty::EVENT_ARGUMENT_FUNCTION_B32)pEventArgumentFunctionB32, pOwner, argumentB32, TYPE::UNIQUE){}
1179 GxUniqueFunction(EVENT_ARGUMENT_FUNCTION_U32 pEventArgumentFunctionU32, GxTypedObject* pOwner = nullptr, u32 argumentU32 = 0)
1180 : GxFunction((GxProperty::EVENT_ARGUMENT_FUNCTION_U32)pEventArgumentFunctionU32, pOwner, argumentU32, TYPE::UNIQUE){}
1182 GxUniqueFunction(EVENT_ARGUMENT_FUNCTION_S32 pEventArgumentFunctionS32, GxTypedObject* pOwner = nullptr, s32 argumentS32 = 0)
1183 : GxFunction((GxProperty::EVENT_ARGUMENT_FUNCTION_S32)pEventArgumentFunctionS32, pOwner, argumentS32, TYPE::UNIQUE){}
1185 GxUniqueFunction(EVENT_ARGUMENT_FUNCTION_F32 pEventArgumentFunctionF32, GxTypedObject* pOwner = nullptr, f32 argumentF32 = 0.0f)
1186 : GxFunction((GxProperty::EVENT_ARGUMENT_FUNCTION_F32)pEventArgumentFunctionF32, pOwner, argumentF32, TYPE::UNIQUE){}
1187
1189 //-------------------------------------------------------------
1191 //-------------------------------------------------------------
1193protected:
1195 void _getValue(const GxTypedObject* pObject, void* const pValue) const override { return (((T*)pObject)->*_pGetValueFunction)(pValue); }
1197 void _setValue(GxTypedObject* pObject, const void* const pValue) const override { ((static_cast<T*>(pObject))->*_pSetValueFunction)(pValue); }
1199 void _getValueIndex(const GxTypedObject* pObject, void* const pValue, u32 index) const override { (((T*)pObject)->*_pGetValueIndexFunction)(pValue, index); }
1201 void _setValueIndex(GxTypedObject* pObject, const void* const pValue, u32 index) const override { ((static_cast<T*>(pObject))->*_pSetValueIndexFunction)(pValue, index); }
1203 u32 _getCount(const GxTypedObject* pObject) const override { return ((static_cast<T*>(const_cast<GxTypedObject*>(pObject)))->*_pGetCountFunction)(); }
1205 void _setCount(GxTypedObject* pObject, const u32 count) override { ((static_cast<T*>(pObject))->*_pSetCountFunction)(count); }
1207 void _callEvent(GxTypedObject* pObject = nullptr) override;
1208
1210};
1211
1212//---------------------------------------------------------------------------
1213// イベントを呼び出す
1214//---------------------------------------------------------------------------
1215template <class T>
1217{
1218 switch( _propertyType )
1219 {
1221 {
1222 if( _pEventOwner )
1223 {
1224 ((static_cast<T*>(_pEventOwner))->*_pEventFunction)();
1225 }
1226 else
1227 {
1228 ((static_cast<T*>(pObject))->*_pEventFunction)();
1229 }
1230 }
1231 break;
1233 {
1234 if( _pEventArgumentOwner )
1235 {
1236 switch( _eventArgumentType )
1237 {
1238 case EVENT_ARGUMENT_TYPE::POINTER:
1239 ((static_cast<T*>(_pEventArgumentOwner))->*_pEventArgumentFunctionPointer)(_pEventArgumentPointer);
1240 break;
1241 case EVENT_ARGUMENT_TYPE::B32:
1242 ((static_cast<T*>(_pEventArgumentOwner))->*_pEventArgumentFunctionB32)(_eventArgumentB32);
1243 break;
1244 case EVENT_ARGUMENT_TYPE::U32:
1245 ((static_cast<T*>(_pEventArgumentOwner))->*_pEventArgumentFunctionU32)(_eventArgumentU32);
1246 break;
1247 case EVENT_ARGUMENT_TYPE::S32:
1248 ((static_cast<T*>(_pEventArgumentOwner))->*_pEventArgumentFunctionS32)(_eventArgumentS32);
1249 break;
1250 case EVENT_ARGUMENT_TYPE::F32:
1251 ((static_cast<T*>(_pEventArgumentOwner))->*_pEventArgumentFunctionF32)(_eventArgumentF32);
1252 break;
1253 }
1254 }
1255 else
1256 {
1257 switch( _eventArgumentType )
1258 {
1259 case EVENT_ARGUMENT_TYPE::POINTER:
1260 ((static_cast<T*>(pObject))->*_pEventArgumentFunctionPointer)(_pEventArgumentPointer);
1261 break;
1262 case EVENT_ARGUMENT_TYPE::B32:
1263 ((static_cast<T*>(pObject))->*_pEventArgumentFunctionB32)(_eventArgumentB32);
1264 break;
1265 case EVENT_ARGUMENT_TYPE::U32:
1266 ((static_cast<T*>(pObject))->*_pEventArgumentFunctionU32)(_eventArgumentU32);
1267 break;
1268 case EVENT_ARGUMENT_TYPE::S32:
1269 ((static_cast<T*>(pObject))->*_pEventArgumentFunctionS32)(_eventArgumentS32);
1270 break;
1271 case EVENT_ARGUMENT_TYPE::F32:
1272 ((static_cast<T*>(pObject))->*_pEventArgumentFunctionF32)(_eventArgumentF32);
1273 break;
1274 }
1275 }
1276 }
1277 break;
1278 default:
1279 break;
1280 }
1281}
1282
1283//===========================================================================
1285//===========================================================================
1287{
1288 //-------------------------------------------------------------
1290 //-------------------------------------------------------------
1292public:
1296 GxStructUniqueFunction(void* pValue, u32 count, u32 stride)
1297 : GxFunction(static_cast<s32>(reinterpret_cast<size_t>(pValue)), count, stride, TYPE::UNIQUE){}
1299 GxStructUniqueFunction(GxProperty::STRUCT_GET_VALUE_FUNCTION pGetValueFunction, GxProperty::STRUCT_SET_VALUE_FUNCTION pSetValueFunction)
1300 : GxFunction(pGetValueFunction, pSetValueFunction, TYPE::UNIQUE){}
1302 GxStructUniqueFunction(GxProperty::STRUCT_GET_INDEX_VALUE_FUNCTION pGetIndexValueFunction, GxProperty::STRUCT_SET_INDEX_VALUE_FUNCTION pSetIndexValueFunction, GxProperty::STRUCT_GET_COUNT_FUNCTION pGetCountFunction, GxProperty::STRUCT_SET_COUNT_FUNCTION pSetCountFunction)
1303 : GxFunction(pGetIndexValueFunction, pSetIndexValueFunction, pGetCountFunction, pSetCountFunction, TYPE::UNIQUE){}
1305 GxStructUniqueFunction(GxProperty::STRUCT_EVENT_FUNCTION pEventFunction, GxTypedObject* pOwner = nullptr)
1306 : GxFunction(pEventFunction, pOwner, TYPE::UNIQUE){}
1308 GxStructUniqueFunction(GxProperty::STRUCT_EVENT_ARGUMENT_FUNCTION_POINTER pEventArgumentFunctionPointer, GxTypedObject* pOwner = nullptr, void* pArgument = nullptr)
1309 : GxFunction(pEventArgumentFunctionPointer, pOwner, pArgument, TYPE::UNIQUE){}
1311 GxStructUniqueFunction(GxProperty::STRUCT_EVENT_ARGUMENT_FUNCTION_B32 pEventArgumentFunctionB32, GxTypedObject* pOwner = nullptr, b32 argumentB32 = false)
1312 : GxFunction(pEventArgumentFunctionB32, pOwner, argumentB32, TYPE::UNIQUE){}
1314 GxStructUniqueFunction(GxProperty::STRUCT_EVENT_ARGUMENT_FUNCTION_U32 pEventArgumentFunctionU32, GxTypedObject* pOwner = nullptr, u32 argumentU32 = 0)
1315 : GxFunction(pEventArgumentFunctionU32, pOwner, argumentU32, TYPE::UNIQUE){}
1317 GxStructUniqueFunction(GxProperty::STRUCT_EVENT_ARGUMENT_FUNCTION_S32 pEventArgumentFunctionS32, GxTypedObject* pOwner = nullptr, s32 argumentS32 = 0)
1318 : GxFunction(pEventArgumentFunctionS32, pOwner, argumentS32, TYPE::UNIQUE){}
1320 GxStructUniqueFunction(GxProperty::STRUCT_EVENT_ARGUMENT_FUNCTION_F32 pEventArgumentFunctionF32, GxTypedObject* pOwner = nullptr, f32 argumentF32 = 0.0f)
1321 : GxFunction(pEventArgumentFunctionF32, pOwner, argumentF32, TYPE::UNIQUE){}
1322
1324 //-------------------------------------------------------------
1326 //-------------------------------------------------------------
1328protected:
1330 void _getValue(const GxTypedObject* pObject, void* const pValue) const override { return ((static_cast<GxStructBase*>(const_cast<GxTypedObject*>(pObject)))->*_pGetStructValueFunction)(pValue); }
1332 void _setValue(GxTypedObject* pObject, const void* const pValue) const override { ((static_cast<GxStructBase*>(pObject))->*_pSetStructValueFunction)(pValue); }
1334 void _getValueIndex(const GxTypedObject* pObject, void* const pValue, u32 index) const override { ((static_cast<GxStructBase*>(const_cast<GxTypedObject*>(pObject)))->*_pGetStructValueIndexFunction)(pValue, index); }
1336 void _setValueIndex(GxTypedObject* pObject, const void* const pValue, u32 index) const override { ((static_cast<GxStructBase*>(pObject))->*_pSetStructValueIndexFunction)(pValue, index); }
1338 u32 _getCount(const GxTypedObject* pObject) const override { return ((static_cast<GxStructBase*>(const_cast<GxTypedObject*>(pObject)))->*_pGetStructCountFunction)(); }
1340 void _setCount(GxTypedObject* pObject, const u32 count) override { ((static_cast<GxStructBase*>(pObject))->*_pSetStructCountFunction)(count); }
1342 void _callEvent(GxTypedObject* pObject = nullptr) override;
1343
1345};
1346
1347//---------------------------------------------------------------------------
1349//---------------------------------------------------------------------------
1351{
1352 //-------------------------------------------------------------
1354 //-------------------------------------------------------------
1356public:
1358 GxAccessor(
1359#if GX_DEVELOP
1360 GX_CSTR name = "",
1361#endif //GX_DEVELOP
1362 u32 size = 0, u32 attribute = 0, GxProperty::TYPE type = GxProperty::TYPE::UNKNOWN,
1363 PROPERTY_FUNCTION_GET_VALUE pGetValueFunction = getValue,
1364 PROPERTY_FUNCTION_SET_VALUE pSetValueFunction = setValue,
1365 PROPERTY_FUNCTION_COPY_VALUE pCopyValueFunction = copyValue,
1366 PROPERTY_FUNCTION_TO_STRING pToStringFunction = toString,
1367 PROPERTY_FUNCTION_FROM_STRING pFromStringFunction = fromString,
1368 PROPERTY_FUNCTION_GET_RTTI pGetRTTIFunction = nullptr );
1369
1371 //-------------------------------------------------------------
1373 //-------------------------------------------------------------
1375
1377 static void getValue(const GxProperty* /*pProperty*/, const GxTypedObject* /*pObject*/, void* const /*pValue*/, u32 /*index*/){}
1379 static void setValue(GxProperty* /*pProperty*/, GxTypedObject* /*pObject*/, const void* const /*pValue*/, u32 /*index*/){}
1381 static void copyValue(GxProperty* /*pProperty*/, GxTypedObject* /*pDstObject*/, GxTypedObject* /*pSrcObject*/, u32 /*index*/){}
1383 static void toString(GxProperty* /*pProperty*/, GxTypedObject* /*pObject*/, GxString& /*string*/, u32 /*index*/){}
1385 static b32 fromString(GxProperty* /*pProperty*/, GxTypedObject* /*pObject*/, GxString& /*string*/, u32 /*index*/) { return true; }
1386
1388};
1389
1390//---------------------------------------------------------------------------
1392//---------------------------------------------------------------------------
1394{
1395 //-------------------------------------------------------------
1397 //-------------------------------------------------------------
1399public:
1402#if GX_DEVELOP
1403 GX_CSTR name = "",
1404#endif //GX_DEVELOP
1405 u32 attribute = 0, GxProperty::TYPE type = GxProperty::TYPE::UNKNOWN, PROPERTY_FUNCTION_TO_STRING pToStringFunction = toString, PROPERTY_FUNCTION_FROM_STRING pFromStringFunction = fromString)
1406 : GxAccessor(
1407#if GX_DEVELOP
1408 name,
1409#endif //GX_DEVELOP
1410 sizeof(T), attribute, type, getValue, setValue, copyValue, pToStringFunction, pFromStringFunction){}
1411
1413 //-------------------------------------------------------------
1415 //-------------------------------------------------------------
1417
1419 static void getValue(const GxProperty* pProperty, const GxTypedObject* pObject, void* const pValue, u32 index = 0);
1421 static void setValue(GxProperty* pProperty, GxTypedObject* pObject, const void* const pValue, u32 index = 0);
1423 static void copyValue(GxProperty* pProperty, GxTypedObject* pDstObject, GxTypedObject* pSrcObject, u32 index = 0);
1424
1426};
1427
1428//---------------------------------------------------------------------------
1430//---------------------------------------------------------------------------
1432{
1433 //-------------------------------------------------------------
1435 //-------------------------------------------------------------
1437
1438public:
1441#if GX_DEVELOP
1442 GX_CSTR name = "",
1443#endif //GX_DEVELOP
1444 u32 size = 0, u32 attribute = 0, GxProperty::TYPE type = GxProperty::TYPE::UNKNOWN)
1445 : GxAccessor(
1446#if GX_DEVELOP
1447 name,
1448#endif //GX_DEVELOP
1449 size, attribute, type, getValue, setValue, copyValue, toString, fromString, getRtti){}
1450
1452 //-------------------------------------------------------------
1454 //-------------------------------------------------------------
1456
1458 static void getValue(const GxProperty* pProperty, const GxTypedObject* pObject, void* const pValue, u32 index);
1460 static void setValue(GxProperty* pProperty, GxTypedObject* pOwner, const void* const pValue, u32 index);
1462 static void toString(GxProperty* /*pProperty*/, GxTypedObject* /*pObject*/, GxString& /*string*/, u32 /*index*/){}
1464 static b32 fromString(GxProperty* /*pProperty*/, GxTypedObject* /*pObject*/, GxString& /*string*/, u32 /*index*/) { return true; }
1466 static GxRtti& getRtti(const GxTypedObject* pObject);
1467
1469};
1470
1471//---------------------------------------------------------------------------
1473//---------------------------------------------------------------------------
1475{
1476 //-------------------------------------------------------------
1478 //-------------------------------------------------------------
1480public:
1483#if GX_DEVELOP
1484 GX_CSTR name = "",
1485#endif //GX_DEVELOP
1486 u32 size = 0, u32 attribute = 0, GxProperty::TYPE type = GxProperty::TYPE::UNKNOWN)
1487 : GxAccessor(
1488#if GX_DEVELOP
1489 name,
1490#endif //GX_DEVELOP
1491 size, attribute, type, getValue, setValue, copyValue, toString, fromString, getRtti){}
1492
1494 //-------------------------------------------------------------
1496 //-------------------------------------------------------------
1498
1500 static void getValue(const GxProperty* pProperty, const GxTypedObject* pObject, void* const pValue, u32 index);
1502 static void setValue(GxProperty* pProperty, GxTypedObject* pObject, const void* const pValue, u32 index);
1504 static void copyValue(GxProperty* pProperty, GxTypedObject* pDstObject, GxTypedObject* pSrcObject , u32 index);
1506 static void toString(GxProperty* /*pProperty*/, GxTypedObject* /*pObject*/, GxString& /*string*/, u32 /*index*/){}
1508 static b32 fromString(GxProperty* /*pProperty*/, GxTypedObject* /*pObject*/, GxString& /*string*/, u32 /*index*/){ return true; }
1510 static GxRtti& getRtti(const GxTypedObject* pObject);
1511
1513};
1514
1515//===========================================================================
1517//===========================================================================
1519{
1520 //------------------------------------------------------------
1522 //------------------------------------------------------------
1524public:
1526 static constexpr u32 CUSTOM_PROPERTY_PARAM_COUNT = 32;
1528 static constexpr u32 DEFAULT_ID = 0xffffffff;
1530 typedef void (*CUSTOM_PROPERTY_FUNCTION_TO_STRING)(GxProperty& property, GxTypedObject* pOwner, u32 index, GxString* pStringTop, u32& count);
1532 typedef void (*CUSTOM_PROPERTY_FUNCTION_FROM_STRING)(GxProperty& property, GxTypedObject* pOwner, u32 index, GxString* pStringTop, u32 count);
1534#if GX_DEVELOP
1535 typedef GxGuiBase* (*CUSTOM_PROPERTY_FUNCTION_CREATE_GUI)(GxProperty& property, GxTypedObject* pOwner, const GxRtti& rtti, u32 index);
1536#else //GX_DEVELOP
1537 typedef void* (*CUSTOM_PROPERTY_FUNCTION_CREATE_GUI)(void);
1538#endif // !GX_DEVELOP
1540 typedef u32 (*CUSTOM_PROPERTY_FUNCTION_SERIALIZE_BINARY_SIZE)(GxProperty& property, GxTypedObject* pOwner, u32 index);
1542 typedef void* (*CUSTOM_PROPERTY_FUNCTION_SERIALIZE_BINARY)(GxProperty& property, GxTypedObject* pOwner, u32 index, void* pData);
1544 typedef const void* (*CUSTOM_PROPERTY_FUNCTION_DESERIALIZE_BINARY)(GxProperty& property, GxTypedObject* pOwner, u32 index, const void* pData);
1545
1547 //------------------------------------------------------------
1549 //------------------------------------------------------------
1551
1554 , u32 id
1555 , CUSTOM_PROPERTY_FUNCTION_TO_STRING pToStringFunction
1556 , CUSTOM_PROPERTY_FUNCTION_FROM_STRING pFromStringFunction
1557 , CUSTOM_PROPERTY_FUNCTION_SERIALIZE_BINARY_SIZE pSerializeBinarySizeFunction
1558 , CUSTOM_PROPERTY_FUNCTION_SERIALIZE_BINARY pSerializeBinaryFunction
1559 , CUSTOM_PROPERTY_FUNCTION_DESERIALIZE_BINARY pDeserializeBinaryFunction
1560#if GX_DEVELOP
1561 , CUSTOM_PROPERTY_FUNCTION_CREATE_GUI pCreateGuiFunction
1562 , GX_CSTR pName
1563#endif //GX_DEVELOP
1564 )
1565 : _pRtti(pRtti), _id(id), _pToStringFunction(pToStringFunction), _pFromStringFunction(pFromStringFunction),
1566 _pSerializeBinarySizeFunction(pSerializeBinarySizeFunction), _pSerializeBinaryFunction(pSerializeBinaryFunction), _pDeserializeBinaryFunction(pDeserializeBinaryFunction), _pNext(nullptr)
1567#if GX_DEVELOP
1568 , _pCreateGuiFunction(pCreateGuiFunction)
1569 ,_pName(pName)
1570#endif //GX_DEVELOP
1571 {}
1573 virtual ~GxCustomProperty(void){}
1574
1576 //------------------------------------------------------------
1578 //------------------------------------------------------------
1580
1582 GX_FORCE_INLINE void toString(GxProperty& property, GxTypedObject* pOwner, u32 index, GxString* pStringTop, u32& count){ (*_pToStringFunction)(property, pOwner, index, pStringTop, count); }
1584 GX_FORCE_INLINE void fromString(GxProperty& property, GxTypedObject* pOwner, u32 index, GxString* pStringTop, u32 count){ (*_pFromStringFunction)(property, pOwner, index, pStringTop, count); }
1585#if GX_DEVELOP
1587 GX_FORCE_INLINE GxGuiBase* createGui(GxProperty& property, GxTypedObject* pOwner, const GxRtti& rtti, u32 index){ return (*_pCreateGuiFunction)(property, pOwner, rtti, index); }
1588#endif //GX_DEVELOP
1590 GX_FORCE_INLINE u32 serializeBinarySize(GxProperty& property, GxTypedObject* pOwner, u32 index){ return (*_pSerializeBinarySizeFunction)(property, pOwner, index); }
1592 GX_FORCE_INLINE void* serializeBinary(GxProperty& property, GxTypedObject* pOwner, u32 index, void* pData){ return (*_pSerializeBinaryFunction)(property, pOwner, index, pData); }
1594 GX_FORCE_INLINE const void* deserializeBinary(GxProperty& property, GxTypedObject* pOwner, u32 index, const void* pData){ return (*_pDeserializeBinaryFunction)(property, pOwner, index, pData); }
1595
1597 //------------------------------------------------------------
1599 //------------------------------------------------------------
1601
1603 const GxRtti* getRtti(void) const { return _pRtti; }
1605 constexpr u32 getId(void) const { return _id; }
1607 constexpr GxCustomProperty* getNext(void) const { return _pNext; }
1609 constexpr void setNext(GxCustomProperty* pNext){ _pNext = pNext; }
1610#if GX_DEVELOP
1612 constexpr GX_CSTR getName(void) const { return _pName; }
1613#endif //GX_DEVELOP
1614
1616 //------------------------------------------------------------
1618 //------------------------------------------------------------
1620private:
1621 const GxRtti* _pRtti;
1622 u32 _id;
1623 CUSTOM_PROPERTY_FUNCTION_TO_STRING _pToStringFunction;
1624 CUSTOM_PROPERTY_FUNCTION_FROM_STRING _pFromStringFunction;
1625 CUSTOM_PROPERTY_FUNCTION_SERIALIZE_BINARY_SIZE _pSerializeBinarySizeFunction;
1626 CUSTOM_PROPERTY_FUNCTION_SERIALIZE_BINARY _pSerializeBinaryFunction;
1627 CUSTOM_PROPERTY_FUNCTION_DESERIALIZE_BINARY _pDeserializeBinaryFunction;
1628 GxCustomProperty* _pNext;
1629#if GX_DEVELOP
1630 CUSTOM_PROPERTY_FUNCTION_CREATE_GUI _pCreateGuiFunction;
1631 GX_CSTR _pName;
1632#endif //GX_DEVELOP
1633
1635};
1636
1637//===========================================================================
1639//===========================================================================
1641{
1642 //------------------------------------------------------------
1644 //------------------------------------------------------------
1646public:
1647 // RTTI定義
1648 GX_RTTI_CLASS(GxPropertyTable, GxClassBase)
1649
1650
1651 class GxNode : public GxStructBase
1652 {
1653 //------------------------------------------------------------
1655 //------------------------------------------------------------
1657 public:
1658 // RTTI定義
1660
1662 GxNode(void) : _pObject(nullptr), _pProperty(nullptr){}
1664 GxNode(const GxProperty& property, GxClassBaseRoot* pObject = nullptr) : _property(property), _pObject(pObject), _pProperty(nullptr){}
1666 GxNode(GxProperty* pProperty, GxClassBaseRoot* pObject = nullptr) : _pObject(pObject), _pProperty(pProperty){}
1668 GxNode(const GxNode& node){ operator = (node); }
1670 void operator = (const GxNode& node);
1671
1673 //------------------------------------------------------------
1675 //------------------------------------------------------------
1677
1679 constexpr GxClassBaseRoot* getObject(void) const { return _pObject; }
1681 GX_FORCE_INLINE GxProperty& getProperty(void){ return (_pProperty)? *_pProperty : _property; }
1682
1684 //------------------------------------------------------------
1686 //------------------------------------------------------------
1688 private:
1689 GxProperty _property;
1690 GxClassBaseRoot* _pObject;
1691 GxProperty* _pProperty;
1692
1694 };
1695
1697 //------------------------------------------------------------
1699 //------------------------------------------------------------
1701
1703 GxPropertyTable(void);
1705 GxPropertyTable(const GxRtti& rtti, b32 withParentFlag = true);
1707 GxPropertyTable(const GxPropertyTable& propertyTable);
1709 ~GxPropertyTable(void) override;
1711 virtual void operator = (const GxPropertyTable& propertyTable);
1712
1714 //------------------------------------------------------------
1716 //------------------------------------------------------------
1718
1720 virtual GxProperty& operator[](u32 i) const;
1722 virtual GxProperty& operator[](u32 i);
1724 virtual GxClassBaseRoot* getObject(u32 i) const { return _pNode[i].getObject(); }
1726 virtual GxNode& getNode(u32 i) const { return _pNode[i]; }
1728 virtual u32 getCount(void) const { return _count; }
1729#if GX_DEVELOP
1731 GxProperty* getProperty(GX_CSTR name) const;
1732#endif // GX_DEVELOP
1733
1734private:
1736 void setCount(u32 count);
1738 void setCountForward(u32 count);
1740 GX_FORCE_INLINE void getPropertyNode(void* const pValue, u32 index) const { *static_cast<GxNode**>(pValue) = &_pNode[index]; }
1742 GX_FORCE_INLINE void setPropertyNode(const void* const pValue, u32 index) { _pNode[index] = *(*static_cast<GxNode**>(const_cast<void*>(pValue))); }
1743
1745 //------------------------------------------------------------
1747 //------------------------------------------------------------
1749public:
1751 virtual void operator << (const GxProperty& property);
1753 virtual void add(const GxProperty& property, GxClassBaseRoot* pObject = nullptr);
1755 virtual void add(GxProperty* pProperty, GxClassBaseRoot* pObject = nullptr);
1757 u32 add(const GxRtti& rtti, b32 withParentFlag = true);
1759 void remove(GxProperty* pProperty);
1761 GX_FORCE_INLINE void clear(void){ setCount(0); }
1763 GX_FORCE_INLINE void allocForward(u32 count){ if(count > _allocCount){ alloc(count); } }
1765 constexpr void reset(void){ _count = 0; }
1766
1767private:
1769 void alloc(u32 count);
1771 virtual GxNode* allocNode(s32 count) { return GX_NEW GxNode[count]; };
1773 virtual void freeNode(GxNode* pNode) { GX_SAFE_DELETE_ARRAY(pNode); };
1774
1776 //------------------------------------------------------------
1778 //------------------------------------------------------------
1780protected:
1784
1786};
1787
1788GX_CORE_NAMESPACE_END()
1789
1790// 値のアドレスを計算して取得
1791#define __PROPERTY_VALUE_OF__(__VALUE__) (((MyClass*)((size_t)(GxProperty::getDummyBuffer()) - ((size_t)(&((MyClass*)0)->__VALUE__))))->__VALUE__)
1792// 単体のプロパティのサイズを取得
1793#define __PROPERTY_SIZE_UNIT__(__VALUE__) sizeof(__PROPERTY_VALUE_OF__(__VALUE__)[0])
1794// 配列プロパティの要素数を取得
1795#define __PROPERTY_ARRAY_COUNT__(__VALUE__) (sizeof(__PROPERTY_VALUE_OF__(__VALUE__)) / sizeof(__PROPERTY_VALUE_OF__(__VALUE__)[0]))
1796
1797// 基本変数プロパティ
1798#if GX_DEVELOP
1799#define _PARAM_BASE(__TYPE__,__VALUE__, __NAME__, __ATTRIBUTE__, __ENUM__, __FLAG__, __ENUM_COUNT__, __MIN__, __MAX__) GxProperty( __TYPE__, \
1800 GxProperty::GxFunction(((size_t)(&((MyClass*)0)->__VALUE__)), 0, sizeof(__PROPERTY_VALUE_OF__(__VALUE__))), GxProperty::ATTRIBUTE_NAME | GxProperty::ATTRIBUTE_VALUE | __ATTRIBUTE__, \
1801 nullptr, &MyClass::GX_RTTI, GxMath::getHash32(#__VALUE__, MyClass::GX_RTTI.getId()), #__VALUE__, __NAME__, __ENUM__, __FLAG__, __ENUM_COUNT__, -1, __MIN__, __MAX__)
1802#else //GX_DEVELOP
1803#define _PARAM_BASE(__TYPE__,__VALUE__, __NAME__, __ATTRIBUTE__, __ENUM__, __FLAG__, __ENUM_COUNT__, __MIN__, __MAX__) GxProperty( __TYPE__, \
1804 GxProperty::GxFunction(((size_t)(&((MyClass*)0)->__VALUE__)), 0, sizeof(__PROPERTY_VALUE_OF__(__VALUE__))), GxProperty::ATTRIBUTE_NAME | GxProperty::ATTRIBUTE_VALUE | __ATTRIBUTE__, \
1805 nullptr, &MyClass::GX_RTTI, GxMath::getHash32(#__VALUE__, MyClass::GX_RTTI.getId()) )
1806#endif // !GX_DEVELOP
1807
1808// 基本変数プロパティ
1809#define _PARAM(__VALUE__) _PARAM_BASE(__PROPERTY_VALUE_OF__(__VALUE__), __VALUE__, #__VALUE__, GxProperty::ATTRIBUTE_NONE, nullptr, nullptr, 0, 0, 0)
1810#define _PARAM_ATTRIBUTE(__VALUE__,__ATTRIBUTE__) _PARAM_BASE(__PROPERTY_VALUE_OF__(__VALUE__), __VALUE__, #__VALUE__, __ATTRIBUTE__, nullptr, nullptr, 0, 0, 0)
1811#define _PARAM_NAME(__VALUE__,__NAME__) _PARAM_BASE(__PROPERTY_VALUE_OF__(__VALUE__), __VALUE__, __NAME__, GxProperty::ATTRIBUTE_NONE, nullptr, nullptr, 0, 0, 0)
1812#define _PARAM_NAME_ATTRIBUTE(__VALUE__,__NAME__,__ATTRIBUTE__) _PARAM_BASE(__PROPERTY_VALUE_OF__(__VALUE__), __VALUE__, __NAME__, __ATTRIBUTE__, nullptr, nullptr, 0, 0, 0)
1813#define _PARAM_MIN_MAX(__VALUE__, __MIN__, __MAX__) _PARAM_BASE(__PROPERTY_VALUE_OF__(__VALUE__), __VALUE__, #__VALUE__, GxProperty::ATTRIBUTE_NONE, nullptr, nullptr, 0, __MIN__, __MAX__)
1814#define _PARAM_ATTRIBUTE_MIN_MAX(__VALUE__,__ATTRIBUTE__, __MIN__, __MAX__) _PARAM_BASE(__PROPERTY_VALUE_OF__(__VALUE__), __VALUE__, #__VALUE__, __ATTRIBUTE__, nullptr, nullptr, 0, __MIN__, __MAX__)
1815#define _PARAM_NAME_MIN_MAX(__VALUE__,__NAME__, __MIN__, __MAX__) _PARAM_BASE(__PROPERTY_VALUE_OF__(__VALUE__), __VALUE__, __NAME__, GxProperty::ATTRIBUTE_NONE, nullptr, nullptr, 0, __MIN__, __MAX__)
1816#define _PARAM_NAME_ATTRIBUTE_MIN_MAX(__VALUE__,__NAME__,__ATTRIBUTE__, __MIN__, __MAX__) _PARAM_BASE(__PROPERTY_VALUE_OF__(__VALUE__), __VALUE__, __NAME__, __ATTRIBUTE__, nullptr, nullptr, 0, __MIN__, __MAX__)
1817
1818// ユニット参照
1819#if GX_DEVELOP
1820#define _UNIT_BASE(__CLASS__, __TYPE__,__VALUE__, __NAME__, __ATTRIBUTE__) GxProperty( __TYPE__, \
1821 GxProperty::GxFunction(((size_t)(&((MyClass*)0)->__VALUE__)), 0, sizeof(__PROPERTY_VALUE_OF__(__VALUE__))), GxProperty::ATTRIBUTE_NAME | GxProperty::ATTRIBUTE_VALUE | __ATTRIBUTE__, \
1822 &__CLASS__::GX_RTTI, &MyClass::GX_RTTI, GxMath::getHash32(#__VALUE__, MyClass::GX_RTTI.getId()), #__VALUE__, __NAME__ )
1823#else //GX_DEVELOP
1824#define _UNIT_BASE(__CLASS__, __TYPE__,__VALUE__, __NAME__, __ATTRIBUTE__) GxProperty( __TYPE__, \
1825 GxProperty::GxFunction(((size_t)(&((MyClass*)0)->__VALUE__)), 0, sizeof(__PROPERTY_VALUE_OF__(__VALUE__))), GxProperty::ATTRIBUTE_NAME | GxProperty::ATTRIBUTE_VALUE | __ATTRIBUTE__, \
1826 &__CLASS__::GX_RTTI, &MyClass::GX_RTTI, GxMath::getHash32(#__VALUE__, MyClass::GX_RTTI.getId()) )
1827#endif // !GX_DEVELOP
1828
1829#define _UNIT(__CLASS__, __VALUE__) _UNIT_BASE(__CLASS__, __PROPERTY_VALUE_OF__(__VALUE__), __VALUE__, #__VALUE__, GxProperty::ATTRIBUTE_POINTER)
1830#define _UNIT_ATTRIBUTE(__CLASS__, __VALUE__,__ATTRIBUTE__) _UNIT_BASE(__CLASS__, __PROPERTY_VALUE_OF__(__VALUE__), __VALUE__, #__VALUE__, __ATTRIBUTE__|GxProperty::ATTRIBUTE_POINTER)
1831#define _UNIT_NAME(__CLASS__, __VALUE__,__NAME__) _UNIT_BASE(__CLASS__, __PROPERTY_VALUE_OF__(__VALUE__), __VALUE__, __NAME__, GxProperty::ATTRIBUTE_POINTER)
1832#define _UNIT_NAME_ATTRIBUTE(__CLASS__, __VALUE__,__NAME__,__ATTRIBUTE__) _UNIT_BASE(__CLASS__, __PROPERTY_VALUE_OF__(__VALUE__), __VALUE__, __NAME__, __ATTRIBUTE__|GxProperty::ATTRIBUTE_POINTER)
1833
1834// ENUM変数プロパティ
1835#define _ENUM(__VALUE__) _PARAM_BASE(GxProperty::TYPE::S32, __VALUE__, #__VALUE__, GxProperty::ATTRIBUTE_NONE, nullptr, nullptr, 0, 0, 0)
1836#define _ENUM_ATTRIBUTE(__VALUE__,__ATTRIBUTE__) _PARAM_BASE(GxProperty::TYPE::S32, __VALUE__, #__VALUE__, __ATTRIBUTE__, nullptr, nullptr, 0, 0, 0)
1837#define _ENUM_NAME(__VALUE__,__NAME__) _PARAM_BASE(GxProperty::TYPE::S32, __VALUE__, __NAME__, GxProperty::ATTRIBUTE_NONE, nullptr, nullptr, 0, 0, 0)
1838#define _ENUM_NAME_ATTRIBUTE(__VALUE__,__NAME__,__ATTRIBUTE__) _PARAM_BASE(GxProperty::TYPE::S32, __VALUE__, __NAME__, __ATTRIBUTE__, nullptr, nullptr, 0, 0, 0)
1839#if GX_DEVELOP
1840#define _ENUM_GUI(__VALUE__,__ENUM__) _PARAM_BASE(GxProperty::TYPE::S32, __VALUE__, #__VALUE__, GxProperty::ATTRIBUTE_NONE, __ENUM__##_TABLE, nullptr, sizeof(__ENUM__##_TABLE)/sizeof(GX_ENUM), 0, 0)
1841#define _ENUM_ATTRIBUTE_GUI(__VALUE__,__ATTRIBUTE__,__ENUM__) _PARAM_BASE(GxProperty::TYPE::S32, __VALUE__, #__VALUE__, __ATTRIBUTE__, __ENUM__##_TABLE, nullptr, sizeof(__ENUM__##_TABLE)/sizeof(GX_ENUM), 0, 0)
1842#define _ENUM_NAME_GUI(__VALUE__,__NAME__,__ENUM__) _PARAM_BASE(GxProperty::TYPE::S32, __VALUE__, __NAME__, GxProperty::ATTRIBUTE_NONE, __ENUM__##_TABLE, nullptr, sizeof(__ENUM__##_TABLE)/sizeof(GX_ENUM), 0, 0)
1843#define _ENUM_NAME_ATTRIBUTE_GUI(__VALUE__,__NAME__,__ATTRIBUTE__,__ENUM__) _PARAM_BASE(GxProperty::TYPE::S32, __VALUE__, __NAME__, __ATTRIBUTE__, __ENUM__##_TABLE, nullptr, sizeof(__ENUM__##_TABLE)/sizeof(GX_ENUM), 0, 0)
1844#else //GX_DEVELOP
1845#define _ENUM_GUI(__VALUE__,__ENUM__) _ENUM(__VALUE__)
1846#define _ENUM_ATTRIBUTE_GUI(__VALUE__,__ATTRIBUTE__,__ENUM__) _ENUM_ATTRIBUTE(__VALUE__,__ATTRIBUTE__)
1847#define _ENUM_NAME_GUI(__VALUE__,__NAME__,__ENUM__) _ENUM_NAME(__VALUE__,__NAME__)
1848#define _ENUM_NAME_ATTRIBUTE_GUI(__VALUE__,__NAME__,__ATTRIBUTE__,__ENUM__) _ENUM_NAME_ATTRIBUTE(__VALUE__,__NAME__,__ATTRIBUTE__)
1849#endif // !GX_DEVELOP
1850
1851// FLAG変数プロパティ
1852#if GX_DEVELOP
1853#define _FLAG_GUI(__VALUE__,__ENUM__) _PARAM_BASE(__PROPERTY_VALUE_OF__(__VALUE__), __VALUE__, #__VALUE__, GxProperty::ATTRIBUTE_NONE, nullptr, __ENUM__##_FLAG_TABLE, sizeof(__ENUM__##_FLAG_TABLE)/sizeof(GX_FLAG), 0, 0)
1854#define _FLAG_ATTRIBUTE_GUI(__VALUE__,__ATTRIBUTE__,__ENUM__) _PARAM_BASE(__PROPERTY_VALUE_OF__(__VALUE__), __VALUE__, #__VALUE__, __ATTRIBUTE__, nullptr, __ENUM__##_FLAG_TABLE, sizeof(__ENUM__##_FLAG_TABLE)/sizeof(GX_FLAG), 0, 0)
1855#define _FLAG_NAME_GUI(__VALUE__,__NAME__,__ENUM__) _PARAM_BASE(__PROPERTY_VALUE_OF__(__VALUE__), __VALUE__, __NAME__, GxProperty::ATTRIBUTE_NONE, nullptr, __ENUM__##_FLAG_TABLE, sizeof(__ENUM__##_FLAG_TABLE)/sizeof(GX_FLAG), 0, 0)
1856#define _FLAG_NAME_ATTRIBUTE_GUI(__VALUE__,__NAME__,__ATTRIBUTE__,__ENUM__) _PARAM_BASE(__PROPERTY_VALUE_OF__(__VALUE__), __VALUE__, __NAME__, __ATTRIBUTE__, nullptr, __ENUM__##_FLAG_TABLE, sizeof(__ENUM__##_FLAG_TABLE)/sizeof(GX_FLAG), 0, 0)
1857#else //GX_DEVELOP
1858#define _FLAG_GUI(__VALUE__,__ENUM__) _PARAM(__VALUE__)
1859#define _FLAG_ATTRIBUTE_GUI(__VALUE__,__ATTRIBUTE__,__ENUM__) _PARAM_ATTRIBUTE(__VALUE__,__ATTRIBUTE__)
1860#define _FLAG_NAME_GUI(__VALUE__,__NAME__,__ENUM__) _PARAM_NAME(__VALUE__,__NAME__)
1861#define _FLAG_NAME_ATTRIBUTE_GUI(__VALUE__,__NAME__,__ATTRIBUTE__,__ENUM__) _PARAM_NAME_ATTRIBUTE(__VALUE__,__NAME__,__ATTRIBUTE__)
1862#endif // !GX_DEVELOP
1863
1864#if GX_DEVELOP
1865// ENUMテーブル宣言(GUI用)
1866#define GX_ENUM_TABLE(__ENUM__) static const GX_ENUM __ENUM__##_TABLE[];
1867#define GX_ENUM_TABLE_COUNT(__ENUM__, __COUNT__) static const GX_ENUM __ENUM__##_TABLE[__COUNT__];
1868#define GX_ENUM_TABLE_MAX(__ENUM__) static const GX_ENUM __ENUM__##_TABLE[static_cast<s32>(__ENUM__::MAX)];
1869#define GX_ENUM_BEGIN(__ENUM__) const GX_ENUM __ENUM__##_TABLE[] = {
1870#define GX_ENUM_VALUE(__TEXT__, __VALUE__) { __TEXT__, static_cast<s32>(__VALUE__) }
1871#define GX_ENUM_END() };
1872// FLAGテーブル宣言(GUI用)
1873#define GX_FLAG_TABLE(__ENUM__) static const GX_FLAG __ENUM__##_FLAG_TABLE[];
1874#define GX_FLAG_TABLE_COUNT(__ENUM__, __COUNT__) static const GX_FLAG __ENUM__##_FLAG_TABLE[__COUNT__];
1875#define GX_FLAG_TABLE_MAX(__ENUM__) static const GX_FLAG __ENUM__##_FLAG_TABLE[static_cast<s32>(__ENUM__::MAX)];
1876#define GX_FLAG_BEGIN(__ENUM__) const GX_FLAG __ENUM__##_FLAG_TABLE[] = {
1877#define GX_FLAG_VALUE(__TEXT__, __VALUE__) { __TEXT__, 1 << static_cast<s32>(__VALUE__) }
1878#define GX_FLAG_END() };
1879#endif // !GX_DEVELOP
1880
1881// 名前のみ
1882#if GX_DEVELOP
1883#define _NAME_ONLY(__NAME__) GxProperty( GxProperty::TYPE::UNKNOWN, GxProperty::GxFunction(), GxProperty::ATTRIBUTE_NAME|GxProperty::ATTRIBUTE_NOSERIALIZE, \
1884 nullptr, &MyClass::GX_RTTI, GxMath::getHash32(__NAME__, MyClass::GX_RTTI.getId()), __NAME__, nullptr )
1885#else //GX_DEVELOP
1886#define _NAME_ONLY(__NAME__) GxProperty( GxProperty::TYPE::UNKNOWN, GxProperty::GxFunction(), GxProperty::ATTRIBUTE_NAME|GxProperty::ATTRIBUTE_NOSERIALIZE, \
1887 nullptr, &MyClass::GX_RTTI, GxMath::getHash32(__NAME__, MyClass::GX_RTTI.getId()) )
1888#endif // !GX_DEVELOP
1889
1890// 別名定義
1891#if GX_DEVELOP
1892#define _PARAM_ALIAS(__VALUE__,__ALIAS__,__VNAME__) GxProperty( __PROPERTY_VALUE_OF__(__VALUE__), \
1893 GxProperty::GxFunction(((size_t)(&((MyClass*)0)->__VALUE__)), 0, sizeof(__PROPERTY_VALUE_OF__(__VALUE__))), GxProperty::ATTRIBUTE_NAME | GxProperty::ATTRIBUTE_VALUE | GxProperty::ATTRIBUTE_NOSERIALIZE | GxProperty::ATTRIBUTE_HIDE | GxProperty::ATTRIBUTE_ALIAS, \
1894 nullptr, &MyClass::GX_RTTI, GxMath::getHash32(__ALIAS__, MyClass::GX_RTTI.getId()), __ALIAS__, __VNAME__ )
1895#define _ENUM_ALIAS(__VALUE__,__ALIAS__,__VNAME__) GxProperty( GxProperty::TYPE::S32, \
1896 GxProperty::GxFunction(((size_t)(&((MyClass*)0)->__VALUE__)), 0, sizeof(__PROPERTY_VALUE_OF__(__VALUE__))), GxProperty::ATTRIBUTE_NAME | GxProperty::ATTRIBUTE_VALUE | GxProperty::ATTRIBUTE_NOSERIALIZE | GxProperty::ATTRIBUTE_HIDE | GxProperty::ATTRIBUTE_ALIAS, \
1897 nullptr, &MyClass::GX_RTTI, GxMath::getHash32(__ALIAS__, MyClass::GX_RTTI.getId()), __ALIAS__, __VNAME__ )
1898#else //GX_DEVELOP
1899#define _PARAM_ALIAS(__VALUE__,__ALIAS__,__VNAME__) GxProperty( __PROPERTY_VALUE_OF__(__VALUE__), \
1900 GxProperty::GxFunction(((size_t)(&((MyClass*)0)->__VALUE__)), 0, sizeof(__PROPERTY_VALUE_OF__(__VALUE__))), GxProperty::ATTRIBUTE_NAME | GxProperty::ATTRIBUTE_VALUE | GxProperty::ATTRIBUTE_NOSERIALIZE | GxProperty::ATTRIBUTE_HIDE | GxProperty::ATTRIBUTE_ALIAS, \
1901 nullptr, &MyClass::GX_RTTI, GxMath::getHash32(__ALIAS__, MyClass::GX_RTTI.getId()) )
1902#define _ENUM_ALIAS(__VALUE__,__ALIAS__,__VNAME__) GxProperty( GxProperty::TYPE::S32, \
1903 GxProperty::GxFunction(((size_t)(&((MyClass*)0)->__VALUE__)), 0, sizeof(__PROPERTY_VALUE_OF__(__VALUE__))), GxProperty::ATTRIBUTE_NAME | GxProperty::ATTRIBUTE_VALUE | GxProperty::ATTRIBUTE_NOSERIALIZE | GxProperty::ATTRIBUTE_HIDE | GxProperty::ATTRIBUTE_ALIAS, \
1904 nullptr, &MyClass::GX_RTTI, GxMath::getHash32(__ALIAS__, MyClass::GX_RTTI.getId()) )
1905#endif // !GX_DEVELOP
1906
1907// 固定長配列
1908#if GX_DEVELOP
1909#define _ARRAY_BASE(__VALUE__, __NAME__, __ATTRIBUTE__, __COUNT__) GxProperty( __PROPERTY_VALUE_OF__(__VALUE__)[0], \
1910 GxProperty::GxFunction(((size_t)(&((MyClass*)0)->__VALUE__)), __COUNT__, sizeof(__PROPERTY_VALUE_OF__(__VALUE__)[0])), GxProperty::ATTRIBUTE_NAME | GxProperty::ATTRIBUTE_VALUE | GxProperty::ATTRIBUTE_ARRAY | __ATTRIBUTE__, \
1911 nullptr, &MyClass::GX_RTTI, GxMath::getHash32(#__VALUE__, MyClass::GX_RTTI.getId()), #__VALUE__, __NAME__ )
1912#else //GX_DEVELOP
1913#define _ARRAY_BASE(__VALUE__, __NAME__, __ATTRIBUTE__, __COUNT__) GxProperty( __PROPERTY_VALUE_OF__(__VALUE__)[0], \
1914 GxProperty::GxFunction(((size_t)(&((MyClass*)0)->__VALUE__)), __COUNT__, sizeof(__PROPERTY_VALUE_OF__(__VALUE__)[0])), GxProperty::ATTRIBUTE_NAME | GxProperty::ATTRIBUTE_VALUE | GxProperty::ATTRIBUTE_ARRAY | __ATTRIBUTE__, \
1915 nullptr, &MyClass::GX_RTTI, GxMath::getHash32(#__VALUE__, MyClass::GX_RTTI.getId()) )
1916#endif // !GX_DEVELOP
1917
1918#define _ARRAY(__VALUE__) _ARRAY_BASE(__VALUE__, #__VALUE__, GxProperty::ATTRIBUTE_NONE, __PROPERTY_ARRAY_COUNT__(__VALUE__))
1919#define _ARRAY_ATTRIBUTE(__VALUE__, __ATTRIBUTE__) _ARRAY_BASE(__VALUE__, #__VALUE__, __ATTRIBUTE__, __PROPERTY_ARRAY_COUNT__(__VALUE__))
1920#define _ARRAY_COUNT(__VALUE__, __COUNT__) _ARRAY_BASE(__VALUE__, #__VALUE__, GxProperty::ATTRIBUTE_NONE, __COUNT__)
1921#define _ARRAY_NAME(__VALUE__, __NAME__) _ARRAY_BASE(__VALUE__, __NAME__, GxProperty::ATTRIBUTE_NONE, __PROPERTY_ARRAY_COUNT__(__VALUE__))
1922#define _ARRAY_NAME_ATTRIBUTE(__VALUE__, __NAME__, __ATTRIBUTE__) _ARRAY_BASE(__VALUE__, __NAME__, __ATTRIBUTE__, __PROPERTY_ARRAY_COUNT__(__VALUE__))
1923#define _ARRAY_NAME_COUNT(__VALUE__, __NAME__, __COUNT__) _ARRAY_BASE(__VALUE__, __NAME__, GxProperty::ATTRIBUTE_NONE, __COUNT__)
1924#define _ARRAY_NAME_ATTRIBUTE_COUNT(__VALUE__, __NAME__, __ATTRIBUTE__, __COUNT__) _ARRAY_BASE(__VALUE__, __NAME__, __ATTRIBUTE__, __COUNT__)
1925
1926// カスタム
1927#if GX_DEVELOP
1928#define _CUSTOM_BASE(__TYPE__, __NAME__, __CLASS__, __GET_VALUE_FUNCTION__, __SET_VALUE_FUNCTION__, __ATTRIBUTE__) GxProperty( __TYPE__, \
1929 GxProperty::GxUniqueFunction<__CLASS__>( (GxProperty::GxUniqueFunction<__CLASS__>::GET_VALUE_FUNCTION)__GET_VALUE_FUNCTION__, (GxProperty::GxUniqueFunction<__CLASS__>::SET_VALUE_FUNCTION)__SET_VALUE_FUNCTION__), \
1930 GxProperty::ATTRIBUTE_NAME | __ATTRIBUTE__, nullptr, &MyClass::GX_RTTI, GxMath::getHash32(__NAME__, MyClass::GX_RTTI.getId()), __NAME__, nullptr )
1931#else //GX_DEVELOP
1932#define _CUSTOM_BASE(__TYPE__, __NAME__, __CLASS__, __GET_VALUE_FUNCTION__, __SET_VALUE_FUNCTION__, __ATTRIBUTE__) GxProperty( __TYPE__, \
1933 GxProperty::GxUniqueFunction<__CLASS__>( (GxProperty::GxUniqueFunction<__CLASS__>::GET_VALUE_FUNCTION)__GET_VALUE_FUNCTION__, (GxProperty::GxUniqueFunction<__CLASS__>::SET_VALUE_FUNCTION)__SET_VALUE_FUNCTION__), \
1934 GxProperty::ATTRIBUTE_NAME | __ATTRIBUTE__, nullptr, &MyClass::GX_RTTI, GxMath::getHash32(__NAME__, MyClass::GX_RTTI.getId()) )
1935#endif // !GX_DEVELOP
1936
1937#define _CUSTOM(__TYPE__, __NAME__, __GET_VALUE_FUNCTION__, __SET_VALUE_FUNCTION__) _CUSTOM_BASE(__TYPE__, __NAME__, MyClass, __GET_VALUE_FUNCTION__, __SET_VALUE_FUNCTION__, GxProperty::ATTRIBUTE_NONE)
1938#define _CUSTOM_ATTRIBUTE(__TYPE__, __NAME__, __GET_VALUE_FUNCTION__, __SET_VALUE_FUNCTION__, __ATTRIBUTE__) _CUSTOM_BASE(__TYPE__, __NAME__, MyClass, __GET_VALUE_FUNCTION__, __SET_VALUE_FUNCTION__, __ATTRIBUTE__)
1939#define _CUSTOM_PARENT(__TYPE__, __NAME__, __PARENT_CLASS__, __GET_VALUE_FUNCTION__, __SET_VALUE_FUNCTION__) _CUSTOM_BASE(__TYPE__, __NAME__, __PARENT_CLASS__, __GET_VALUE_FUNCTION__, __SET_VALUE_FUNCTION__, GxProperty::ATTRIBUTE_NONE)
1940
1941// 構造体用のカスタム
1942#if GX_DEVELOP
1943#define _STRUCT_CUSTOM_BASE(__TYPE__, __NAME__, __RTTI__, __GET_VALUE_FUNCTION__, __SET_VALUE_FUNCTION__, __ATTRIBUTE__) GxProperty( __TYPE__, \
1944 GxProperty::GxStructUniqueFunction( (GxProperty::STRUCT_GET_VALUE_FUNCTION)__GET_VALUE_FUNCTION__, (GxProperty::STRUCT_SET_VALUE_FUNCTION)__SET_VALUE_FUNCTION__ ), \
1945 GxProperty::ATTRIBUTE_NAME | __ATTRIBUTE__, __RTTI__, &MyClass::GX_RTTI, GxMath::getHash32(__NAME__, MyClass::GX_RTTI.getId()), __NAME__, nullptr )
1946#else //GX_DEVELOP
1947#define _STRUCT_CUSTOM_BASE(__TYPE__, __NAME__, __RTTI__, __GET_VALUE_FUNCTION__, __SET_VALUE_FUNCTION__, __ATTRIBUTE__) GxProperty( __TYPE__, \
1948 GxProperty::GxStructUniqueFunction( (GxProperty::STRUCT_GET_VALUE_FUNCTION)__GET_VALUE_FUNCTION__, (GxProperty::STRUCT_SET_VALUE_FUNCTION)__SET_VALUE_FUNCTION__ ), \
1949 GxProperty::ATTRIBUTE_NAME | __ATTRIBUTE__, __RTTI__, &MyClass::GX_RTTI, GxMath::getHash32(__NAME__, MyClass::GX_RTTI.getId()) )
1950#endif // !GX_DEVELOP
1951
1952#define _STRUCT_CUSTOM(__TYPE__, __NAME__, __GET_VALUE_FUNCTION__, __SET_VALUE_FUNCTION__) _STRUCT_CUSTOM_BASE(__TYPE__, __NAME__, nullptr, __GET_VALUE_FUNCTION__, __SET_VALUE_FUNCTION__, GxProperty::ATTRIBUTE_NONE)
1953#define _STRUCT_CUSTOM_ATTRIBUTE(__TYPE__, __NAME__, __GET_VALUE_FUNCTION__, __SET_VALUE_FUNCTION__, __ATTRIBUTE__) _STRUCT_CUSTOM_BASE(__TYPE__, __NAME__, nullptr, __GET_VALUE_FUNCTION__, __SET_VALUE_FUNCTION__, __ATTRIBUTE__)
1954#define _STRUCT_CUSTOM_VALUE(__TYPE__, __NAME__, __VALUE__, __GET_VALUE_FUNCTION__, __SET_VALUE_FUNCTION__) _STRUCT_CUSTOM_BASE(__TYPE__, __NAME__, &__PROPERTY_VALUE_OF__(__VALUE__)->GX_RTTI, __GET_VALUE_FUNCTION__, __SET_VALUE_FUNCTION__, GxProperty::ATTRIBUTE_NONE)
1955#define _STRUCT_CUSTOM_VALUE_ATTRIBUTE(__TYPE__, __NAME__, __VALUE__, __GET_VALUE_FUNCTION__, __SET_VALUE_FUNCTION__, __ATTRIBUTE__) _STRUCT_CUSTOM_BASE(__TYPE__, __NAME__, &__PROPERTY_VALUE_OF__(__VALUE__).GX_RTTI, __GET_VALUE_FUNCTION__, __SET_VALUE_FUNCTION__, __ATTRIBUTE__)
1956
1957// 可変長配列プロパティ
1958#if GX_DEVELOP
1959#define _DYNAMIC_BASE(__TYPE__, __NAME__, __GET_INDEX_VALUE_FUNCTION__, __SET_INDEX_VALUE_FUNCTION__, __GET_COUNT_FUNCTION__, __SET_COUNT_FUNCTION__, __ATTRIBUTE__) GxProperty( __TYPE__, \
1960 GxProperty::GxUniqueFunction<MyClass>( (GxProperty::GET_INDEX_VALUE_FUNCTION)(void (MyClass::*)(void* const, u32))__GET_INDEX_VALUE_FUNCTION__, (GxProperty::SET_INDEX_VALUE_FUNCTION)(void (MyClass::*)(const void* const, u32))__SET_INDEX_VALUE_FUNCTION__, \
1961 (GxProperty::GET_COUNT_FUNCTION)__GET_COUNT_FUNCTION__, (GxProperty::SET_COUNT_FUNCTION)__SET_COUNT_FUNCTION__ ), GxProperty::ATTRIBUTE_NAME | GxProperty::ATTRIBUTE_DYNAMIC | GxProperty::ATTRIBUTE_ARRAY | GxProperty::ATTRIBUTE_POINTER | __ATTRIBUTE__, \
1962 nullptr, &MyClass::GX_RTTI, GxMath::getHash32(__NAME__, MyClass::GX_RTTI.getId()), __NAME__, nullptr )
1963#else //GX_DEVELOP
1964#define _DYNAMIC_BASE(__TYPE__, __NAME__, __GET_INDEX_VALUE_FUNCTION__, __SET_INDEX_VALUE_FUNCTION__, __GET_COUNT_FUNCTION__, __SET_COUNT_FUNCTION__, __ATTRIBUTE__) GxProperty( __TYPE__, \
1965 GxProperty::GxUniqueFunction<MyClass>( (GxProperty::GET_INDEX_VALUE_FUNCTION)(void (MyClass::*)(void* const, u32))__GET_INDEX_VALUE_FUNCTION__, (GxProperty::SET_INDEX_VALUE_FUNCTION)(void (MyClass::*)(const void* const, u32))__SET_INDEX_VALUE_FUNCTION__, \
1966 (GxProperty::GET_COUNT_FUNCTION)__GET_COUNT_FUNCTION__, (GxProperty::SET_COUNT_FUNCTION)__SET_COUNT_FUNCTION__ ), GxProperty::ATTRIBUTE_NAME | GxProperty::ATTRIBUTE_DYNAMIC | GxProperty::ATTRIBUTE_ARRAY | GxProperty::ATTRIBUTE_POINTER | __ATTRIBUTE__, \
1967 nullptr, &MyClass::GX_RTTI, GxMath::getHash32(__NAME__, MyClass::GX_RTTI.getId()) )
1968#endif // !GX_DEVELOP
1969
1970#define _DYNAMIC(__TYPE__, __NAME__, __GET_INDEX_VALUE_FUNCTION__, __SET_INDEX_VALUE_FUNCTION__, __GET_COUNT_FUNCTION__, __SET_COUNT_FUNCTION__) _DYNAMIC_BASE(__TYPE__, __NAME__, __GET_INDEX_VALUE_FUNCTION__, __SET_INDEX_VALUE_FUNCTION__, __GET_COUNT_FUNCTION__, __SET_COUNT_FUNCTION__, GxProperty::ATTRIBUTE_NONE)
1971#define _DYNAMIC_ATTRIBUTE(__TYPE__, __NAME__, __GET_INDEX_VALUE_FUNCTION__, __SET_INDEX_VALUE_FUNCTION__, __GET_COUNT_FUNCTION__, __SET_COUNT_FUNCTION__, __ATTRIBUTE__) _DYNAMIC_BASE(__TYPE__, __NAME__, __GET_INDEX_VALUE_FUNCTION__, __SET_INDEX_VALUE_FUNCTION__, __GET_COUNT_FUNCTION__, __SET_COUNT_FUNCTION__, __ATTRIBUTE__)
1972#define _DYNAMIC_OBJECT(__NAME__, __GET_INDEX_VALUE_FUNCTION__, __SET_INDEX_VALUE_FUNCTION__, __GET_COUNT_FUNCTION__, __SET_COUNT_FUNCTION__) _DYNAMIC_BASE(GxProperty::TYPE::OBJECT, __NAME__, __GET_INDEX_VALUE_FUNCTION__, __SET_INDEX_VALUE_FUNCTION__, __GET_COUNT_FUNCTION__, __SET_COUNT_FUNCTION__, GxProperty::ATTRIBUTE_RTTI)
1973#define _DYNAMIC_OBJECT_ATTRIBUTE(__NAME__, __GET_INDEX_VALUE_FUNCTION__, __SET_INDEX_VALUE_FUNCTION__, __GET_COUNT_FUNCTION__, __SET_COUNT_FUNCTION__, __ATTRIBUTE__) _DYNAMIC_BASE(GxProperty::TYPE::OBJECT, __NAME__, __GET_INDEX_VALUE_FUNCTION__, __SET_INDEX_VALUE_FUNCTION__, __GET_COUNT_FUNCTION__, __SET_COUNT_FUNCTION__, GxProperty::ATTRIBUTE_RTTI | __ATTRIBUTE__)
1974#define _DYNAMIC_OBJECT_POINTER(__NAME__, __GET_INDEX_VALUE_FUNCTION__, __SET_INDEX_VALUE_FUNCTION__, __GET_COUNT_FUNCTION__, __SET_COUNT_FUNCTION__) _DYNAMIC_BASE(GxProperty::TYPE::OBJECT_POINTER, __NAME__, __GET_INDEX_VALUE_FUNCTION__, __SET_INDEX_VALUE_FUNCTION__, __GET_COUNT_FUNCTION__, __SET_COUNT_FUNCTION__, GxProperty::ATTRIBUTE_RTTI)
1975#define _DYNAMIC_OBJECT_POINTER_ATTRIBUTE(__NAME__, __GET_INDEX_VALUE_FUNCTION__, __SET_INDEX_VALUE_FUNCTION__, __GET_COUNT_FUNCTION__, __SET_COUNT_FUNCTION__, __ATTRIBUTE__) _DYNAMIC_BASE(GxProperty::TYPE::OBJECT_POINTER, __NAME__, __GET_INDEX_VALUE_FUNCTION__, __SET_INDEX_VALUE_FUNCTION__, __GET_COUNT_FUNCTION__, __SET_COUNT_FUNCTION__, GxProperty::ATTRIBUTE_RTTI | __ATTRIBUTE__)
1976#define _DYNAMIC_STRING_POINTER(__NAME__, __GET_INDEX_VALUE_FUNCTION__, __SET_INDEX_VALUE_FUNCTION__, __GET_COUNT_FUNCTION__, __SET_COUNT_FUNCTION__) _DYNAMIC_BASE(GxProperty::TYPE::STRING_POINTER, __NAME__, __GET_INDEX_VALUE_FUNCTION__, __SET_INDEX_VALUE_FUNCTION__, __GET_COUNT_FUNCTION__, __SET_COUNT_FUNCTION__, GxProperty::ATTRIBUTE_RTTI)
1977#define _DYNAMIC_STRING_POINTER_ATTRIBUTE(__NAME__, __GET_INDEX_VALUE_FUNCTION__, __SET_INDEX_VALUE_FUNCTION__, __GET_COUNT_FUNCTION__, __SET_COUNT_FUNCTION__, __ATTRIBUTE__) _DYNAMIC_BASE(GxProperty::TYPE::STRING_POINTER, __NAME__, __GET_INDEX_VALUE_FUNCTION__, __SET_INDEX_VALUE_FUNCTION__, __GET_COUNT_FUNCTION__, __SET_COUNT_FUNCTION__, GxProperty::ATTRIBUTE_RTTI | __ATTRIBUTE__)
1978
1979#if GX_DEVELOP
1980#define _DYNAMIC_STRUCT_BASE(__TYPE__, __STRUCT__, __NAME__, __GET_INDEX_VALUE_FUNCTION__, __SET_INDEX_VALUE_FUNCTION__, __GET_COUNT_FUNCTION__, __SET_COUNT_FUNCTION__, __ATTRIBUTE__) GxProperty( __TYPE__, \
1981 GxProperty::GxUniqueFunction<MyClass>( (GxProperty::GET_INDEX_VALUE_FUNCTION)(void (MyClass::*)(void* const, u32))__GET_INDEX_VALUE_FUNCTION__, (GxProperty::SET_INDEX_VALUE_FUNCTION)(void (MyClass::*)(const void* const, u32))__SET_INDEX_VALUE_FUNCTION__, \
1982 (GxProperty::GET_COUNT_FUNCTION)__GET_COUNT_FUNCTION__, (GxProperty::SET_COUNT_FUNCTION)__SET_COUNT_FUNCTION__ ), GxProperty::ATTRIBUTE_NAME | GxProperty::ATTRIBUTE_DYNAMIC | GxProperty::ATTRIBUTE_ARRAY | GxProperty::ATTRIBUTE_POINTER | GxProperty::ATTRIBUTE_RTTI | GxProperty::ATTRIBUTE_STRUCT | __ATTRIBUTE__, \
1983 &__STRUCT__::GX_RTTI, &MyClass::GX_RTTI, GxMath::getHash32(__NAME__, MyClass::GX_RTTI.getId()), __NAME__, nullptr )
1984#else //GX_DEVELOP
1985#define _DYNAMIC_STRUCT_BASE(__TYPE__, __STRUCT__, __NAME__, __GET_INDEX_VALUE_FUNCTION__, __SET_INDEX_VALUE_FUNCTION__, __GET_COUNT_FUNCTION__, __SET_COUNT_FUNCTION__, __ATTRIBUTE__) GxProperty( __TYPE__, \
1986 GxProperty::GxUniqueFunction<MyClass>( (GxProperty::GET_INDEX_VALUE_FUNCTION)(void (MyClass::*)(void* const, u32))__GET_INDEX_VALUE_FUNCTION__, (GxProperty::SET_INDEX_VALUE_FUNCTION)(void (MyClass::*)(const void* const, u32))__SET_INDEX_VALUE_FUNCTION__, \
1987 (GxProperty::GET_COUNT_FUNCTION)__GET_COUNT_FUNCTION__, (GxProperty::SET_COUNT_FUNCTION)__SET_COUNT_FUNCTION__ ), GxProperty::ATTRIBUTE_NAME | GxProperty::ATTRIBUTE_DYNAMIC | GxProperty::ATTRIBUTE_ARRAY | GxProperty::ATTRIBUTE_POINTER | GxProperty::ATTRIBUTE_RTTI | GxProperty::ATTRIBUTE_STRUCT | __ATTRIBUTE__, \
1988 &__STRUCT__::GX_RTTI, &MyClass::GX_RTTI, GxMath::getHash32(__NAME__, MyClass::GX_RTTI.getId()) )
1989#endif // !GX_DEVELOP
1990
1991#define _DYNAMIC_STRUCT(__TYPE__, __STRUCT__, __NAME__, __GET_INDEX_VALUE_FUNCTION__, __SET_INDEX_VALUE_FUNCTION__, __GET_COUNT_FUNCTION__, __SET_COUNT_FUNCTION__) _DYNAMIC_STRUCT_BASE(__TYPE__, __STRUCT__, __NAME__, __GET_INDEX_VALUE_FUNCTION__, __SET_INDEX_VALUE_FUNCTION__, __GET_COUNT_FUNCTION__, __SET_COUNT_FUNCTION__, GxProperty::ATTRIBUTE_NONE)
1992#define _DYNAMIC_STRUCT_ATTRIBUTE(__TYPE__, __STRUCT__, __NAME__, __GET_INDEX_VALUE_FUNCTION__, __SET_INDEX_VALUE_FUNCTION__, __GET_COUNT_FUNCTION__, __SET_COUNT_FUNCTION__, __ATTRIBUTE__) _DYNAMIC_STRUCT_BASE(__TYPE__, __STRUCT__, __NAME__, __GET_INDEX_VALUE_FUNCTION__, __SET_INDEX_VALUE_FUNCTION__, __GET_COUNT_FUNCTION__, __SET_COUNT_FUNCTION__, __ATTRIBUTE__)
1993
1994// 構造体用の可変長配列プロパティ
1995#if GX_DEVELOP
1996#define _STRUCT_DYNAMIC_BASE(__TYPE__, __NAME__, __GET_INDEX_VALUE_FUNCTION__, __SET_INDEX_VALUE_FUNCTION__, __GET_COUNT_FUNCTION__, __SET_COUNT_FUNCTION__, __ATTRIBUTE__) GxProperty( __TYPE__, \
1997 GxProperty::GxStructUniqueFunction( (GxProperty::STRUCT_GET_INDEX_VALUE_FUNCTION)((void (MyClass::*)(void* const, u32))__GET_INDEX_VALUE_FUNCTION__), (GxProperty::STRUCT_SET_INDEX_VALUE_FUNCTION)((void (MyClass::*)(const void* const, u32))__SET_INDEX_VALUE_FUNCTION__), \
1998 (GxProperty::STRUCT_GET_COUNT_FUNCTION)__GET_COUNT_FUNCTION__, (GxProperty::STRUCT_SET_COUNT_FUNCTION)__SET_COUNT_FUNCTION__ ), GxProperty::ATTRIBUTE_NAME | GxProperty::ATTRIBUTE_DYNAMIC | GxProperty::ATTRIBUTE_ARRAY | GxProperty::ATTRIBUTE_POINTER | __ATTRIBUTE__, \
1999 nullptr, &MyClass::GX_RTTI, GxMath::getHash32(__NAME__, MyClass::GX_RTTI.getId()), __NAME__, nullptr )
2000#else //GX_DEVELOP
2001#define _STRUCT_DYNAMIC_BASE(__TYPE__, __NAME__, __GET_INDEX_VALUE_FUNCTION__, __SET_INDEX_VALUE_FUNCTION__, __GET_COUNT_FUNCTION__, __SET_COUNT_FUNCTION__, __ATTRIBUTE__) GxProperty( __TYPE__, \
2002 GxProperty::GxStructUniqueFunction( (GxProperty::STRUCT_GET_INDEX_VALUE_FUNCTION)((void (MyClass::*)(void* const, u32))__GET_INDEX_VALUE_FUNCTION__), (GxProperty::STRUCT_SET_INDEX_VALUE_FUNCTION)((void (MyClass::*)(const void* const, u32))__SET_INDEX_VALUE_FUNCTION__), \
2003 (GxProperty::STRUCT_GET_COUNT_FUNCTION)__GET_COUNT_FUNCTION__, (GxProperty::STRUCT_SET_COUNT_FUNCTION)__SET_COUNT_FUNCTION__ ), GxProperty::ATTRIBUTE_NAME | GxProperty::ATTRIBUTE_DYNAMIC | GxProperty::ATTRIBUTE_ARRAY | GxProperty::ATTRIBUTE_POINTER | __ATTRIBUTE__, \
2004 nullptr, &MyClass::GX_RTTI, GxMath::getHash32(__NAME__, MyClass::GX_RTTI.getId()) )
2005#endif // !GX_DEVELOP
2006
2007#define _STRUCT_DYNAMIC(__TYPE__, __NAME__, __GET_INDEX_VALUE_FUNCTION__, __SET_INDEX_VALUE_FUNCTION__, __GET_COUNT_FUNCTION__, __SET_COUNT_FUNCTION__) _STRUCT_DYNAMIC_BASE(__TYPE__, __NAME__, __GET_INDEX_VALUE_FUNCTION__, __SET_INDEX_VALUE_FUNCTION__, __GET_COUNT_FUNCTION__, __SET_COUNT_FUNCTION__, GxProperty::ATTRIBUTE_NONE)
2008#define _STRUCT_DYNAMIC_ATTRIBUTE(__TYPE__, __NAME__, __GET_INDEX_VALUE_FUNCTION__, __SET_INDEX_VALUE_FUNCTION__, __GET_COUNT_FUNCTION__, __SET_COUNT_FUNCTION__, __ATTRIBUTE__) _STRUCT_DYNAMIC_BASE(__TYPE__, __NAME__, __GET_INDEX_VALUE_FUNCTION__, __SET_INDEX_VALUE_FUNCTION__, __GET_COUNT_FUNCTION__, __SET_COUNT_FUNCTION__, __ATTRIBUTE__)
2009#define _STRUCT_DYNAMIC_OBJECT(__NAME__, __GET_INDEX_VALUE_FUNCTION__, __SET_INDEX_VALUE_FUNCTION__, __GET_COUNT_FUNCTION__, __SET_COUNT_FUNCTION__) _STRUCT_DYNAMIC_BASE(GxProperty::TYPE::OBJECT, __NAME__, __GET_INDEX_VALUE_FUNCTION__, __SET_INDEX_VALUE_FUNCTION__, __GET_COUNT_FUNCTION__, __SET_COUNT_FUNCTION__, GxProperty::ATTRIBUTE_RTTI)
2010#define _STRUCT_DYNAMIC_OBJECT_ATTRIBUTE(__NAME__, __GET_INDEX_VALUE_FUNCTION__, __SET_INDEX_VALUE_FUNCTION__, __GET_COUNT_FUNCTION__, __SET_COUNT_FUNCTION__, __ATTRIBUTE__) _STRUCT_DYNAMIC_BASE(GxProperty::TYPE::OBJECT, __NAME__, __GET_INDEX_VALUE_FUNCTION__, __SET_INDEX_VALUE_FUNCTION__, __GET_COUNT_FUNCTION__, __SET_COUNT_FUNCTION__, GxProperty::ATTRIBUTE_RTTI | __ATTRIBUTE__)
2011#define _STRUCT_DYNAMIC_OBJECT_POINTER(__NAME__, __GET_INDEX_VALUE_FUNCTION__, __SET_INDEX_VALUE_FUNCTION__, __GET_COUNT_FUNCTION__, __SET_COUNT_FUNCTION__) _STRUCT_DYNAMIC_BASE(GxProperty::TYPE::OBJECT_POINTER, __NAME__, __GET_INDEX_VALUE_FUNCTION__, __SET_INDEX_VALUE_FUNCTION__, __GET_COUNT_FUNCTION__, __SET_COUNT_FUNCTION__, GxProperty::ATTRIBUTE_RTTI)
2012#define _STRUCT_DYNAMIC_OBJECT_POINTER_ATTRIBUTE(__NAME__, __GET_INDEX_VALUE_FUNCTION__, __SET_INDEX_VALUE_FUNCTION__, __GET_COUNT_FUNCTION__, __SET_COUNT_FUNCTION__, __ATTRIBUTE__) _STRUCT_DYNAMIC_BASE(GxProperty::TYPE::OBJECT_POINTER, __NAME__, __GET_INDEX_VALUE_FUNCTION__, __SET_INDEX_VALUE_FUNCTION__, __GET_COUNT_FUNCTION__, __SET_COUNT_FUNCTION__, GxProperty::ATTRIBUTE_RTTI | __ATTRIBUTE__)
2013#define _STRUCT_DYNAMIC_STRING_POINTER(__NAME__, __GET_INDEX_VALUE_FUNCTION__, __SET_INDEX_VALUE_FUNCTION__, __GET_COUNT_FUNCTION__, __SET_COUNT_FUNCTION__) _STRUCT_DYNAMIC_BASE(GxProperty::TYPE::STRING_POINTER, __NAME__, __GET_INDEX_VALUE_FUNCTION__, __SET_INDEX_VALUE_FUNCTION__, __GET_COUNT_FUNCTION__, __SET_COUNT_FUNCTION__, GxProperty::ATTRIBUTE_RTTI)
2014#define _STRUCT_DYNAMIC_STRING_POINTER_ATTRIBUTE(__NAME__, __GET_INDEX_VALUE_FUNCTION__, __SET_INDEX_VALUE_FUNCTION__, __GET_COUNT_FUNCTION__, __SET_COUNT_FUNCTION__, __ATTRIBUTE__) _STRUCT_DYNAMIC_BASE(GxProperty::TYPE::STRING_POINTER, __NAME__, __GET_INDEX_VALUE_FUNCTION__, __SET_INDEX_VALUE_FUNCTION__, __GET_COUNT_FUNCTION__, __SET_COUNT_FUNCTION__, GxProperty::ATTRIBUTE_RTTI | __ATTRIBUTE__)
2015
2016#if GX_DEVELOP
2017#define _STRUCT_DYNAMIC_STRUCT_BASE(__TYPE__, __STRUCT__, __NAME__, __GET_INDEX_VALUE_FUNCTION__, __SET_INDEX_VALUE_FUNCTION__, __GET_COUNT_FUNCTION__, __SET_COUNT_FUNCTION__, __ATTRIBUTE__) GxProperty( __TYPE__, \
2018 GxProperty::GxStructUniqueFunction( (GxProperty::STRUCT_GET_INDEX_VALUE_FUNCTION)((void (MyClass::*)(void* const, u32))__GET_INDEX_VALUE_FUNCTION__), (GxProperty::STRUCT_SET_INDEX_VALUE_FUNCTION)((void (MyClass::*)(const void* const, u32))__SET_INDEX_VALUE_FUNCTION__), \
2019 (GxProperty::STRUCT_GET_COUNT_FUNCTION)__GET_COUNT_FUNCTION__, (GxProperty::STRUCT_SET_COUNT_FUNCTION)__SET_COUNT_FUNCTION__ ), GxProperty::ATTRIBUTE_NAME | GxProperty::ATTRIBUTE_DYNAMIC | GxProperty::ATTRIBUTE_ARRAY | GxProperty::ATTRIBUTE_POINTER | GxProperty::ATTRIBUTE_RTTI | GxProperty::ATTRIBUTE_STRUCT | __ATTRIBUTE__, \
2020 &__STRUCT__::GX_RTTI, &MyClass::GX_RTTI, GxMath::getHash32(__NAME__, MyClass::GX_RTTI.getId()), __NAME__, nullptr )
2021#else //GX_DEVELOP
2022#define _STRUCT_DYNAMIC_STRUCT_BASE(__TYPE__, __STRUCT__, __NAME__, __GET_INDEX_VALUE_FUNCTION__, __SET_INDEX_VALUE_FUNCTION__, __GET_COUNT_FUNCTION__, __SET_COUNT_FUNCTION__, __ATTRIBUTE__) GxProperty( __TYPE__, \
2023 GxProperty::GxStructUniqueFunction( (GxProperty::STRUCT_GET_INDEX_VALUE_FUNCTION)((void (MyClass::*)(void* const, u32))__GET_INDEX_VALUE_FUNCTION__), (GxProperty::STRUCT_SET_INDEX_VALUE_FUNCTION)((void (MyClass::*)(const void* const, u32))__SET_INDEX_VALUE_FUNCTION__), \
2024 (GxProperty::STRUCT_GET_COUNT_FUNCTION)__GET_COUNT_FUNCTION__, (GxProperty::STRUCT_SET_COUNT_FUNCTION)__SET_COUNT_FUNCTION__ ), GxProperty::ATTRIBUTE_NAME | GxProperty::ATTRIBUTE_DYNAMIC | GxProperty::ATTRIBUTE_ARRAY | GxProperty::ATTRIBUTE_POINTER | GxProperty::ATTRIBUTE_RTTI | GxProperty::ATTRIBUTE_STRUCT | __ATTRIBUTE__, \
2025 &__STRUCT__::GX_RTTI, &MyClass::GX_RTTI, GxMath::getHash32(__NAME__, MyClass::GX_RTTI.getId()) )
2026#endif // !GX_DEVELOP
2027
2028#define _STRUCT_DYNAMIC_STRUCT(__TYPE__, __STRUCT__, __NAME__, __GET_INDEX_VALUE_FUNCTION__, __SET_INDEX_VALUE_FUNCTION__, __GET_COUNT_FUNCTION__, __SET_COUNT_FUNCTION__) _DYNAMIC_STRUCT_BASE(__TYPE__, __STRUCT__, __NAME__, __GET_INDEX_VALUE_FUNCTION__, __SET_INDEX_VALUE_FUNCTION__, __GET_COUNT_FUNCTION__, __SET_COUNT_FUNCTION__, GxProperty::ATTRIBUTE_NONE)
2029#define _STRUCT_DYNAMIC_STRUCT_ATTRIBUTE(__TYPE__, __STRUCT__, __NAME__, __GET_INDEX_VALUE_FUNCTION__, __SET_INDEX_VALUE_FUNCTION__, __GET_COUNT_FUNCTION__, __SET_COUNT_FUNCTION__, __ATTRIBUTE__) _DYNAMIC_STRUCT_BASE(__TYPE__, __STRUCT__, __NAME__, __GET_INDEX_VALUE_FUNCTION__, __SET_INDEX_VALUE_FUNCTION__, __GET_COUNT_FUNCTION__, __SET_COUNT_FUNCTION__, __ATTRIBUTE__)
2030
2031// 構造体プロパティ
2032#if GX_DEVELOP
2033#define _STRUCT_BASE(__VALUE__, __ATTRIBUTE__, __NAME__, __TOP__, __SIZE__, __COUNT__) GxProperty( GxProperty::TYPE::STRUCT, \
2034 GxProperty::GxFunction(((size_t)(&((MyClass*)0)->__VALUE__)), __COUNT__, __SIZE__), GxProperty::ATTRIBUTE_NAME | GxProperty::ATTRIBUTE_REFERENCE | GxProperty::ATTRIBUTE_PACK_STRUCT | __ATTRIBUTE__, \
2035 &__TOP__.getRtti(), &MyClass::GX_RTTI, GxMath::getHash32(#__VALUE__, MyClass::GX_RTTI.getId()), #__VALUE__, __NAME__ )
2036#else //GX_DEVELOP
2037#define _STRUCT_BASE(__VALUE__, __ATTRIBUTE__, __NAME__, __TOP__, __SIZE__, __COUNT__) GxProperty( GxProperty::TYPE::STRUCT, \
2038 GxProperty::GxFunction(((size_t)(&((MyClass*)0)->__VALUE__)), __COUNT__, __SIZE__), GxProperty::ATTRIBUTE_NAME | GxProperty::ATTRIBUTE_REFERENCE | GxProperty::ATTRIBUTE_PACK_STRUCT | __ATTRIBUTE__, \
2039 &__TOP__.getRtti(), &MyClass::GX_RTTI, GxMath::getHash32(#__VALUE__, MyClass::GX_RTTI.getId()) )
2040#endif // !GX_DEVELOP
2041
2042#define _STRUCT(__VALUE__) _STRUCT_BASE(__VALUE__, GxProperty::ATTRIBUTE_NONE, #__VALUE__, __PROPERTY_VALUE_OF__(__VALUE__), sizeof(__PROPERTY_VALUE_OF__(__VALUE__)), 0)
2043#define _STRUCT_ATTRIBUTE(__VALUE__, __ATTRIBUTE__) _STRUCT_BASE(__VALUE__, __ATTRIBUTE__, #__VALUE__, __PROPERTY_VALUE_OF__(__VALUE__), sizeof(__PROPERTY_VALUE_OF__(__VALUE__)), 0)
2044#define _STRUCT_NAME(__VALUE__, __NAME__) _STRUCT_BASE(__VALUE__, GxProperty::ATTRIBUTE_NONE, __NAME__, __PROPERTY_VALUE_OF__(__VALUE__), sizeof(__PROPERTY_VALUE_OF__(__VALUE__)), 0)
2045#define _STRUCT_NAME_ATTRIBUTE(__VALUE__, __NAME__, __ATTRIBUTE__) _STRUCT_BASE(__VALUE__, __ATTRIBUTE__, __NAME__, __PROPERTY_VALUE_OF__(__VALUE__), sizeof(__PROPERTY_VALUE_OF__(__VALUE__)), 0)
2046
2047// 構造体配列プロパティ
2048#define _STRUCT_ARRAY_BASE(__VALUE__, __NAME__, __ATTRIBUTE__, __COUNT__) _STRUCT_BASE(__VALUE__, GxProperty::ATTRIBUTE_ARRAY | __ATTRIBUTE__, __NAME__, __PROPERTY_VALUE_OF__(__VALUE__)[0], sizeof(__PROPERTY_VALUE_OF__(__VALUE__)[0]), __COUNT__)
2049#define _STRUCT_ARRAY(__VALUE__) _STRUCT_ARRAY_BASE(__VALUE__, #__VALUE__, GxProperty::ATTRIBUTE_NONE, __PROPERTY_ARRAY_COUNT__(__VALUE__))
2050#define _STRUCT_ARRAY_ATTRIBUTE(__VALUE__, __ATTRIBUTE__) _STRUCT_ARRAY_BASE(__VALUE__, #__VALUE__, __ATTRIBUTE__, __PROPERTY_ARRAY_COUNT__(__VALUE__))
2051#define _STRUCT_ARRAY_COUNT(__VALUE__, __COUNT__) _STRUCT_ARRAY_BASE(__VALUE__, #__VALUE__, GxProperty::ATTRIBUTE_NONE, __COUNT__)
2052#define _STRUCT_ARRAY_NAME(__VALUE__, __NAME__) _STRUCT_ARRAY_BASE(__VALUE__, __NAME__, GxProperty::ATTRIBUTE_NONE, __PROPERTY_ARRAY_COUNT__(__VALUE__))
2053#define _STRUCT_ARRAY_NAME_ATTRIBUTE(__VALUE__, __NAME__, __ATTRIBUTE__) _STRUCT_ARRAY_BASE(__VALUE__, __NAME__, __ATTRIBUTE__, __PROPERTY_ARRAY_COUNT__(__VALUE__))
2054#define _STRUCT_ARRAY_NAME_ATTRIBUTE_COUNT(__VALUE__, __NAME__, __ATTRIBUTE__, __COUNT__) _STRUCT_ARRAY_BASE(__VALUE__, __NAME__, __ATTRIBUTE__, __COUNT__)
2055
2056// 構造体ポインタプロパティ
2057#if GX_DEVELOP
2058#define _STRUCT_POINTER_BASE(__VALUE__, __ATTRIBUTE__, __NAME__, __TOP__, __SIZE__, __COUNT__) GxProperty( GxProperty::TYPE::STRUCT_POINTER, \
2059 GxProperty::GxFunction( ((size_t)(&((MyClass*)0)->__VALUE__)), __COUNT__, __SIZE__ ), GxProperty::ATTRIBUTE_NAME | GxProperty::ATTRIBUTE_REFERENCE | GxProperty::ATTRIBUTE_PACK_STRUCT | GxProperty::ATTRIBUTE_PACK_POINTER | __ATTRIBUTE__, \
2060 &__TOP__->getRtti(), &MyClass::GX_RTTI, GxMath::getHash32(__NAME__, MyClass::GX_RTTI.getId()), __NAME__, nullptr )
2061#else //GX_DEVELOP
2062#define _STRUCT_POINTER_BASE(__VALUE__, __ATTRIBUTE__, __NAME__, __TOP__, __SIZE__, __COUNT__) GxProperty( GxProperty::TYPE::STRUCT_POINTER, \
2063 GxProperty::GxFunction( ((size_t)(&((MyClass*)0)->__VALUE__)), __COUNT__, __SIZE__ ), GxProperty::ATTRIBUTE_NAME | GxProperty::ATTRIBUTE_REFERENCE | GxProperty::ATTRIBUTE_PACK_STRUCT | GxProperty::ATTRIBUTE_PACK_POINTER | __ATTRIBUTE__, \
2064 &__TOP__->getRtti(), &MyClass::GX_RTTI, GxMath::getHash32(__NAME__, MyClass::GX_RTTI.getId()) )
2065#endif // !GX_DEVELOP
2066
2067#define _STRUCT_POINTER(__VALUE__) _STRUCT_POINTER_BASE(__VALUE__, GxProperty::ATTRIBUTE_NONE, #__VALUE__, __PROPERTY_VALUE_OF__(__VALUE__), sizeof(__PROPERTY_VALUE_OF__(__VALUE__)), 0)
2068#define _STRUCT_POINTER_ATTRIBUTE(__VALUE__, __ATTRIBUTE__) _STRUCT_POINTER_BASE(__VALUE__, __ATTRIBUTE__, #__VALUE__, __PROPERTY_VALUE_OF__(__VALUE__), sizeof(__PROPERTY_VALUE_OF__(__VALUE__)), 0)
2069#define _STRUCT_POINTER_NAME(__VALUE__, __NAME__) _STRUCT_POINTER_BASE(__VALUE__, GxProperty::ATTRIBUTE_NONE, __NAME__, __PROPERTY_VALUE_OF__(__VALUE__), sizeof(__PROPERTY_VALUE_OF__(__VALUE__)), 0)
2070#define _STRUCT_POINTER_NAME_ATTRIBUTE(__VALUE__, __NAME__, __ATTRIBUTE__) _STRUCT_POINTER_BASE(__VALUE__, __ATTRIBUTE__, __NAME__, __PROPERTY_VALUE_OF__(__VALUE__), sizeof(__PROPERTY_VALUE_OF__(__VALUE__)), 0)
2071
2072// 構造体ポインタ配列プロパティ
2073#define _STRUCT_POINTER_ARRAY_BASE(__VALUE__, __NAME__, __ATTRIBUTE__, __COUNT__) _STRUCT_POINTER_BASE(__VALUE__, GxProperty::ATTRIBUTE_ARRAY | __ATTRIBUTE__, __NAME__, __PROPERTY_VALUE_OF__(__VALUE__)[0], sizeof(__PROPERTY_VALUE_OF__(__VALUE__)[0]), __COUNT__)
2074#define _STRUCT_POINTER_ARRAY(__VALUE__) _STRUCT_POINTER_ARRAY_BASE(__VALUE__, #__VALUE__, GxProperty::ATTRIBUTE_NONE, __PROPERTY_ARRAY_COUNT__(__VALUE__))
2075#define _STRUCT_POINTER_ARRAY_ATTRIBUTE(__VALUE__, __ATTRIBUTE__) _STRUCT_POINTER_ARRAY_BASE(__VALUE__, #__VALUE__, __ATTRIBUTE__, __PROPERTY_ARRAY_COUNT__(__VALUE__))
2076#define _STRUCT_POINTER_ARRAY_COUNT(__VALUE__, __COUNT__) _STRUCT_POINTER_ARRAY_BASE(__VALUE__, #__VALUE__, GxProperty::ATTRIBUTE_NONE, __COUNT__)
2077#define _STRUCT_POINTER_ARRAY_NAME(__VALUE__, __NAME__) _STRUCT_POINTER_ARRAY_BASE(__VALUE__, __NAME__, GxProperty::ATTRIBUTE_NONE, __PROPERTY_ARRAY_COUNT__(__VALUE__))
2078#define _STRUCT_POINTER_ARRAY_NAME_ATTRIBUTE(__VALUE__, __NAME__, __ATTRIBUTE__) _STRUCT_POINTER_ARRAY_BASE(__VALUE__, __NAME__, __ATTRIBUTE__, __PROPERTY_ARRAY_COUNT__(__VALUE__))
2079#define _STRUCT_POINTER_ARRAY_NAME_ATTRIBUTE_COUNT(__VALUE__, __NAME__, __ATTRIBUTE__, __COUNT__) _STRUCT_POINTER_ARRAY_BASE(__VALUE__, __NAME__, __ATTRIBUTE__, __COUNT__)
2080
2081// イベントプロパティ
2082#if GX_DEVELOP
2083#define _EVENT(__NAME__, __EVENT_FUNCTION__) GxProperty(GxProperty::TYPE::EVENT, GxProperty::GxUniqueFunction<MyClass>((GxProperty::EVENT_FUNCTION)__EVENT_FUNCTION__, nullptr), GxProperty::ATTRIBUTE_NAME | GxProperty::ATTRIBUTE_NOSERIALIZE, nullptr, &MyClass::GX_RTTI, GxMath::getHash32(__NAME__, MyClass::GX_RTTI.getId()), __NAME__, nullptr)
2084#else //GX_DEVELOP
2085#define _EVENT(__NAME__, __EVENT_FUNCTION__) GxProperty(GxProperty::TYPE::EVENT, GxProperty::GxUniqueFunction<MyClass>((GxProperty::EVENT_FUNCTION)__EVENT_FUNCTION__, nullptr), GxProperty::ATTRIBUTE_NAME | GxProperty::ATTRIBUTE_NOSERIALIZE, nullptr, &MyClass::GX_RTTI, GxMath::getHash32(__NAME__, MyClass::GX_RTTI.getId()))
2086#endif // !GX_DEVELOP
2087
2088// 何もしないイベント(メッセージダイアログなどでボタンを押したとき何もしないときなどに使用)
2089#if GX_DEVELOP
2090#define _EVENT_DUMMY() GxProperty( GxProperty::TYPE::UNKNOWN, GxProperty::GxFunction(), GxProperty::ATTRIBUTE_NAME|GxProperty::ATTRIBUTE_NOSERIALIZE, nullptr, &MyClass::GX_RTTI, GxMath::getHash32("", MyClass::GX_RTTI.getId()), "", nullptr )
2091#else //GX_DEVELOP
2092#define _EVENT_DUMMY() GxProperty( GxProperty::TYPE::UNKNOWN, GxProperty::GxFunction(), GxProperty::ATTRIBUTE_NAME|GxProperty::ATTRIBUTE_NOSERIALIZE, nullptr, &MyClass::GX_RTTI, GxMath::getHash32("", MyClass::GX_RTTI.getId()) )
2093#endif // !GX_DEVELOP
2094
2095// オブジェクト指定ありで引数なしのイベント
2096#if GX_DEVELOP
2097#define _EVENT_OBJECT(__NAME__, __EVENT_FUNCTION__, __OWNER__) GxProperty(GxProperty::TYPE::EVENT, GxProperty::GxUniqueFunction<MyClass>((GxProperty::EVENT_FUNCTION)__EVENT_FUNCTION__, __OWNER__), GxProperty::ATTRIBUTE_NAME | GxProperty::ATTRIBUTE_NOSERIALIZE, nullptr, &MyClass::GX_RTTI, GxMath::getHash32(__NAME__, MyClass::GX_RTTI.getId()), __NAME__, nullptr)
2098#else //GX_DEVELOP
2099#define _EVENT_OBJECT(__NAME__, __EVENT_FUNCTION__, __OWNER__) GxProperty(GxProperty::TYPE::EVENT, GxProperty::GxUniqueFunction<MyClass>((GxProperty::EVENT_FUNCTION)__EVENT_FUNCTION__, __OWNER__), GxProperty::ATTRIBUTE_NAME | GxProperty::ATTRIBUTE_NOSERIALIZE, nullptr, &MyClass::GX_RTTI, GxMath::getHash32(__NAME__, MyClass::GX_RTTI.getId()))
2100#endif // !GX_DEVELOP
2101
2102// オブジェクト指定なしで引数ありのイベント
2103#if GX_DEVELOP
2104#define _EVENT_ARGUMENT_POINTER(__NAME__, __EVENT_FUNCTION__, __ARGUMENT__) GxProperty(GxProperty::TYPE::EVENT_ARGUMENT, GxProperty::GxUniqueFunction<MyClass>((GxProperty::EVENT_ARGUMENT_FUNCTION_POINTER)__EVENT_FUNCTION__,nullptr,(void*)(size_t)__ARGUMENT__), GxProperty::ATTRIBUTE_NAME | GxProperty::ATTRIBUTE_NOSERIALIZE, nullptr, &MyClass::GX_RTTI, GxMath::getHash32(__NAME__, MyClass::GX_RTTI.getId()), __NAME__, nullptr)
2105#define _EVENT_ARGUMENT_B32(__NAME__, __EVENT_FUNCTION__, __ARGUMENT__) GxProperty(GxProperty::TYPE::EVENT_ARGUMENT, GxProperty::GxUniqueFunction<MyClass>((GxProperty::EVENT_ARGUMENT_FUNCTION_B32)__EVENT_FUNCTION__,nullptr, __ARGUMENT__), GxProperty::ATTRIBUTE_NAME | GxProperty::ATTRIBUTE_NOSERIALIZE, nullptr, &MyClass::GX_RTTI, GxMath::getHash32(__NAME__, MyClass::GX_RTTI.getId()), __NAME__, nullptr)
2106#define _EVENT_ARGUMENT_U32(__NAME__, __EVENT_FUNCTION__, __ARGUMENT__) GxProperty(GxProperty::TYPE::EVENT_ARGUMENT, GxProperty::GxUniqueFunction<MyClass>((GxProperty::EVENT_ARGUMENT_FUNCTION_U32)__EVENT_FUNCTION__,nullptr, __ARGUMENT__), GxProperty::ATTRIBUTE_NAME | GxProperty::ATTRIBUTE_NOSERIALIZE, nullptr, &MyClass::GX_RTTI, GxMath::getHash32(__NAME__, MyClass::GX_RTTI.getId()), __NAME__, nullptr)
2107#define _EVENT_ARGUMENT_S32(__NAME__, __EVENT_FUNCTION__, __ARGUMENT__) GxProperty(GxProperty::TYPE::EVENT_ARGUMENT, GxProperty::GxUniqueFunction<MyClass>((GxProperty::EVENT_ARGUMENT_FUNCTION_S32)__EVENT_FUNCTION__,nullptr, __ARGUMENT__), GxProperty::ATTRIBUTE_NAME | GxProperty::ATTRIBUTE_NOSERIALIZE, nullptr, &MyClass::GX_RTTI, GxMath::getHash32(__NAME__, MyClass::GX_RTTI.getId()), __NAME__, nullptr)
2108#define _EVENT_ARGUMENT_F32(__NAME__, __EVENT_FUNCTION__, __ARGUMENT__) GxProperty(GxProperty::TYPE::EVENT_ARGUMENT, GxProperty::GxUniqueFunction<MyClass>((GxProperty::EVENT_ARGUMENT_FUNCTION_F32)__EVENT_FUNCTION__,nullptr, __ARGUMENT__), GxProperty::ATTRIBUTE_NAME | GxProperty::ATTRIBUTE_NOSERIALIZE, nullptr, &MyClass::GX_RTTI, GxMath::getHash32(__NAME__, MyClass::GX_RTTI.getId()), __NAME__, nullptr)
2109#else //GX_DEVELOP
2110#define _EVENT_ARGUMENT_POINTER(__NAME__, __EVENT_FUNCTION__, __ARGUMENT__) GxProperty(GxProperty::TYPE::EVENT_ARGUMENT, GxProperty::GxUniqueFunction<MyClass>((GxProperty::EVENT_ARGUMENT_FUNCTION_POINTER)__EVENT_FUNCTION__,nullptr,(void*)(size_t)__ARGUMENT__), GxProperty::ATTRIBUTE_NAME | GxProperty::ATTRIBUTE_NOSERIALIZE, nullptr, &MyClass::GX_RTTI, GxMath::getHash32(__NAME__, MyClass::GX_RTTI.getId()))
2111#define _EVENT_ARGUMENT_B32(__NAME__, __EVENT_FUNCTION__, __ARGUMENT__) GxProperty(GxProperty::TYPE::EVENT_ARGUMENT, GxProperty::GxUniqueFunction<MyClass>((GxProperty::EVENT_ARGUMENT_FUNCTION_B32)__EVENT_FUNCTION__,nullptr, __ARGUMENT__), GxProperty::ATTRIBUTE_NAME | GxProperty::ATTRIBUTE_NOSERIALIZE, nullptr, &MyClass::GX_RTTI, GxMath::getHash32(__NAME__, MyClass::GX_RTTI.getId()))
2112#define _EVENT_ARGUMENT_U32(__NAME__, __EVENT_FUNCTION__, __ARGUMENT__) GxProperty(GxProperty::TYPE::EVENT_ARGUMENT, GxProperty::GxUniqueFunction<MyClass>((GxProperty::EVENT_ARGUMENT_FUNCTION_U32)__EVENT_FUNCTION__,nullptr, __ARGUMENT__), GxProperty::ATTRIBUTE_NAME | GxProperty::ATTRIBUTE_NOSERIALIZE, nullptr, &MyClass::GX_RTTI, GxMath::getHash32(__NAME__, MyClass::GX_RTTI.getId()))
2113#define _EVENT_ARGUMENT_S32(__NAME__, __EVENT_FUNCTION__, __ARGUMENT__) GxProperty(GxProperty::TYPE::EVENT_ARGUMENT, GxProperty::GxUniqueFunction<MyClass>((GxProperty::EVENT_ARGUMENT_FUNCTION_S32)__EVENT_FUNCTION__,nullptr, __ARGUMENT__), GxProperty::ATTRIBUTE_NAME | GxProperty::ATTRIBUTE_NOSERIALIZE, nullptr, &MyClass::GX_RTTI, GxMath::getHash32(__NAME__, MyClass::GX_RTTI.getId()))
2114#define _EVENT_ARGUMENT_F32(__NAME__, __EVENT_FUNCTION__, __ARGUMENT__) GxProperty(GxProperty::TYPE::EVENT_ARGUMENT, GxProperty::GxUniqueFunction<MyClass>((GxProperty::EVENT_ARGUMENT_FUNCTION_F32)__EVENT_FUNCTION__,nullptr, __ARGUMENT__), GxProperty::ATTRIBUTE_NAME | GxProperty::ATTRIBUTE_NOSERIALIZE, nullptr, &MyClass::GX_RTTI, GxMath::getHash32(__NAME__, MyClass::GX_RTTI.getId()))
2115#endif // !GX_DEVELOP
2116
2117// オブジェクト指定ありで引数ありのイベント
2118#if GX_DEVELOP
2119#define _EVENT_ARGUMENT_POINTER_OBJECT(__NAME__, __EVENT_FUNCTION__, __ARGUMENT__, __OWNER__) GxProperty(GxProperty::TYPE::EVENT_ARGUMENT, GxProperty::GxUniqueFunction<MyClass>((GxProperty::EVENT_ARGUMENT_FUNCTION_POINTER)__EVENT_FUNCTION__, __OWNER__,(void*)(size_t)__ARGUMENT__), GxProperty::ATTRIBUTE_NAME | GxProperty::ATTRIBUTE_NOSERIALIZE, nullptr, &MyClass::GX_RTTI, GxMath::getHash32(__NAME__, MyClass::GX_RTTI.getId()), __NAME__, nullptr)
2120#define _EVENT_ARGUMENT_B32_OBJECT(__NAME__, __EVENT_FUNCTION__, __ARGUMENT__, __OWNER__) GxProperty(GxProperty::TYPE::EVENT_ARGUMENT, GxProperty::GxUniqueFunction<MyClass>((GxProperty::EVENT_ARGUMENT_FUNCTION_B32)__EVENT_FUNCTION__, __OWNER__, __ARGUMENT__), GxProperty::ATTRIBUTE_NAME | GxProperty::ATTRIBUTE_NOSERIALIZE, nullptr, &MyClass::GX_RTTI, GxMath::getHash32(__NAME__, MyClass::GX_RTTI.getId()), __NAME__, nullptr)
2121#define _EVENT_ARGUMENT_U32_OBJECT(__NAME__, __EVENT_FUNCTION__, __ARGUMENT__, __OWNER__) GxProperty(GxProperty::TYPE::EVENT_ARGUMENT, GxProperty::GxUniqueFunction<MyClass>((GxProperty::EVENT_ARGUMENT_FUNCTION_U32)__EVENT_FUNCTION__, __OWNER__, __ARGUMENT__), GxProperty::ATTRIBUTE_NAME | GxProperty::ATTRIBUTE_NOSERIALIZE, nullptr, &MyClass::GX_RTTI, GxMath::getHash32(__NAME__, MyClass::GX_RTTI.getId()), __NAME__, nullptr)
2122#define _EVENT_ARGUMENT_S32_OBJECT(__NAME__, __EVENT_FUNCTION__, __ARGUMENT__, __OWNER__) GxProperty(GxProperty::TYPE::EVENT_ARGUMENT, GxProperty::GxUniqueFunction<MyClass>((GxProperty::EVENT_ARGUMENT_FUNCTION_S32)__EVENT_FUNCTION__, __OWNER__, __ARGUMENT__), GxProperty::ATTRIBUTE_NAME | GxProperty::ATTRIBUTE_NOSERIALIZE, nullptr, &MyClass::GX_RTTI, GxMath::getHash32(__NAME__, MyClass::GX_RTTI.getId()), __NAME__, nullptr)
2123#define _EVENT_ARGUMENT_F32_OBJECT(__NAME__, __EVENT_FUNCTION__, __ARGUMENT__, __OWNER__) GxProperty(GxProperty::TYPE::EVENT_ARGUMENT, GxProperty::GxUniqueFunction<MyClass>((GxProperty::EVENT_ARGUMENT_FUNCTION_F32)__EVENT_FUNCTION__, __OWNER__, __ARGUMENT__), GxProperty::ATTRIBUTE_NAME | GxProperty::ATTRIBUTE_NOSERIALIZE, nullptr, &MyClass::GX_RTTI, GxMath::getHash32(__NAME__, MyClass::GX_RTTI.getId()), __NAME__, nullptr)
2124#else //GX_DEVELOP
2125#define _EVENT_ARGUMENT_POINTER_OBJECT(__NAME__, __EVENT_FUNCTION__, __ARGUMENT__, __OWNER__) GxProperty(GxProperty::TYPE::EVENT_ARGUMENT, GxProperty::GxUniqueFunction<MyClass>((GxProperty::EVENT_ARGUMENT_FUNCTION_POINTER)__EVENT_FUNCTION__, __OWNER__,(void*)(size_t)__ARGUMENT__), GxProperty::ATTRIBUTE_NAME | GxProperty::ATTRIBUTE_NOSERIALIZE, nullptr, &MyClass::GX_RTTI, GxMath::getHash32(__NAME__, MyClass::GX_RTTI.getId()))
2126#define _EVENT_ARGUMENT_B32_OBJECT(__NAME__, __EVENT_FUNCTION__, __ARGUMENT__, __OWNER__) GxProperty(GxProperty::TYPE::EVENT_ARGUMENT, GxProperty::GxUniqueFunction<MyClass>((GxProperty::EVENT_ARGUMENT_FUNCTION_B32)__EVENT_FUNCTION__, __OWNER__, __ARGUMENT__), GxProperty::ATTRIBUTE_NAME | GxProperty::ATTRIBUTE_NOSERIALIZE, nullptr, &MyClass::GX_RTTI, GxMath::getHash32(__NAME__, MyClass::GX_RTTI.getId()))
2127#define _EVENT_ARGUMENT_U32_OBJECT(__NAME__, __EVENT_FUNCTION__, __ARGUMENT__, __OWNER__) GxProperty(GxProperty::TYPE::EVENT_ARGUMENT, GxProperty::GxUniqueFunction<MyClass>((GxProperty::EVENT_ARGUMENT_FUNCTION_U32)__EVENT_FUNCTION__, __OWNER__, __ARGUMENT__), GxProperty::ATTRIBUTE_NAME | GxProperty::ATTRIBUTE_NOSERIALIZE, nullptr, &MyClass::GX_RTTI, GxMath::getHash32(__NAME__, MyClass::GX_RTTI.getId()))
2128#define _EVENT_ARGUMENT_S32_OBJECT(__NAME__, __EVENT_FUNCTION__, __ARGUMENT__, __OWNER__) GxProperty(GxProperty::TYPE::EVENT_ARGUMENT, GxProperty::GxUniqueFunction<MyClass>((GxProperty::EVENT_ARGUMENT_FUNCTION_S32)__EVENT_FUNCTION__, __OWNER__, __ARGUMENT__), GxProperty::ATTRIBUTE_NAME | GxProperty::ATTRIBUTE_NOSERIALIZE, nullptr, &MyClass::GX_RTTI, GxMath::getHash32(__NAME__, MyClass::GX_RTTI.getId()))
2129#define _EVENT_ARGUMENT_F32_OBJECT(__NAME__, __EVENT_FUNCTION__, __ARGUMENT__, __OWNER__) GxProperty(GxProperty::TYPE::EVENT_ARGUMENT, GxProperty::GxUniqueFunction<MyClass>((GxProperty::EVENT_ARGUMENT_FUNCTION_F32)__EVENT_FUNCTION__, __OWNER__, __ARGUMENT__), GxProperty::ATTRIBUTE_NAME | GxProperty::ATTRIBUTE_NOSERIALIZE, nullptr, &MyClass::GX_RTTI, GxMath::getHash32(__NAME__, MyClass::GX_RTTI.getId()))
2130#endif // !GX_DEVELOP
2131
2132// オブジェクト指定なしで引数なしのイベント
2133#if GX_DEVELOP
2134#define _STRUCT_EVENT(__NAME__, __EVENT_FUNCTION__) GxProperty(GxProperty::TYPE::EVENT, GxProperty::GxStructUniqueFunction((GxProperty::EVENT_FUNCTION)__EVENT_FUNCTION__,nullptr), GxProperty::ATTRIBUTE_NAME | GxProperty::ATTRIBUTE_NOSERIALIZE, nullptr, &MyClass::GX_RTTI, GxMath::getHash32(__NAME__, MyClass::GX_RTTI.getId()), __NAME__, nullptr)
2135#else //GX_DEVELOP
2136#define _STRUCT_EVENT(__NAME__, __EVENT_FUNCTION__) GxProperty(GxProperty::TYPE::EVENT, GxProperty::GxStructUniqueFunction((GxProperty::EVENT_FUNCTION)__EVENT_FUNCTION__,nullptr), GxProperty::ATTRIBUTE_NAME | GxProperty::ATTRIBUTE_NOSERIALIZE, nullptr, &MyClass::GX_RTTI, GxMath::getHash32(__NAME__, MyClass::GX_RTTI.getId()))
2137#endif // !GX_DEVELOP
2138
2139// オブジェクト指定ありで引数なしのイベント
2140#if GX_DEVELOP
2141#define _STRUCT_EVENT_OBJECT(__NAME__, __EVENT_FUNCTION__, __OWNER__) GxProperty(GxProperty::TYPE::EVENT, GxProperty::GxStructUniqueFunction((GxProperty::EVENT_FUNCTION)__EVENT_FUNCTION__, __OWNER__), GxProperty::ATTRIBUTE_NAME | GxProperty::ATTRIBUTE_NOSERIALIZE, nullptr, &MyClass::GX_RTTI, GxMath::getHash32(__NAME__, MyClass::GX_RTTI.getId()), __NAME__, nullptr)
2142#else //GX_DEVELOP
2143#define _STRUCT_EVENT_OBJECT(__NAME__, __EVENT_FUNCTION__, __OWNER__) GxProperty(GxProperty::TYPE::EVENT, GxProperty::GxStructUniqueFunction((GxProperty::EVENT_FUNCTION)__EVENT_FUNCTION__, __OWNER__), GxProperty::ATTRIBUTE_NAME | GxProperty::ATTRIBUTE_NOSERIALIZE, nullptr, &MyClass::GX_RTTI, GxMath::getHash32(__NAME__, MyClass::GX_RTTI.getId()))
2144#endif // !GX_DEVELOP
2145
2146// オブジェクト指定なしで引数ありのイベント
2147#if GX_DEVELOP
2148#define _STRUCT_EVENT_ARGUMENT_POINTER(__NAME__, __EVENT_FUNCTION__, __ARGUMENT__) GxProperty(GxProperty::TYPE::EVENT_ARGUMENT, GxProperty::GxStructUniqueFunction((GxProperty::EVENT_ARGUMENT_FUNCTION_POINTER)__EVENT_FUNCTION__,nullptr,(void*)(size_t)__ARGUMENT__), (GxProperty::ATTRIBUTE)(GxProperty::ATTRIBUTE_NAME | GxProperty::ATTRIBUTE_NOSERIALIZE), nullptr, &MyClass::GX_RTTI, GxMath::getHash32(__NAME__, MyClass::GX_RTTI.getId()), __NAME__, nullptr)
2149#define _STRUCT_EVENT_ARGUMENT_B32(__NAME__, __EVENT_FUNCTION__, __ARGUMENT__) GxProperty(GxProperty::TYPE::EVENT_ARGUMENT, GxProperty::GxStructUniqueFunction((GxProperty::EVENT_ARGUMENT_FUNCTION_B32)__EVENT_FUNCTION__,nullptr, __ARGUMENT__), GxProperty::ATTRIBUTE_NAME | GxProperty::ATTRIBUTE_NOSERIALIZE, nullptr, &MyClass::GX_RTTI, GxMath::getHash32(__NAME__, MyClass::GX_RTTI.getId()), __NAME__, nullptr)
2150#define _STRUCT_EVENT_ARGUMENT_U32(__NAME__, __EVENT_FUNCTION__, __ARGUMENT__) GxProperty(GxProperty::TYPE::EVENT_ARGUMENT, GxProperty::GxStructUniqueFunction((GxProperty::EVENT_ARGUMENT_FUNCTION_U32)__EVENT_FUNCTION__,nullptr, __ARGUMENT__), GxProperty::ATTRIBUTE_NAME | GxProperty::ATTRIBUTE_NOSERIALIZE, nullptr, &MyClass::GX_RTTI, GxMath::getHash32(__NAME__, MyClass::GX_RTTI.getId()), __NAME__, nullptr)
2151#define _STRUCT_EVENT_ARGUMENT_S32(__NAME__, __EVENT_FUNCTION__, __ARGUMENT__) GxProperty(GxProperty::TYPE::EVENT_ARGUMENT, GxProperty::GxStructUniqueFunction((GxProperty::EVENT_ARGUMENT_FUNCTION_S32)__EVENT_FUNCTION__,nullptr, __ARGUMENT__), GxProperty::ATTRIBUTE_NAME | GxProperty::ATTRIBUTE_NOSERIALIZE, nullptr, &MyClass::GX_RTTI, GxMath::getHash32(__NAME__, MyClass::GX_RTTI.getId()), __NAME__, nullptr)
2152#define _STRUCT_EVENT_ARGUMENT_F32(__NAME__, __EVENT_FUNCTION__, __ARGUMENT__) GxProperty(GxProperty::TYPE::EVENT_ARGUMENT, GxProperty::GxStructUniqueFunction((GxProperty::EVENT_ARGUMENT_FUNCTION_F32)__EVENT_FUNCTION__,nullptr, __ARGUMENT__), GxProperty::ATTRIBUTE_NAME | GxProperty::ATTRIBUTE_NOSERIALIZE, nullptr, &MyClass::GX_RTTI, GxMath::getHash32(__NAME__, MyClass::GX_RTTI.getId()), __NAME__, nullptr)
2153#else //GX_DEVELOP
2154#define _STRUCT_EVENT_ARGUMENT_POINTER(__NAME__, __EVENT_FUNCTION__, __ARGUMENT__) GxProperty(GxProperty::TYPE::EVENT_ARGUMENT, GxProperty::GxStructUniqueFunction((GxProperty::EVENT_ARGUMENT_FUNCTION_POINTER)__EVENT_FUNCTION__,nullptr,(void*)(size_t)__ARGUMENT__), (GxProperty::ATTRIBUTE)(GxProperty::ATTRIBUTE_NAME | GxProperty::ATTRIBUTE_NOSERIALIZE), nullptr, &MyClass::GX_RTTI, GxMath::getHash32(__NAME__, MyClass::GX_RTTI.getId()))
2155#define _STRUCT_EVENT_ARGUMENT_B32(__NAME__, __EVENT_FUNCTION__, __ARGUMENT__) GxProperty(GxProperty::TYPE::EVENT_ARGUMENT, GxProperty::GxStructUniqueFunction((GxProperty::EVENT_ARGUMENT_FUNCTION_B32)__EVENT_FUNCTION__,nullptr, __ARGUMENT__), GxProperty::ATTRIBUTE_NAME | GxProperty::ATTRIBUTE_NOSERIALIZE, nullptr, &MyClass::GX_RTTI, GxMath::getHash32(__NAME__, MyClass::GX_RTTI.getId()))
2156#define _STRUCT_EVENT_ARGUMENT_U32(__NAME__, __EVENT_FUNCTION__, __ARGUMENT__) GxProperty(GxProperty::TYPE::EVENT_ARGUMENT, GxProperty::GxStructUniqueFunction((GxProperty::EVENT_ARGUMENT_FUNCTION_U32)__EVENT_FUNCTION__,nullptr, __ARGUMENT__), GxProperty::ATTRIBUTE_NAME | GxProperty::ATTRIBUTE_NOSERIALIZE, nullptr, &MyClass::GX_RTTI, GxMath::getHash32(__NAME__, MyClass::GX_RTTI.getId()))
2157#define _STRUCT_EVENT_ARGUMENT_S32(__NAME__, __EVENT_FUNCTION__, __ARGUMENT__) GxProperty(GxProperty::TYPE::EVENT_ARGUMENT, GxProperty::GxStructUniqueFunction((GxProperty::EVENT_ARGUMENT_FUNCTION_S32)__EVENT_FUNCTION__,nullptr, __ARGUMENT__), GxProperty::ATTRIBUTE_NAME | GxProperty::ATTRIBUTE_NOSERIALIZE, nullptr, &MyClass::GX_RTTI, GxMath::getHash32(__NAME__, MyClass::GX_RTTI.getId()))
2158#define _STRUCT_EVENT_ARGUMENT_F32(__NAME__, __EVENT_FUNCTION__, __ARGUMENT__) GxProperty(GxProperty::TYPE::EVENT_ARGUMENT, GxProperty::GxStructUniqueFunction((GxProperty::EVENT_ARGUMENT_FUNCTION_F32)__EVENT_FUNCTION__,nullptr, __ARGUMENT__), GxProperty::ATTRIBUTE_NAME | GxProperty::ATTRIBUTE_NOSERIALIZE, nullptr, &MyClass::GX_RTTI, GxMath::getHash32(__NAME__, MyClass::GX_RTTI.getId()))
2159#endif // !GX_DEVELOP
2160
2161// オブジェクト指定ありで引数ありのイベント
2162#if GX_DEVELOP
2163#define _STRUCT_EVENT_ARGUMENT_POINTER_OBJECT(__NAME__, __EVENT_FUNCTION__, __ARGUMENT__, __OWNER__) GxProperty(GxProperty::TYPE::EVENT_ARGUMENT, GxProperty::GxStructUniqueFunction((GxProperty::EVENT_ARGUMENT_FUNCTION_POINTER)__EVENT_FUNCTION__, __OWNER__,(void*)(size_t)__ARGUMENT__), (GxProperty::ATTRIBUTE)(GxProperty::ATTRIBUTE_NAME | GxProperty::ATTRIBUTE_NOSERIALIZE), nullptr, &MyClass::GX_RTTI, GxMath::getHash32(__NAME__, MyClass::GX_RTTI.getId()), __NAME__, nullptr)
2164#define _STRUCT_EVENT_ARGUMENT_B32_OBJECT(__NAME__, __EVENT_FUNCTION__, __ARGUMENT__, __OWNER__) GxProperty(GxProperty::TYPE::EVENT_ARGUMENT, GxProperty::GxStructUniqueFunction((GxProperty::EVENT_ARGUMENT_FUNCTION_B32)__EVENT_FUNCTION__, __OWNER__, __ARGUMENT__), GxProperty::ATTRIBUTE_NAME | GxProperty::ATTRIBUTE_NOSERIALIZE, nullptr, &MyClass::GX_RTTI, GxMath::getHash32(__NAME__, MyClass::GX_RTTI.getId()), __NAME__, nullptr)
2165#define _STRUCT_EVENT_ARGUMENT_U32_OBJECT(__NAME__, __EVENT_FUNCTION__, __ARGUMENT__, __OWNER__) GxProperty(GxProperty::TYPE::EVENT_ARGUMENT, GxProperty::GxStructUniqueFunction((GxProperty::EVENT_ARGUMENT_FUNCTION_U32)__EVENT_FUNCTION__, __OWNER__, __ARGUMENT__), GxProperty::ATTRIBUTE_NAME | GxProperty::ATTRIBUTE_NOSERIALIZE, nullptr, &MyClass::GX_RTTI, GxMath::getHash32(__NAME__, MyClass::GX_RTTI.getId()), __NAME__, nullptr)
2166#define _STRUCT_EVENT_ARGUMENT_S32_OBJECT(__NAME__, __EVENT_FUNCTION__, __ARGUMENT__, __OWNER__) GxProperty(GxProperty::TYPE::EVENT_ARGUMENT, GxProperty::GxStructUniqueFunction((GxProperty::EVENT_ARGUMENT_FUNCTION_S32)__EVENT_FUNCTION__, __OWNER__, __ARGUMENT__), GxProperty::ATTRIBUTE_NAME | GxProperty::ATTRIBUTE_NOSERIALIZE, nullptr, &MyClass::GX_RTTI, GxMath::getHash32(__NAME__, MyClass::GX_RTTI.getId()), __NAME__, nullptr)
2167#define _STRUCT_EVENT_ARGUMENT_F32_OBJECT(__NAME__, __EVENT_FUNCTION__, __ARGUMENT__, __OWNER__) GxProperty(GxProperty::TYPE::EVENT_ARGUMENT, GxProperty::GxStructUniqueFunction((GxProperty::EVENT_ARGUMENT_FUNCTION_F32)__EVENT_FUNCTION__, __OWNER__, __ARGUMENT__), GxProperty::ATTRIBUTE_NAME | GxProperty::ATTRIBUTE_NOSERIALIZE, nullptr, &MyClass::GX_RTTI, GxMath::getHash32(__NAME__, MyClass::GX_RTTI.getId()), __NAME__, nullptr)
2168#else //GX_DEVELOP
2169#define _STRUCT_EVENT_ARGUMENT_POINTER_OBJECT(__NAME__, __EVENT_FUNCTION__, __ARGUMENT__, __OWNER__) GxProperty(GxProperty::TYPE::EVENT_ARGUMENT, GxProperty::GxStructUniqueFunction((GxProperty::EVENT_ARGUMENT_FUNCTION_POINTER)__EVENT_FUNCTION__, __OWNER__,(void*)(size_t)__ARGUMENT__), (GxProperty::ATTRIBUTE)(GxProperty::ATTRIBUTE_NAME | GxProperty::ATTRIBUTE_NOSERIALIZE), nullptr, &MyClass::GX_RTTI, GxMath::getHash32(__NAME__, MyClass::GX_RTTI.getId()))
2170#define _STRUCT_EVENT_ARGUMENT_B32_OBJECT(__NAME__, __EVENT_FUNCTION__, __ARGUMENT__, __OWNER__) GxProperty(GxProperty::TYPE::EVENT_ARGUMENT, GxProperty::GxStructUniqueFunction((GxProperty::EVENT_ARGUMENT_FUNCTION_B32)__EVENT_FUNCTION__, __OWNER__, __ARGUMENT__), GxProperty::ATTRIBUTE_NAME | GxProperty::ATTRIBUTE_NOSERIALIZE, nullptr, &MyClass::GX_RTTI, GxMath::getHash32(__NAME__, MyClass::GX_RTTI.getId()))
2171#define _STRUCT_EVENT_ARGUMENT_U32_OBJECT(__NAME__, __EVENT_FUNCTION__, __ARGUMENT__, __OWNER__) GxProperty(GxProperty::TYPE::EVENT_ARGUMENT, GxProperty::GxStructUniqueFunction((GxProperty::EVENT_ARGUMENT_FUNCTION_U32)__EVENT_FUNCTION__, __OWNER__, __ARGUMENT__), GxProperty::ATTRIBUTE_NAME | GxProperty::ATTRIBUTE_NOSERIALIZE, nullptr, &MyClass::GX_RTTI, GxMath::getHash32(__NAME__, MyClass::GX_RTTI.getId()))
2172#define _STRUCT_EVENT_ARGUMENT_S32_OBJECT(__NAME__, __EVENT_FUNCTION__, __ARGUMENT__, __OWNER__) GxProperty(GxProperty::TYPE::EVENT_ARGUMENT, GxProperty::GxStructUniqueFunction((GxProperty::EVENT_ARGUMENT_FUNCTION_S32)__EVENT_FUNCTION__, __OWNER__, __ARGUMENT__), GxProperty::ATTRIBUTE_NAME | GxProperty::ATTRIBUTE_NOSERIALIZE, nullptr, &MyClass::GX_RTTI, GxMath::getHash32(__NAME__, MyClass::GX_RTTI.getId()))
2173#define _STRUCT_EVENT_ARGUMENT_F32_OBJECT(__NAME__, __EVENT_FUNCTION__, __ARGUMENT__, __OWNER__) GxProperty(GxProperty::TYPE::EVENT_ARGUMENT, GxProperty::GxStructUniqueFunction((GxProperty::EVENT_ARGUMENT_FUNCTION_F32)__EVENT_FUNCTION__, __OWNER__, __ARGUMENT__), GxProperty::ATTRIBUTE_NAME | GxProperty::ATTRIBUTE_NOSERIALIZE, nullptr, &MyClass::GX_RTTI, GxMath::getHash32(__NAME__, MyClass::GX_RTTI.getId()))
2174#endif // !GX_DEVELOP
2175
2176// カスタムプロパティ
2177#if GX_DEVELOP
2178#define _CUSTOM_PROPERTY_BASE(__VALUE__, __ATTRIBUTE__, __SIZE__, __COUNT__) GxProperty( GxProperty::TYPE::CUSTOM, \
2179 GxProperty::GxFunction(((size_t)(&((MyClass*)0)->__VALUE__)), __COUNT__, __SIZE__), GxProperty::ATTRIBUTE_NAME | GxProperty::ATTRIBUTE_VALUE | __ATTRIBUTE__, \
2180 nullptr, &MyClass::GX_RTTI, GxMath::getHash32(#__VALUE__, MyClass::GX_RTTI.getId()), #__VALUE__, nullptr )
2181#else //GX_DEVELOP
2182#define _CUSTOM_PROPERTY_BASE(__VALUE__, __ATTRIBUTE__, __SIZE__, __COUNT__) GxProperty( GxProperty::TYPE::CUSTOM, \
2183 GxProperty::GxFunction(((size_t)(&((MyClass*)0)->__VALUE__)), __COUNT__, __SIZE__), GxProperty::ATTRIBUTE_NAME | GxProperty::ATTRIBUTE_VALUE | __ATTRIBUTE__, \
2184 nullptr, &MyClass::GX_RTTI, GxMath::getHash32(#__VALUE__, MyClass::GX_RTTI.getId()) )
2185#endif // !GX_DEVELOP
2186
2187#define _CUSTOM_PROPERTY(__VALUE__) _CUSTOM_PROPERTY_BASE(__VALUE__, GxProperty::ATTRIBUTE_NONE, sizeof(__PROPERTY_VALUE_OF__(__VALUE__)), 0)
2188#define _CUSTOM_PROPERTY_ARRAY(__VALUE__) _CUSTOM_PROPERTY_BASE(__VALUE__, GxProperty::ATTRIBUTE_ARRAY, sizeof(__PROPERTY_VALUE_OF__(__VALUE__)[0]), __PROPERTY_ARRAY_COUNT__(__VALUE__))
2189#define _CUSTOM_PROPERTY_ARRAY_COUNT(__VALUE__, __COUNT__) _CUSTOM_PROPERTY_BASE(__VALUE__, GxProperty::ATTRIBUTE_ARRAY, sizeof(__PROPERTY_VALUE_OF__(__VALUE__)[0]), __COUNT__)
2190
2191// カスタムプロパティのポインタ
2192#if GX_DEVELOP
2193#define _CUSTOM_PROPERTY_POINTER_BASE(__CLASS__, __VALUE__, __NAME__, __ATTRIBUTE__, __SIZE__, __COUNT__) GxProperty( GxProperty::TYPE::CUSTOM_POINTER, \
2194 GxProperty::GxFunction(((size_t)(&((MyClass*)0)->__VALUE__)), __COUNT__, __SIZE__), GxProperty::ATTRIBUTE_NAME | GxProperty::ATTRIBUTE_VALUE | GxProperty::ATTRIBUTE_PACK_POINTER | __ATTRIBUTE__, \
2195 &__CLASS__::GX_RTTI, &MyClass::GX_RTTI, GxMath::getHash32(#__VALUE__, MyClass::GX_RTTI.getId()), __NAME__, nullptr )
2196#else //GX_DEVELOP
2197#define _CUSTOM_PROPERTY_POINTER_BASE(__CLASS__, __VALUE__, __NAME__, __ATTRIBUTE__, __SIZE__, __COUNT__) GxProperty( GxProperty::TYPE::CUSTOM_POINTER, \
2198 GxProperty::GxFunction(((size_t)(&((MyClass*)0)->__VALUE__)), __COUNT__, __SIZE__), GxProperty::ATTRIBUTE_NAME | GxProperty::ATTRIBUTE_VALUE | GxProperty::ATTRIBUTE_PACK_POINTER | __ATTRIBUTE__, \
2199 &__CLASS__::GX_RTTI, &MyClass::GX_RTTI, GxMath::getHash32(#__VALUE__, MyClass::GX_RTTI.getId()) )
2200#endif // !GX_DEVELOP
2201
2202#define _CUSTOM_PROPERTY_POINTER(__CLASS__, __VALUE__) _CUSTOM_PROPERTY_POINTER_BASE(__CLASS__, __VALUE__, #__VALUE__, GxProperty::ATTRIBUTE_NONE, sizeof(__PROPERTY_VALUE_OF__(__VALUE__)), 0)
2203#define _CUSTOM_PROPERTY_POINTER_ATTRIBUTE(__CLASS__, __VALUE__, __ATTRIBUTE__) _CUSTOM_PROPERTY_POINTER_BASE(__CLASS__, __VALUE__, #__VALUE__, __ATTRIBUTE__, sizeof(__PROPERTY_VALUE_OF__(__VALUE__)), 0)
2204#define _CUSTOM_PROPERTY_POINTER_NAME(__CLASS__, __VALUE__, __NAME__) _CUSTOM_PROPERTY_POINTER_BASE(__CLASS__, __VALUE__, __NAME__, GxProperty::ATTRIBUTE_NONE, sizeof(__PROPERTY_VALUE_OF__(__VALUE__)), 0)
2205#define _CUSTOM_PROPERTY_POINTER_NAME_ATTRIBUTE(__CLASS__, __VALUE__, __NAME__, __ATTRIBUTE__) _CUSTOM_PROPERTY_POINTER_BASE(__CLASS__, __VALUE__, __NAME__, __ATTRIBUTE__, sizeof(__PROPERTY_VALUE_OF__(__VALUE__)), 0)
2206#define _CUSTOM_PROPERTY_POINTER_ARRAY(__CLASS__, __VALUE__) _CUSTOM_PROPERTY_POINTER_BASE(__CLASS__, __VALUE__, #__VALUE__, GxProperty::ATTRIBUTE_ARRAY, sizeof(__PROPERTY_VALUE_OF__(__VALUE__)[0]), __PROPERTY_ARRAY_COUNT__(__VALUE__))
2207#define _CUSTOM_PROPERTY_POINTER_ARRAY_COUNT(__CLASS__, __VALUE__, __COUNT__) _CUSTOM_PROPERTY_POINTER_BASE(__CLASS__, __VALUE__, #__VALUE__, GxProperty::ATTRIBUTE_ARRAY, sizeof(__PROPERTY_VALUE_OF__(__VALUE__)[0]), __COUNT__)
2208#define _CUSTOM_PROPERTY_POINTER_ARRAY_NAME(__CLASS__, __VALUE__, __NAME__) _CUSTOM_PROPERTY_POINTER_BASE(__CLASS__, __VALUE__, __NAME__, GxProperty::ATTRIBUTE_ARRAY, sizeof(__PROPERTY_VALUE_OF__(__VALUE__)[0]), __PROPERTY_ARRAY_COUNT__(__VALUE__))
2209#define _CUSTOM_PROPERTY_POINTER_ARRAY_NAME_COUNT(__CLASS__, __VALUE__, __NAME__, __COUNT__) _CUSTOM_PROPERTY_POINTER_BASE(__CLASS__, __VALUE__, __NAME__, GxProperty::ATTRIBUTE_ARRAY, sizeof(__PROPERTY_VALUE_OF__(__VALUE__)[0]), __COUNT__)
2210
2211#if GX_DEVELOP
2212#define _CUSTOM_PROPERTY_POINTER_CUSTOM_BASE(__CLASS__, __NAME__, __GET_VALUE_FUNCTION__, __SET_VALUE_FUNCTION__, __ATTRIBUTE__) GxProperty( GxProperty::TYPE::CUSTOM_POINTER, \
2213 GxProperty::GxUniqueFunction<MyClass>( (GxProperty::GxUniqueFunction<MyClass>::GET_VALUE_FUNCTION)__GET_VALUE_FUNCTION__, (GxProperty::GxUniqueFunction<MyClass>::SET_VALUE_FUNCTION)__SET_VALUE_FUNCTION__ ), GxProperty::ATTRIBUTE_NAME | GxProperty::ATTRIBUTE_POINTER | __ATTRIBUTE__, \
2214 &__CLASS__::GX_RTTI, &MyClass::GX_RTTI, GxMath::getHash32(__NAME__, MyClass::GX_RTTI.getId()), __NAME__, nullptr )
2215#else //GX_DEVELOP
2216#define _CUSTOM_PROPERTY_POINTER_CUSTOM_BASE(__CLASS__, __NAME__, __GET_VALUE_FUNCTION__, __SET_VALUE_FUNCTION__, __ATTRIBUTE__) GxProperty( GxProperty::TYPE::CUSTOM_POINTER, \
2217 GxProperty::GxUniqueFunction<MyClass>( (GxProperty::GxUniqueFunction<MyClass>::GET_VALUE_FUNCTION)__GET_VALUE_FUNCTION__, (GxProperty::GxUniqueFunction<MyClass>::SET_VALUE_FUNCTION)__SET_VALUE_FUNCTION__ ), GxProperty::ATTRIBUTE_NAME | GxProperty::ATTRIBUTE_POINTER | __ATTRIBUTE__, \
2218 &__CLASS__::GX_RTTI, &MyClass::GX_RTTI, GxMath::getHash32(__NAME__, MyClass::GX_RTTI.getId()) )
2219#endif // !GX_DEVELOP
2220
2221#define _CUSTOM_PROPERTY_POINTER_CUSTOM(__CLASS__, __NAME__, __GET_VALUE_FUNCTION__, __SET_VALUE_FUNCTION__) _CUSTOM_PROPERTY_POINTER_CUSTOM_BASE(__CLASS__, __NAME__, __GET_VALUE_FUNCTION__, __SET_VALUE_FUNCTION__, GxProperty::ATTRIBUTE_NONE)
2222#define _CUSTOM_PROPERTY_POINTER_CUSTOM_ATTRIBUTE(__CLASS__, __NAME__, __GET_VALUE_FUNCTION__, __SET_VALUE_FUNCTION__, __ATTRIBUTE__) _CUSTOM_PROPERTY_POINTER_CUSTOM_BASE(__CLASS__, __NAME__, __GET_VALUE_FUNCTION__, __SET_VALUE_FUNCTION__, __ATTRIBUTE__)
2223#if GX_DEVELOP
2224#define _CUSTOM_PROPERTY_POINTER_DYNAMIC_BASE(__CLASS__, __NAME__, __GET_INDEX_VALUE_FUNCTION__, __SET_INDEX_VALUE_FUNCTION__, __GET_COUNT_FUNCTION__, __SET_COUNT_FUNCTION__, __ATTRIBUTE__) GxProperty( GxProperty::TYPE::CUSTOM_POINTER, \
2225 GxProperty::GxUniqueFunction<MyClass>( (GxProperty::GET_INDEX_VALUE_FUNCTION)(void (MyClass::*)(void* const, u32))__GET_INDEX_VALUE_FUNCTION__, (GxProperty::SET_INDEX_VALUE_FUNCTION)(void (MyClass::*)(const void* const, u32))__SET_INDEX_VALUE_FUNCTION__, \
2226 (GxProperty::GET_COUNT_FUNCTION)__GET_COUNT_FUNCTION__, (GxProperty::SET_COUNT_FUNCTION)__SET_COUNT_FUNCTION__ ), GxProperty::ATTRIBUTE_NAME | GxProperty::ATTRIBUTE_POINTER | GxProperty::ATTRIBUTE_DYNAMIC | GxProperty::ATTRIBUTE_ARRAY | __ATTRIBUTE__, \
2227 &__CLASS__::GX_RTTI, &MyClass::GX_RTTI, GxMath::getHash32(__NAME__, MyClass::GX_RTTI.getId()), __NAME__, nullptr )
2228#else //GX_DEVELOP
2229#define _CUSTOM_PROPERTY_POINTER_DYNAMIC_BASE(__CLASS__, __NAME__, __GET_INDEX_VALUE_FUNCTION__, __SET_INDEX_VALUE_FUNCTION__, __GET_COUNT_FUNCTION__, __SET_COUNT_FUNCTION__, __ATTRIBUTE__) GxProperty( GxProperty::TYPE::CUSTOM_POINTER, \
2230 GxProperty::GxUniqueFunction<MyClass>( (GxProperty::GET_INDEX_VALUE_FUNCTION)(void (MyClass::*)(void* const, u32))__GET_INDEX_VALUE_FUNCTION__, (GxProperty::SET_INDEX_VALUE_FUNCTION)(void (MyClass::*)(const void* const, u32))__SET_INDEX_VALUE_FUNCTION__, \
2231 (GxProperty::GET_COUNT_FUNCTION)__GET_COUNT_FUNCTION__, (GxProperty::SET_COUNT_FUNCTION)__SET_COUNT_FUNCTION__ ), GxProperty::ATTRIBUTE_NAME | GxProperty::ATTRIBUTE_POINTER | GxProperty::ATTRIBUTE_DYNAMIC | GxProperty::ATTRIBUTE_ARRAY | __ATTRIBUTE__, \
2232 &__CLASS__::GX_RTTI, &MyClass::GX_RTTI, GxMath::getHash32(__NAME__, MyClass::GX_RTTI.getId()) )
2233#endif // !GX_DEVELOP
2234
2235#define _CUSTOM_PROPERTY_POINTER_DYNAMIC(__CLASS__, __NAME__, __GET_INDEX_VALUE_FUNCTION__, __SET_INDEX_VALUE_FUNCTION__, __GET_COUNT_FUNCTION__, __SET_COUNT_FUNCTION__) _CUSTOM_PROPERTY_POINTER_DYNAMIC_BASE(__CLASS__, __NAME__, __GET_INDEX_VALUE_FUNCTION__, __SET_INDEX_VALUE_FUNCTION__, __GET_COUNT_FUNCTION__, __SET_COUNT_FUNCTION__, GxProperty::ATTRIBUTE_NONE)
2236#define _CUSTOM_PROPERTY_POINTER_DYNAMIC_ATTRIBUTE(__CLASS__, __NAME__, __GET_INDEX_VALUE_FUNCTION__, __SET_INDEX_VALUE_FUNCTION__, __GET_COUNT_FUNCTION__, __SET_COUNT_FUNCTION__, __ATTRIBUTE__) _CUSTOM_PROPERTY_POINTER_DYNAMIC_BASE(__CLASS__, __NAME__, __GET_INDEX_VALUE_FUNCTION__, __SET_INDEX_VALUE_FUNCTION__, __GET_COUNT_FUNCTION__, __SET_COUNT_FUNCTION__, __ATTRIBUTE__)
2237
2238// ページ
2239#if GX_DEVELOP
2240#define _PAGE_BEGIN(__NAME__) GxProperty(GxProperty::TYPE::PAGE_BEGIN, GxProperty::GxFunction(static_cast<size_t>(0), 0UL, 0UL), (GxProperty::ATTRIBUTE_NAME | GxProperty::ATTRIBUTE_NOSERIALIZE), nullptr, &MyClass::GX_RTTI, GxProperty::DEFAULT_ID, __NAME__, __NAME__)
2241#define _PAGE_BEGIN_ATTRIBUTE(__NAME__, __ATTRIBUTE__) GxProperty(GxProperty::TYPE::PAGE_BEGIN, GxProperty::GxFunction(static_cast<size_t>(0), 0UL, 0UL), (GxProperty::ATTRIBUTE_NAME | GxProperty::ATTRIBUTE_NOSERIALIZE | __ATTRIBUTE__), nullptr, &MyClass::GX_RTTI, GxProperty::DEFAULT_ID, __NAME__, __NAME__)
2242#define _PAGE_END() GxProperty(GxProperty::TYPE::PAGE_END, GxProperty::GxFunction(static_cast<size_t>(0), 0UL, 0UL), (GxProperty::ATTRIBUTE_NAME | GxProperty::ATTRIBUTE_NOSERIALIZE), nullptr, &MyClass::GX_RTTI, GxProperty::DEFAULT_ID, nullptr, nullptr)
2243#else //GX_DEVELOP
2244#define _PAGE_BEGIN(__NAME__) GxProperty(GxProperty::TYPE::PAGE_BEGIN, GxProperty::GxFunction(static_cast<size_t>(0), 0UL, 0UL), (GxProperty::ATTRIBUTE_NAME | GxProperty::ATTRIBUTE_NOSERIALIZE), nullptr, &MyClass::GX_RTTI, GxProperty::DEFAULT_ID)
2245#define _PAGE_BEGIN_ATTRIBUTE(__NAME__, __ATTRIBUTE__) GxProperty(GxProperty::TYPE::PAGE_BEGIN, GxProperty::GxFunction(static_cast<size_t>(0), 0UL, 0UL), (GxProperty::ATTRIBUTE_NAME | GxProperty::ATTRIBUTE_NOSERIALIZE | __ATTRIBUTE__), nullptr, &MyClass::GX_RTTI, GxProperty::DEFAULT_ID)
2246#define _PAGE_END() GxProperty(GxProperty::TYPE::PAGE_END, GxProperty::GxFunction(static_cast<size_t>(0), 0UL, 0UL), (GxProperty::ATTRIBUTE_NAME | GxProperty::ATTRIBUTE_NOSERIALIZE), nullptr, &MyClass::GX_RTTI, GxProperty::DEFAULT_ID)
2247#endif // !GX_DEVELOP
2248
2249// セパレータ
2250#if GX_DEVELOP
2251#define _SEPARATE() GxProperty(GxProperty::TYPE::SEPARATE, GxProperty::GxFunction(static_cast<size_t>(0), 0UL, 0UL), (GxProperty::ATTRIBUTE_NAME | GxProperty::ATTRIBUTE_NOSERIALIZE), nullptr, &MyClass::GX_RTTI, GxProperty::DEFAULT_ID, nullptr, nullptr)
2252#else //GX_DEVELOP
2253#define _SEPARATE() GxProperty(GxProperty::TYPE::SEPARATE, GxProperty::GxFunction(static_cast<size_t>(0), 0UL, 0UL), (GxProperty::ATTRIBUTE_NAME | GxProperty::ATTRIBUTE_NOSERIALIZE), nullptr, &MyClass::GX_RTTI, GxProperty::DEFAULT_ID)
2254#endif // !GX_DEVELOP
2255
2256// アイコン
2257#if GX_DEVELOP
2258#define __PROPERTY__ICON__(__TYPE__, __ICON_HANDLE__) GxProperty(GxProperty::__TYPE__, GxProperty::GxFunction(static_cast<size_t>(0), 0UL, 0UL), GxProperty::ATTRIBUTE_NOSERIALIZE, nullptr, &MyClass::GX_RTTI, __ICON_HANDLE__, #__ICON_HANDLE__, #__ICON_HANDLE__)
2259#else //GX_DEVELOP
2260#define __PROPERTY__ICON__(__TYPE__, __ICON_HANDLE__) GxProperty(GxProperty::__TYPE__, GxProperty::GxFunction(static_cast<size_t>(0), 0UL, 0UL), GxProperty::ATTRIBUTE_NOSERIALIZE, nullptr, &MyClass::GX_RTTI, __ICON_HANDLE__)
2261#endif // !GX_DEVELOP
2262#define _ICON(__ICON_HANDLE__) __PROPERTY__ICON__(TYPE::ICON, __ICON_HANDLE__)
GX_FORCE_INLINE b32 operator==(const GxColor color0, const GxColor color1)
Definition GxColor.inl:274
GX_FORCE_INLINE b32 operator!=(const GxColor color0, const GxColor color1)
Definition GxColor.inl:285
void GxTypedObject
その他
Definition GxDefine.h:213
オブジェクト基底クラス
Definition GxBase.h:88
基底クラス
Definition GxBase.h:51
データアクセス基礎クラス
Definition GxProperty.h:1351
static void toString(GxProperty *, GxTypedObject *, GxString &, u32)
値の文字列を取得
Definition GxProperty.h:1383
static void setValue(GxProperty *, GxTypedObject *, const void *const, u32)
値を設定
Definition GxProperty.h:1379
static void getValue(const GxProperty *, const GxTypedObject *, void *const, u32)
値を取得
Definition GxProperty.h:1377
static void copyValue(GxProperty *, GxTypedObject *, GxTypedObject *, u32)
値をコピー
Definition GxProperty.h:1381
static b32 fromString(GxProperty *, GxTypedObject *, GxString &, u32)
文字列で値を設定
Definition GxProperty.h:1385
GxAccessor(u32 size=0, u32 attribute=0, GxProperty::TYPE type=GxProperty::TYPE::UNKNOWN, PROPERTY_FUNCTION_GET_VALUE pGetValueFunction=getValue, PROPERTY_FUNCTION_SET_VALUE pSetValueFunction=setValue, PROPERTY_FUNCTION_COPY_VALUE pCopyValueFunction=copyValue, PROPERTY_FUNCTION_TO_STRING pToStringFunction=toString, PROPERTY_FUNCTION_FROM_STRING pFromStringFunction=fromString, PROPERTY_FUNCTION_GET_RTTI pGetRTTIFunction=nullptr)
コンストラクタ
Definition GxProperty.cpp:1919
カスタム値登録クラス
Definition GxProperty.h:1519
GX_FORCE_INLINE void * serializeBinary(GxProperty &property, GxTypedObject *pOwner, u32 index, void *pData)
バイナリシリアライズ関数を呼び出す
Definition GxProperty.h:1592
GX_FORCE_INLINE void fromString(GxProperty &property, GxTypedObject *pOwner, u32 index, GxString *pStringTop, u32 count)
文字列から値を取得する関数を呼び出す
Definition GxProperty.h:1584
void *(*) CUSTOM_PROPERTY_FUNCTION_CREATE_GUI(void)
GUIを作成する関数の定義
Definition GxProperty.h:1537
GX_FORCE_INLINE void toString(GxProperty &property, GxTypedObject *pOwner, u32 index, GxString *pStringTop, u32 &count)
値の文字列を取得する関数を呼び出す
Definition GxProperty.h:1582
constexpr void setNext(GxCustomProperty *pNext)
次を設定
Definition GxProperty.h:1609
GX_FORCE_INLINE const void * deserializeBinary(GxProperty &property, GxTypedObject *pOwner, u32 index, const void *pData)
バイナリデシリアライズ関数を呼び出す
Definition GxProperty.h:1594
void(*) CUSTOM_PROPERTY_FUNCTION_TO_STRING(GxProperty &property, GxTypedObject *pOwner, u32 index, GxString *pStringTop, u32 &count)
値の文字列を取得する関数の定義
Definition GxProperty.h:1530
constexpr u32 getId(void) const
IDを取得
Definition GxProperty.h:1605
void *(*) CUSTOM_PROPERTY_FUNCTION_SERIALIZE_BINARY(GxProperty &property, GxTypedObject *pOwner, u32 index, void *pData)
バイナリシリアライズ関数の定義
Definition GxProperty.h:1542
const void *(*) CUSTOM_PROPERTY_FUNCTION_DESERIALIZE_BINARY(GxProperty &property, GxTypedObject *pOwner, u32 index, const void *pData)
バイナリデシリアライズ関数の定義
Definition GxProperty.h:1544
GxCustomProperty(const GxRtti *pRtti, u32 id, CUSTOM_PROPERTY_FUNCTION_TO_STRING pToStringFunction, CUSTOM_PROPERTY_FUNCTION_FROM_STRING pFromStringFunction, CUSTOM_PROPERTY_FUNCTION_SERIALIZE_BINARY_SIZE pSerializeBinarySizeFunction, CUSTOM_PROPERTY_FUNCTION_SERIALIZE_BINARY pSerializeBinaryFunction, CUSTOM_PROPERTY_FUNCTION_DESERIALIZE_BINARY pDeserializeBinaryFunction)
コンストラクタ
Definition GxProperty.h:1553
virtual ~GxCustomProperty(void)
デストラクタ
Definition GxProperty.h:1573
void(*) CUSTOM_PROPERTY_FUNCTION_FROM_STRING(GxProperty &property, GxTypedObject *pOwner, u32 index, GxString *pStringTop, u32 count)
文字列から値を取得する関数の定義
Definition GxProperty.h:1532
static constexpr u32 CUSTOM_PROPERTY_PARAM_COUNT
カスタムプロパティの引数の最大数
Definition GxProperty.h:1526
constexpr GxCustomProperty * getNext(void) const
次を取得
Definition GxProperty.h:1607
u32(*) CUSTOM_PROPERTY_FUNCTION_SERIALIZE_BINARY_SIZE(GxProperty &property, GxTypedObject *pOwner, u32 index)
バイナリシリアライズのサイズを取得する関数の定義
Definition GxProperty.h:1540
const GxRtti * getRtti(void) const
RTTIを取得
Definition GxProperty.h:1603
static constexpr u32 DEFAULT_ID
デフォルトID
Definition GxProperty.h:1528
関数クラス
Definition GxProperty.h:236
u32 _eventArgumentU32
イベント引数(32bit符号無し整数)
Definition GxProperty.h:451
STRUCT_SET_VALUE_FUNCTION _pSetStructValueFunction
値設定関数
Definition GxProperty.h:398
SET_INDEX_VALUE_FUNCTION _pSetValueIndexFunction
インデックス設定関数
Definition GxProperty.h:405
u32 _attribute
属性
Definition GxProperty.h:371
TYPE
関数クラスタイプ
Definition GxProperty.h:244
@ UNIQUE
ユニーク関数
GET_INDEX_VALUE_FUNCTION _pGetValueIndexFunction
インデックス取得関数
Definition GxProperty.h:404
GxFunction(STRUCT_EVENT_ARGUMENT_FUNCTION_U32 pEventArgumentFunctionU32, GxTypedObject *pOwner=nullptr, u32 argument=0, TYPE functionType=TYPE::SYSTEM)
コンストラクタ(U32引数構造体イベント)
void * getValuePointer(const GxTypedObject *pObject, u32 index=0) const
数値のアドレスを取得
Definition GxProperty.cpp:1829
GxTypedObject * _pEventOwner
イベント所持者
Definition GxProperty.h:425
virtual void _getValue(const GxTypedObject *pObject, void *const pValue) const
数値を取得
Definition GxProperty.cpp:1740
STRUCT_SET_COUNT_FUNCTION _pSetStructCountFunction
配列数設定関数
Definition GxProperty.h:415
u32 getCount(const GxTypedObject *pObject) const
配列数を取得
Definition GxProperty.h:313
b32_ _eventArgumentB32
イベント引数(真偽値)
Definition GxProperty.h:450
STRUCT_EVENT_FUNCTION _pStructEventFunction
構造体イベント関数
Definition GxProperty.h:423
EVENT_ARGUMENT_FUNCTION_U32 _pEventArgumentFunctionU32
イベント引数関数(32bit符号無し整数)
Definition GxProperty.h:437
constexpr GxProperty::TYPE getPropertyType(void) const
プロパティの種類を取得
Definition GxProperty.h:324
virtual void _getValueIndex(const GxTypedObject *pObject, void *const pValue, u32 index) const
インデックス指定で数値を取得
Definition GxProperty.cpp:1761
virtual void _setValueIndex(GxTypedObject *pObject, const void *const pValue, u32 index) const
インデックス指定で数値を設定
Definition GxProperty.cpp:1772
STRUCT_GET_VALUE_FUNCTION _pGetStructValueFunction
値取得関数
Definition GxProperty.h:397
constexpr void setEventOwner(GxTypedObject *pOwner)
イベントの所有者を設定
Definition GxProperty.h:344
EVENT_ARGUMENT_FUNCTION_F32 _pEventArgumentFunctionF32
イベント引数関数(32bit浮動小数)
Definition GxProperty.h:439
u32 _reservedEvent[2]
未使用
Definition GxProperty.h:426
virtual ~GxFunction(void)
デストラクタ
Definition GxProperty.h:294
void getValue(const GxTypedObject *pObject, void *const pValue) const
数値を取得
Definition GxProperty.h:305
SET_VALUE_FUNCTION _pSetValueFunction
値設定関数
Definition GxProperty.h:391
STRUCT_EVENT_ARGUMENT_FUNCTION_U32 _pStructEventArgumentFunctionU32
構造体イベント引数関数(32bit符号無し整数)
Definition GxProperty.h:442
STRUCT_EVENT_ARGUMENT_FUNCTION_S32 _pStructEventArgumentFunctionS32
構造体イベント引数関数(32bit符号付き整数)
Definition GxProperty.h:443
GxTypedObject * _pEventArgumentOwner
イベント引数所持者
Definition GxProperty.h:446
EVENT_ARGUMENT_TYPE _eventArgumentType
イベント引数タイプ
Definition GxProperty.h:455
TYPE _functionType
関数タイプ
Definition GxProperty.h:373
GxFunction(STRUCT_EVENT_ARGUMENT_FUNCTION_POINTER pEventArgumentFunctionPointer, GxTypedObject *pOwner=nullptr, void *pArgument=nullptr, TYPE functionType=TYPE::SYSTEM)
コンストラクタ(ポインタ引数構造体イベント)
EVENT_FUNCTION _pEventFunction
イベント関数
Definition GxProperty.h:422
void callEvent(GxTypedObject *pObject=nullptr)
イベント呼び出し
Definition GxProperty.h:317
constexpr TYPE getType(void) const
種類を取得
Definition GxProperty.h:320
f32 _eventArgumentF32
イベント引数(32bit浮動小数)
Definition GxProperty.h:453
virtual void _callEvent(GxTypedObject *)
イベントを呼び出す
Definition GxProperty.h:360
GX_FORCE_INLINE void setVirtualName(GX_CSTR name)
仮想名を設定
Definition GxProperty.h:336
void setCount(GxTypedObject *pObject, const u32 count)
配列数を設定
Definition GxProperty.h:315
size_t _pValue
データのアドレス
Definition GxProperty.h:379
GX_FORCE_INLINE GX_CSTR getVirtualName(void) const
仮想名を取得
Definition GxProperty.h:334
u32 _reservedCustomStruct[2]
未使用
Definition GxProperty.h:399
GxFunction(STRUCT_EVENT_ARGUMENT_FUNCTION_F32 pEventArgumentFunctionF32, GxTypedObject *pOwner=nullptr, f32 argument=0.0f, TYPE functionType=TYPE::SYSTEM)
コンストラクタ(F32引数構造体イベント)
EVENT_ARGUMENT_FUNCTION_B32 _pEventArgumentFunctionB32
イベント引数関数(真偽値)
Definition GxProperty.h:436
const GxFunction & operator=(const GxFunction &function)
代入演算子
Definition GxProperty.cpp:1709
void setValueIndex(GxTypedObject *pObject, const void *const pValue, u32 index) const
インデックス指定で数値を設定
Definition GxProperty.h:311
u32 _reservedCustom[2]
未使用
Definition GxProperty.h:392
void getValueIndex(const GxTypedObject *pObject, void *const pValue, u32 index) const
インデックス指定で数値を取得
Definition GxProperty.h:309
STRUCT_EVENT_ARGUMENT_FUNCTION_POINTER _pStructEventArgumentFunctionPointer
構造体イベント引数関数ポインタ
Definition GxProperty.h:440
s32 _eventArgumentS32
イベント引数(32bit符号付き整数)
Definition GxProperty.h:452
b32 getAttribute(GxProperty::ATTRIBUTE attribute) const
属性を取得
Definition GxProperty.cpp:1801
constexpr GxTypedObject * getEventOwner(void) const
イベントの所有者を取得
Definition GxProperty.h:342
constexpr void setAttributeData(u32 attributeData)
属性データを設定
Definition GxProperty.h:332
SET_COUNT_FUNCTION _pSetCountFunction
配列数設定関数
Definition GxProperty.h:407
constexpr void * getEventArgumentPointer(void) const
引数付きイベントの引数を取得
Definition GxProperty.h:340
STRUCT_SET_INDEX_VALUE_FUNCTION _pSetStructValueIndexFunction
インデックス設定関数
Definition GxProperty.h:413
GxFunction(void)
デフォルトコンストラクタ
Definition GxProperty.h:256
STRUCT_EVENT_ARGUMENT_FUNCTION_F32 _pStructEventArgumentFunctionF32
構造体イベント引数関数(32bit浮動小数)
Definition GxProperty.h:444
EVENT_ARGUMENT_FUNCTION_POINTER _pEventArgumentFunctionPointer
イベントコールバック関数
Definition GxProperty.h:435
GxFunction(STRUCT_EVENT_ARGUMENT_FUNCTION_B32 pEventArgumentFunctionB32, GxTypedObject *pOwner=nullptr, b32 argument=false, TYPE functionType=TYPE::SYSTEM)
コンストラクタ(B32引数構造体イベント)
constexpr u32 getAttributeData(void) const
属性データを取得
Definition GxProperty.h:330
GX_CSTR _vName
仮想名
Definition GxProperty.h:385
GET_VALUE_FUNCTION _pGetValueFunction
値取得関数
Definition GxProperty.h:390
void setAttribute(GxProperty::ATTRIBUTE attribute, b32 enable)
属性を設定
Definition GxProperty.cpp:1811
u32 _stride
1要素分のサイズ
Definition GxProperty.h:380
GxFunction(STRUCT_EVENT_FUNCTION pEventFunction, GxTypedObject *pOwner=nullptr, TYPE functionType=TYPE::SYSTEM)
コンストラクタ(構造体イベント)
virtual u32 _getCount(const GxTypedObject *pObject) const
配列数を取得
Definition GxProperty.cpp:1781
virtual void _setCount(GxTypedObject *pObject, const u32 count)
配列数を設定
Definition GxProperty.cpp:1791
u32 _count
配列数
Definition GxProperty.h:381
constexpr void setPropertyType(GxProperty::TYPE type)
プロパティの種類を設定
Definition GxProperty.h:322
GET_COUNT_FUNCTION _pGetCountFunction
配列数取得関数
Definition GxProperty.h:406
STRUCT_GET_INDEX_VALUE_FUNCTION _pGetStructValueIndexFunction
インデックス取得関数
Definition GxProperty.h:412
EVENT_ARGUMENT_FUNCTION_S32 _pEventArgumentFunctionS32
イベント引数関数(32bit符号付き整数)
Definition GxProperty.h:438
virtual void _setValue(GxTypedObject *pObject, const void *const pValue) const
数値を設定
Definition GxProperty.cpp:1750
STRUCT_GET_COUNT_FUNCTION _pGetStructCountFunction
配列数取得関数
Definition GxProperty.h:414
void setValue(GxTypedObject *pObject, const void *const pValue) const
数値を設定
Definition GxProperty.h:307
void * _pEventArgumentPointer
イベント引数ポインタ
Definition GxProperty.h:449
GxFunction(STRUCT_EVENT_ARGUMENT_FUNCTION_S32 pEventArgumentFunctionS32, GxTypedObject *pOwner=nullptr, s32 argument=0, TYPE functionType=TYPE::SYSTEM)
コンストラクタ(S32引数構造体イベント)
STRUCT_EVENT_ARGUMENT_FUNCTION_B32 _pStructEventArgumentFunctionB32
構造体イベント引数関数(真偽値)
Definition GxProperty.h:441
GxProperty::TYPE _propertyType
プロパティタイプ
Definition GxProperty.h:372
インスタンスのアクセサクラス
Definition GxProperty.h:1432
static void setValue(GxProperty *pProperty, GxTypedObject *pOwner, const void *const pValue, u32 index)
値を設定
Definition GxProperty.cpp:2082
static GxRtti & getRtti(const GxTypedObject *pObject)
RTTIを取得
Definition GxProperty.cpp:2122
GxInstanceAccessor(u32 size=0, u32 attribute=0, GxProperty::TYPE type=GxProperty::TYPE::UNKNOWN)
コンストラクタ
Definition GxProperty.h:1440
static b32 fromString(GxProperty *, GxTypedObject *, GxString &, u32)
文字列から値を設定
Definition GxProperty.h:1464
static void getValue(const GxProperty *pProperty, const GxTypedObject *pObject, void *const pValue, u32 index)
値を取得
Definition GxProperty.cpp:2048
static void toString(GxProperty *, GxTypedObject *, GxString &, u32)
値の文字列を取得
Definition GxProperty.h:1462
ポインタのアクセスクラス
Definition GxProperty.h:1475
GxPointerAccessor(u32 size=0, u32 attribute=0, GxProperty::TYPE type=GxProperty::TYPE::UNKNOWN)
コンストラクタ
Definition GxProperty.h:1482
static void setValue(GxProperty *pProperty, GxTypedObject *pObject, const void *const pValue, u32 index)
値を設定
Definition GxProperty.cpp:2169
static void toString(GxProperty *, GxTypedObject *, GxString &, u32)
値の文字列を取得
Definition GxProperty.h:1506
static void getValue(const GxProperty *pProperty, const GxTypedObject *pObject, void *const pValue, u32 index)
値を取得
Definition GxProperty.cpp:2134
static void copyValue(GxProperty *pProperty, GxTypedObject *pDstObject, GxTypedObject *pSrcObject, u32 index)
値をコピー
Definition GxProperty.cpp:2204
static GxRtti & getRtti(const GxTypedObject *pObject)
RTTIを取得
Definition GxProperty.cpp:2216
static b32 fromString(GxProperty *, GxTypedObject *, GxString &, u32)
文字列から値を設定
Definition GxProperty.h:1508
構造体のプロパティ関数を呼び出すクラス
Definition GxProperty.h:1287
GxStructUniqueFunction(GxProperty::STRUCT_GET_VALUE_FUNCTION pGetValueFunction, GxProperty::STRUCT_SET_VALUE_FUNCTION pSetValueFunction)
コンストラクタ(_CUSTOM)
Definition GxProperty.h:1299
void _setCount(GxTypedObject *pObject, const u32 count) override
配列数を変更
Definition GxProperty.h:1340
void _setValue(GxTypedObject *pObject, const void *const pValue) const override
数値を設定
Definition GxProperty.h:1332
GxStructUniqueFunction(GxProperty::STRUCT_EVENT_ARGUMENT_FUNCTION_B32 pEventArgumentFunctionB32, GxTypedObject *pOwner=nullptr, b32 argumentB32=false)
コンストラクタ(_EVENT_ARGUMENT_B32)
Definition GxProperty.h:1311
GxStructUniqueFunction(GxProperty::STRUCT_EVENT_ARGUMENT_FUNCTION_F32 pEventArgumentFunctionF32, GxTypedObject *pOwner=nullptr, f32 argumentF32=0.0f)
コンストラクタ(_EVENT_ARGUMENT_F32)
Definition GxProperty.h:1320
GxStructUniqueFunction(GxProperty::STRUCT_GET_INDEX_VALUE_FUNCTION pGetIndexValueFunction, GxProperty::STRUCT_SET_INDEX_VALUE_FUNCTION pSetIndexValueFunction, GxProperty::STRUCT_GET_COUNT_FUNCTION pGetCountFunction, GxProperty::STRUCT_SET_COUNT_FUNCTION pSetCountFunction)
コンストラクタ(_DYNAMIC)
Definition GxProperty.h:1302
GxStructUniqueFunction(GxProperty::STRUCT_EVENT_ARGUMENT_FUNCTION_S32 pEventArgumentFunctionS32, GxTypedObject *pOwner=nullptr, s32 argumentS32=0)
コンストラクタ(_EVENT_ARGUMENT_S32)
Definition GxProperty.h:1317
GxStructUniqueFunction(GxProperty::STRUCT_EVENT_ARGUMENT_FUNCTION_POINTER pEventArgumentFunctionPointer, GxTypedObject *pOwner=nullptr, void *pArgument=nullptr)
コンストラクタ(_EVENT_ARGUMENT_POINTER)
Definition GxProperty.h:1308
void _getValueIndex(const GxTypedObject *pObject, void *const pValue, u32 index) const override
インデックス指定で数値を取得
Definition GxProperty.h:1334
void _callEvent(GxTypedObject *pObject=nullptr) override
イベントを呼び出す
Definition GxProperty.cpp:1839
u32 _getCount(const GxTypedObject *pObject) const override
配列数を取得
Definition GxProperty.h:1338
void _setValueIndex(GxTypedObject *pObject, const void *const pValue, u32 index) const override
インデックス指定で数値を設定
Definition GxProperty.h:1336
GxStructUniqueFunction(void *pValue, u32 count, u32 stride)
コンストラクタ(_PARAM)
Definition GxProperty.h:1296
void _getValue(const GxTypedObject *pObject, void *const pValue) const override
数値を取得
Definition GxProperty.h:1330
GxStructUniqueFunction(GxProperty::STRUCT_EVENT_FUNCTION pEventFunction, GxTypedObject *pOwner=nullptr)
コンストラクタ(_EVENT)
Definition GxProperty.h:1305
GxStructUniqueFunction(void)
デフォルトコンストラクタ
Definition GxProperty.h:1294
GxStructUniqueFunction(GxProperty::STRUCT_EVENT_ARGUMENT_FUNCTION_U32 pEventArgumentFunctionU32, GxTypedObject *pOwner=nullptr, u32 argumentU32=0)
コンストラクタ(_EVENT_ARGUMENT_U32)
Definition GxProperty.h:1314
タイプ指定型データアクセステンプレートクラス
Definition GxProperty.h:1394
static void getValue(const GxProperty *pProperty, const GxTypedObject *pObject, void *const pValue, u32 index=0)
値の取得
Definition GxProperty.cpp:1968
GxTypeAccessor(u32 attribute=0, GxProperty::TYPE type=GxProperty::TYPE::UNKNOWN, PROPERTY_FUNCTION_TO_STRING pToStringFunction=toString, PROPERTY_FUNCTION_FROM_STRING pFromStringFunction=fromString)
コンストラクタ
Definition GxProperty.h:1401
static void copyValue(GxProperty *pProperty, GxTypedObject *pDstObject, GxTypedObject *pSrcObject, u32 index=0)
値をコピー
Definition GxProperty.cpp:2034
static void setValue(GxProperty *pProperty, GxTypedObject *pObject, const void *const pValue, u32 index=0)
値の設定
Definition GxProperty.cpp:2001
プロパティ関数を呼び出すクラス
Definition GxProperty.h:1127
GxUniqueFunction(EVENT_ARGUMENT_FUNCTION_F32 pEventArgumentFunctionF32, GxTypedObject *pOwner=nullptr, f32 argumentF32=0.0f)
コンストラクタ(_EVENT_ARGUMENT_F32)
Definition GxProperty.h:1185
void _setValueIndex(GxTypedObject *pObject, const void *const pValue, u32 index) const override
インデックス指定で数値を設定
Definition GxProperty.h:1201
GxUniqueFunction(EVENT_ARGUMENT_FUNCTION_U32 pEventArgumentFunctionU32, GxTypedObject *pOwner=nullptr, u32 argumentU32=0)
コンストラクタ(_EVENT_ARGUMENT_U32)
Definition GxProperty.h:1179
GxUniqueFunction(GET_INDEX_VALUE_FUNCTION pGetIndexValueFunction, SET_INDEX_VALUE_FUNCTION pSetIndexValueFunction, GET_COUNT_FUNCTION pGetCountFunction, SET_COUNT_FUNCTION pSetCountFunction)
コンストラクタ(_DYNAMIC)
Definition GxProperty.h:1167
GxUniqueFunction(EVENT_FUNCTION pEventFunction, GxTypedObject *pOwner=nullptr)
コンストラクタ(_EVENT)
Definition GxProperty.h:1170
void _callEvent(GxTypedObject *pObject=nullptr) override
イベントを呼び出す
Definition GxProperty.h:1216
void _getValueIndex(const GxTypedObject *pObject, void *const pValue, u32 index) const override
インデックス指定で数値を取得
Definition GxProperty.h:1199
GxUniqueFunction(void *pValue, u32 count, u32 stride)
コンストラクタ(_PARAM)
Definition GxProperty.h:1157
GxUniqueFunction(EVENT_ARGUMENT_FUNCTION_POINTER pEventArgumentFunctionPointer, GxTypedObject *pOwner=nullptr, void *pArgument=nullptr)
コンストラクタ(_EVENT_ARGUMENT_POINTER)
Definition GxProperty.h:1173
GxUniqueFunction(void)
デフォルトコンストラクタ
Definition GxProperty.h:1155
void _setValue(GxTypedObject *pObject, const void *const pValue) const override
数値を設定
Definition GxProperty.h:1197
u32 _getCount(const GxTypedObject *pObject) const override
配列数を取得
Definition GxProperty.h:1203
GxUniqueFunction(EVENT_ARGUMENT_FUNCTION_B32 pEventArgumentFunctionB32, GxTypedObject *pOwner=nullptr, b32 argumentB32=false)
コンストラクタ(_EVENT_ARGUMENT_B32)
Definition GxProperty.h:1176
void _setCount(GxTypedObject *pObject, const u32 count) override
配列数を変更
Definition GxProperty.h:1205
void _getValue(const GxTypedObject *pObject, void *const pValue) const override
数値を取得
Definition GxProperty.h:1195
GxUniqueFunction(EVENT_ARGUMENT_FUNCTION_S32 pEventArgumentFunctionS32, GxTypedObject *pOwner=nullptr, s32 argumentS32=0)
コンストラクタ(_EVENT_ARGUMENT_S32)
Definition GxProperty.h:1182
プロパティクラス
Definition GxProperty.h:48
void setValue(GxTypedObject *pObject, const u8 &value, u32 index=0)
値を設定
Definition GxProperty.h:497
GxProperty(void *, const GxProperty::GxFunction &function, u32 attribute, GxRtti *pRtti, GxRtti *pOwnerRtti, u32 id)
コンストラクタ
Definition GxProperty.h:844
constexpr void setOwnerRtti(GxRtti *pOwnerRtti)
所持者のRTTIを設定
Definition GxProperty.h:1033
void setValue(GxTypedObject *pObject, const s64 &value, u32 index=0)
値を設定
Definition GxProperty.h:552
GxProperty(GX_CHAR &, const GxProperty::GxFunction &function, u32 attribute, GxRtti *pRtti, GxRtti *pOwnerRtti, u32 id)
コンストラクタ
Definition GxProperty.h:470
b32 isStructCustomProperty(void) const
構造体のカスタムプロパティか調べる
Definition GxProperty.cpp:1277
void setValue(GxTypedObject *pObject, const GxString **const ppValue, u32 index=0)
値を設定
Definition GxProperty.h:860
void setValue(GxTypedObject *pObject, const GX_CSTR &value, u32 index=0)
値を設定
Definition GxProperty.h:607
GxProperty(GxString *, const GxProperty::GxFunction &function, u32 attribute, GxRtti *pRtti, GxRtti *pOwnerRtti, u32 id)
コンストラクタ
Definition GxProperty.h:855
static void initialize(void)
初期化
Definition GxProperty.cpp:768
void setValue(GxTypedObject *pObject, const GxStringW *const &value, u32 index=0)
値を設定
Definition GxProperty.h:816
void setValue(GxTypedObject *pObject, const GX_CWSTR &value, u32 index=0)
値を設定
Definition GxProperty.h:618
void setValue(GxTypedObject *pObject, const s16 &value, u32 index=0)
値を設定
Definition GxProperty.h:508
GxProperty(void)
デフォルトコンストラクタ
Definition GxProperty.h:947
GX_FORCE_INLINE b32 isAttribute(ATTRIBUTE attribute) const
属性を判定
Definition GxProperty.h:1077
GxProperty(GxMatrixAffine &, const GxProperty::GxFunction &function, u32 attribute, GxRtti *pRtti, GxRtti *pOwnerRtti, u32 id)
コンストラクタ
Definition GxProperty.h:701
GxProperty(u8 &, const GxProperty::GxFunction &function, u32 attribute, GxRtti *pRtti, GxRtti *pOwnerRtti, u32 id)
コンストラクタ
Definition GxProperty.h:492
ATTRIBUTE
属性定義
Definition GxProperty.h:129
@ ATTRIBUTE_RTTI
RTTIを保持
Definition GxProperty.h:139
@ ATTRIBUTE_NAME
名前文字列を保持
Definition GxProperty.h:132
@ ATTRIBUTE_ARRAY
配列
Definition GxProperty.h:135
@ ATTRIBUTE_DYNAMIC
可変長
Definition GxProperty.h:134
@ ATTRIBUTE_NONE
属性なし
Definition GxProperty.h:130
@ ATTRIBUTE_DYNAMIC_FUNCTION
動的関数型
Definition GxProperty.h:140
@ ATTRIBUTE_STRUCT
構造体
Definition GxProperty.h:138
@ ATTRIBUTE_SLIDER
値の場合にスライダーを使用する
Definition GxProperty.h:148
@ ATTRIBUTE_VALUE
数値を保持
Definition GxProperty.h:133
@ ATTRIBUTE_POINTER
ポインタ
Definition GxProperty.h:137
@ ATTRIBUTE_READONLY
読み込み用
Definition GxProperty.h:142
@ ATTRIBUTE_EXPAND
デフォルトで開く
Definition GxProperty.h:145
@ ATTRIBUTE_HIDE
非表示
Definition GxProperty.h:144
@ ATTRIBUTE_NOSERIALIZE
シリアライズしない
Definition GxProperty.h:143
@ ATTRIBUTE_MULTI_DIFFERENT
関連するプロパティで値が異なる(複数選択時等)
Definition GxProperty.h:147
@ ATTRIBUTE_ALIAS
別名定義
Definition GxProperty.h:146
@ ATTRIBUTE_REFERENCE
参照
Definition GxProperty.h:136
GxProperty(GxMatrix44 &, const GxProperty::GxFunction &function, u32 attribute, GxRtti *pRtti, GxRtti *pOwnerRtti, u32 id)
コンストラクタ
Definition GxProperty.h:690
static b32 getRttiAndValueFromString(const GxString &string, GxString &rttiName, GxString &propertyValueString)
「クラス名.プロパティ値名」名を分割して取得
Definition GxProperty.cpp:697
void setValue(GxTypedObject *pObject, const GxVector3 *const &value, u32 index=0)
値を設定
Definition GxProperty.h:640
void setValue(GxTypedObject *pObject, const GxMatrixAffine *const &value, u32 index=0)
値を設定
Definition GxProperty.h:706
void setValue(GxTypedObject *pObject, const GxVector2d *const &value, u32 index=0)
値を設定
Definition GxProperty.h:662
void setValue(GxTypedObject *pObject, const s8 &value, u32 index=0)
値を設定
Definition GxProperty.h:486
GxProperty(f64 &, const GxProperty::GxFunction &function, u32 attribute, GxRtti *pRtti, GxRtti *pOwnerRtti, u32 id)
コンストラクタ
Definition GxProperty.h:580
GxProperty(GxProperty &, const GxProperty::GxFunction &function, u32 attribute, GxRtti *pRtti, GxRtti *pOwnerRtti, u32 id)
コンストラクタ
Definition GxProperty.h:833
void setValue(GxTypedObject *pObject, const u64 &value, u32 index=0)
値を設定
Definition GxProperty.h:563
GxProperty(GxColorHDR &, const GxProperty::GxFunction &function, u32 attribute, GxRtti *pRtti, GxRtti *pOwnerRtti, u32 id)
コンストラクタ
Definition GxProperty.h:756
void setValue(GxTypedObject *pObject, const GxRect *const &value, u32 index=0)
値を設定
Definition GxProperty.h:739
b32 isEvent(void) const
イベントタイプか判定
Definition GxProperty.h:1049
GxProperty(GxPoint2 &, const GxProperty::GxFunction &function, u32 attribute, GxRtti *pRtti, GxRtti *pOwnerRtti, u32 id)
コンストラクタ
Definition GxProperty.h:778
static GxInformation & getInformation(GxProperty::TYPE type)
情報を取得
Definition GxProperty.h:1021
constexpr GxRtti * getMemberRtti(void) const
RTTIを取得
Definition GxProperty.h:1027
constexpr void setId(u32 id)
IDを設定
Definition GxProperty.h:1013
GxProperty(const gx::core::GxFunction *, const GxProperty::GxFunction &function, u32 attribute, GxRtti *pRtti, GxRtti *pOwnerRtti, u32 id)
コンストラクタ
Definition GxProperty.h:920
void setArrayCount(GxTypedObject *pObject, u32 count)
配列数を設定
Definition GxProperty.cpp:1264
void setValue(GxTypedObject *pObject, const GxVector4d *const &value, u32 index=0)
値を設定
Definition GxProperty.h:684
GxProperty(GxVector3d &, const GxProperty::GxFunction &function, u32 attribute, GxRtti *pRtti, GxRtti *pOwnerRtti, u32 id)
コンストラクタ
Definition GxProperty.h:668
constexpr u32 getId(void) const
IDを取得
Definition GxProperty.h:1011
void setValue(GxTypedObject *pObject, const f32 &value, u32 index=0)
値を設定
Definition GxProperty.h:574
void setValue(GxTypedObject *pObject, const GxFlag32Base *const &value, u32 index=0)
値を設定
Definition GxProperty.h:794
GxProperty(GxString &, const GxProperty::GxFunction &function, u32 attribute, GxRtti *pRtti, GxRtti *pOwnerRtti, u32 id)
コンストラクタ
Definition GxProperty.h:800
GxProperty(GxQuaternion &, const GxProperty::GxFunction &function, u32 attribute, GxRtti *pRtti, GxRtti *pOwnerRtti, u32 id)
コンストラクタ
Definition GxProperty.h:712
TYPE
タイプ定義
Definition GxProperty.h:56
@ PAGE_END
ページ終了
@ EVENT
イベント
@ S64
64bit符号付き整数
@ SEPARATE
セパレータ
@ F64
64bit浮動小数
@ U64
64bit符号無し整数
@ STRING_W_POINTER
2バイト文字列ポインタ
@ F32
32bit浮動小数
@ QUATERNION
クウォータニオン
@ STRING_W
2バイト文字列型
@ VECTOR4
4要素ベクトル
@ FLAG32_BASE
32bitフラグ
@ STRING_POINTER
文字列ポインタ
@ TEXT
文字列
@ SIZE
サイズ
@ TEXT_W
2バイト文字列
@ STRING
文字列型
@ U8
8bit符号無し整数
@ RTTI_POINTER
RTTIポインタ
@ COUNT_MAX
定義数
@ UNKNOWN
未定義
@ B32
真偽値
@ S16
16bit符号付き整数
@ CUSTOM
カスタム用
@ VECTOR3
3要素ベクトル
@ VECTOR4D
4要素ベクトル(倍精度)
@ MATRIX44
4×4行列
@ PROPERTY
プロパティ参照
@ EVENT_ARGUMENT
引数イベント
@ OBJECT
オブジェクト参照
@ PROPERTY_POINTER
プロパティポインタ
@ VECTOR2
2要素ベクトル
@ S32
32bit符号付き整数
@ POINTER
ポインタ
@ MATRIXAFFINE
4×3行列
@ STRUCT_POINTER
その他の構造体のポインタ
@ VECTOR2D
2要素ベクトル(倍精度)
@ S8
8bit符号付き整数
@ STRUCT
その他の構造体
@ OBJECT_POINTER
オブジェクトポインタ
@ U32
32bit符号無し整数
@ CUSTOM_POINTER
カスタムのポインタ
@ CSTR
定数文字配列
@ PAGE_BEGIN
ページ開始
@ ICON
アイコン
@ SPAN
区切り
@ FUNCTION_POINTER
関数ポインタ
@ CWSTR
定数2バイト文字配列
@ U16
16bit符号無し整数
@ POINT2
2要素整数ベクトル
@ VECTOR3D
3要素ベクトル(倍精度)
@ COUNT_DATA
データプロパティ数
void callEvent(GxTypedObject *pObject=nullptr)
イベントを呼び出す
Definition GxProperty.cpp:1073
void setValue(GxTypedObject *pObject, const GxClassBaseRoot **const ppValue, u32 index=0)
値を設定
Definition GxProperty.h:882
GxRtti * getRttiPointer(const GxTypedObject *pOwner=nullptr, const u32 index=0) const
所有するRTTIを取得
Definition GxProperty.cpp:1291
GxProperty(const GxRtti *, const GxProperty::GxFunction &function, u32 attribute, GxRtti *pRtti, GxRtti *pOwnerRtti, u32 id)
コンストラクタ
Definition GxProperty.h:888
static constexpr u32 ATTRIBUTE_PACK_VALUE
属性の組み合わせ定義
Definition GxProperty.h:151
void setValue(GxTypedObject *pObject, const GxQuaternion *const &value, u32 index=0)
値を設定
Definition GxProperty.h:717
void setValue(GxTypedObject *pObject, const GxFunction **const ppValue, u32 index=0)
値を設定
Definition GxProperty.h:935
constexpr GxProperty::TYPE getType(void) const
タイプを取得
Definition GxProperty.h:1083
GxProperty(s64 &, const GxProperty::GxFunction &function, u32 attribute, GxRtti *pRtti, GxRtti *pOwnerRtti, u32 id)
コンストラクタ
Definition GxProperty.h:547
GxProperty(GxColor &, const GxProperty::GxFunction &function, u32 attribute, GxRtti *pRtti, GxRtti *pOwnerRtti, u32 id)
コンストラクタ
Definition GxProperty.h:745
void setValue(GxTypedObject *pObject, const GxColorHDR *const &value, u32 index=0)
値を設定
Definition GxProperty.h:761
GxProperty(TYPE type, const GxProperty::GxFunction &function, u32 attribute, GxRtti *pRtti, GxRtti *pOwnerRtti, u32 id)
コンストラクタ
GxProperty(GxVector4d &, const GxProperty::GxFunction &function, u32 attribute, GxRtti *pRtti, GxRtti *pOwnerRtti, u32 id)
コンストラクタ
Definition GxProperty.h:679
void reflectValue(GxTypedObject *pObject, u32 index=0)
自身を getValue() して setValue() する。(内部使用)
Definition GxProperty.cpp:1084
constexpr void setMemberRtti(GxRtti *pRtti)
RTTIを設定
Definition GxProperty.h:1029
void setValue(GxTypedObject *pObject, const GxPoint2 *const &value, u32 index=0)
値を設定
Definition GxProperty.h:783
void setValue(GxTypedObject *pObject, const GxColor *const &value, u32 index=0)
値を設定
Definition GxProperty.h:750
GxProperty(GxVector2d &, const GxProperty::GxFunction &function, u32 attribute, GxRtti *pRtti, GxRtti *pOwnerRtti, u32 id)
コンストラクタ
Definition GxProperty.h:657
void setValue(GxTypedObject *pObject, const GxVector2 *const &value, u32 index=0)
値を設定
Definition GxProperty.h:629
GxProperty(GxStringW *, const GxProperty::GxFunction &function, u32 attribute, GxRtti *pRtti, GxRtti *pOwnerRtti, u32 id)
コンストラクタ
Definition GxProperty.h:866
void setValue(GxTypedObject *pObject, const GxVector4 *const &value, u32 index=0)
値を設定
Definition GxProperty.h:651
GxProperty(GxVector2 &, const GxProperty::GxFunction &function, u32 attribute, GxRtti *pRtti, GxRtti *pOwnerRtti, u32 id)
コンストラクタ
Definition GxProperty.h:624
GxInformation & getInformation(void) const
情報を取得
Definition GxProperty.h:1019
GX_FORCE_INLINE void setAttribute(ATTRIBUTE attribute, b32 enable)
属性を設定
Definition GxProperty.h:1079
void setValue(GxTypedObject *pObject, const u16 &value, u32 index=0)
値を設定
Definition GxProperty.h:519
GxProperty & operator=(const GxProperty &property)
代入
Definition GxProperty.cpp:1023
constexpr GxRtti * getOwnerRtti(void) const
所持者のRTTIを取得
Definition GxProperty.h:1031
GxProperty(s32 &, const GxProperty::GxFunction &function, u32 attribute, GxRtti *pRtti, GxRtti *pOwnerRtti, u32 id)
コンストラクタ
Definition GxProperty.h:525
GxProperty(GxVector4 &, const GxProperty::GxFunction &function, u32 attribute, GxRtti *pRtti, GxRtti *pOwnerRtti, u32 id)
コンストラクタ
Definition GxProperty.h:646
const GxFunction & getFunction(void) const
関数を取得
Definition GxProperty.h:1025
GxProperty(u64 &, const GxProperty::GxFunction &function, u32 attribute, GxRtti *pRtti, GxRtti *pOwnerRtti, u32 id)
コンストラクタ
Definition GxProperty.h:558
void setValue(GxTypedObject *pObject, const s32 &value, u32 index=0)
値を設定
Definition GxProperty.h:530
GxProperty(u16 &, const GxProperty::GxFunction &function, u32 attribute, GxRtti *pRtti, GxRtti *pOwnerRtti, u32 id)
コンストラクタ
Definition GxProperty.h:514
GxProperty(u32 &, const GxProperty::GxFunction &function, u32 attribute, GxRtti *pRtti, GxRtti *pOwnerRtti, u32 id)
コンストラクタ
Definition GxProperty.h:536
void setValue(GxTypedObject *pObject, const GX_CHAR &value, u32 index=0)
値を設定
Definition GxProperty.h:475
GxProperty(GxClassBaseRoot *, const GxProperty::GxFunction &function, u32 attribute, GxRtti *pRtti, GxRtti *pOwnerRtti, u32 id)
コンストラクタ
Definition GxProperty.h:877
static constexpr void * getDummyBuffer(void)
ダミーバッファを取得
Definition GxProperty.h:1047
GxProperty(GX_CSTR &, const GxProperty::GxFunction &function, u32 attribute, GxRtti *pRtti, GxRtti *pOwnerRtti, u32 id)
コンストラクタ
Definition GxProperty.h:602
void setValue(GxTypedObject *pObject, const GxProperty *const &value, u32 index=0)
値を設定
Definition GxProperty.h:838
void setValue(GxTypedObject *pObject, const GxSize *const &value, u32 index=0)
値を設定
Definition GxProperty.h:728
void setValue(GxTypedObject *pObject, const GxVector3d *const &value, u32 index=0)
値を設定
Definition GxProperty.h:673
static GxCustomProperty * getCustomProperty(const GxRtti *pRtti)
カスタムプロパティを取得
Definition GxProperty.cpp:1369
GxProperty(GxStringW &, const GxProperty::GxFunction &function, u32 attribute, GxRtti *pRtti, GxRtti *pOwnerRtti, u32 id)
コンストラクタ
Definition GxProperty.h:811
u32 getArrayCount(const GxTypedObject *pObject) const
配列数を取得
Definition GxProperty.cpp:1250
static constexpr u32 DEFAULT_ID
デフォルトID
Definition GxProperty.h:126
void setValue(GxTypedObject *pObject, const GxRtti **const ppValue, u32 index=0)
値を設定
Definition GxProperty.h:893
void setValue(GxTypedObject *pObject, const f64 &value, u32 index=0)
値を設定
Definition GxProperty.h:585
GxProperty(GxFlag32Base &, const GxProperty::GxFunction &function, u32 attribute, GxRtti *pRtti, GxRtti *pOwnerRtti, u32 id)
コンストラクタ
Definition GxProperty.h:789
GxProperty(GxProperty *, const GxProperty::GxFunction &function, u32 attribute, GxRtti *pRtti, GxRtti *pOwnerRtti, u32 id)
コンストラクタ
Definition GxProperty.h:899
void setValue(GxTypedObject *pObject, const GxString *const &value, u32 index=0)
値を設定
Definition GxProperty.h:805
GxProperty(GxSize &, const GxProperty::GxFunction &function, u32 attribute, GxRtti *pRtti, GxRtti *pOwnerRtti, u32 id)
コンストラクタ
Definition GxProperty.h:723
GxProperty(GxColorHSV &, const GxProperty::GxFunction &function, u32 attribute, GxRtti *pRtti, GxRtti *pOwnerRtti, u32 id)
コンストラクタ
Definition GxProperty.h:767
GxProperty(GxVector3 &, const GxProperty::GxFunction &function, u32 attribute, GxRtti *pRtti, GxRtti *pOwnerRtti, u32 id)
コンストラクタ
Definition GxProperty.h:635
void setValue(GxTypedObject *pObject, const b32 &value, u32 index=0)
値を設定
Definition GxProperty.h:596
void setValue(GxTypedObject *pObject, const GxColorHSV *const &value, u32 index=0)
値を設定
Definition GxProperty.h:772
EVENT_ARGUMENT_TYPE
引数付きイベント定義
Definition GxProperty.h:159
void setValue(GxTypedObject *pObject, const u32 &value, u32 index=0)
値を設定
Definition GxProperty.h:541
GxProperty(GxRect &, const GxProperty::GxFunction &function, u32 attribute, GxRtti *pRtti, GxRtti *pOwnerRtti, u32 id)
コンストラクタ
Definition GxProperty.h:734
GxProperty(f32 &, const GxProperty::GxFunction &function, u32 attribute, GxRtti *pRtti, GxRtti *pOwnerRtti, u32 id)
コンストラクタ
Definition GxProperty.h:569
GxProperty(s16 &, const GxProperty::GxFunction &function, u32 attribute, GxRtti *pRtti, GxRtti *pOwnerRtti, u32 id)
コンストラクタ
Definition GxProperty.h:503
void setValue(GxTypedObject *pObject, const void **const ppValue, u32 index=0)
値を設定
Definition GxProperty.h:849
void setValue(GxTypedObject *pObject, const GxClassBaseRoot *const &value, u32 index=0)
値を設定
Definition GxProperty.h:827
void setValue(GxTypedObject *pObject, const GxStringW **const ppValue, u32 index=0)
値を設定
Definition GxProperty.h:871
GxProperty(s8 &, const GxProperty::GxFunction &function, u32 attribute, GxRtti *pRtti, GxRtti *pOwnerRtti, u32 id)
コンストラクタ
Definition GxProperty.h:481
constexpr u32 getAttributeData(void) const
属性データを取得
Definition GxProperty.h:1081
void setValue(GxTypedObject *pObject, const GxMatrix44 *const &value, u32 index=0)
値を設定
Definition GxProperty.h:695
GxProperty(GxClassBaseRoot &, const GxProperty::GxFunction &function, u32 attribute, GxRtti *pRtti, GxRtti *pOwnerRtti, u32 id)
コンストラクタ
Definition GxProperty.h:822
GxProperty(b32 &, const GxProperty::GxFunction &function, u32 attribute, GxRtti *pRtti, GxRtti *pOwnerRtti, u32 id)
コンストラクタ
Definition GxProperty.h:591
GxProperty(GX_CWSTR &, const GxProperty::GxFunction &function, u32 attribute, GxRtti *pRtti, GxRtti *pOwnerRtti, u32 id)
コンストラクタ
Definition GxProperty.h:613
void setValue(GxTypedObject *pObject, const GxProperty **const ppValue, u32 index=0)
値を設定
Definition GxProperty.h:904
登録ノードクラス
Definition GxProperty.h:1652
GxNode(const GxNode &node)
コピーコンストラクタ
Definition GxProperty.h:1668
GxNode(const GxProperty &property, GxClassBaseRoot *pObject=nullptr)
コンストラクタ
Definition GxProperty.h:1664
constexpr GxClassBaseRoot * getObject(void) const
オブジェクトを取得
Definition GxProperty.h:1679
GxNode(GxProperty *pProperty, GxClassBaseRoot *pObject=nullptr)
コンストラクタ
Definition GxProperty.h:1666
GxNode(void)
デフォルトコンストラクタ
Definition GxProperty.h:1662
GX_FORCE_INLINE GxProperty & getProperty(void)
プロパティを取得
Definition GxProperty.h:1681
GX_RTTI_STRUCT(GxNode)
初期化
プロパティテーブルクラス
Definition GxProperty.h:1641
void remove(GxProperty *pProperty)
プロパティを削除
Definition GxProperty.cpp:2384
virtual GxClassBaseRoot * getObject(u32 i) const
オブジェクトを取得
Definition GxProperty.h:1724
virtual void add(const GxProperty &property, GxClassBaseRoot *pObject=nullptr)
プロパティを追加
Definition GxProperty.cpp:2350
virtual void operator<<(const GxProperty &property)
プロパティを追加
Definition GxProperty.cpp:2340
virtual GxNode & getNode(u32 i) const
ノードを取得
Definition GxProperty.h:1726
~GxPropertyTable(void) override
デストラクタ
Definition GxProperty.cpp:2268
u32 _count
配列数
Definition GxProperty.h:1781
virtual u32 getCount(void) const
プロパティ数を取得
Definition GxProperty.h:1728
GxPropertyTable(void)
デフォルトコンストラクタ
Definition GxProperty.cpp:2233
GX_FORCE_INLINE void allocForward(u32 count)
リストのバッファを予め確保(リストが伸長する場合のみ)
Definition GxProperty.h:1763
GxNode * _pNode
ノード
Definition GxProperty.h:1783
virtual void operator=(const GxPropertyTable &propertyTable)
代入
Definition GxProperty.cpp:2282
GX_FORCE_INLINE void clear(void)
クリア
Definition GxProperty.h:1761
constexpr void reset(void)
リストのバッファを残しつつカウントを0にセットする
Definition GxProperty.h:1765
u32 _allocCount
配列メモリの確保数
Definition GxProperty.h:1782
virtual GxProperty & operator[](u32 i) const
const配列アクセス
Definition GxProperty.cpp:2299
実行時型情報クラス
Definition GxRtti.h:154
GUI用
Definition GxDefine.h:194
GUI用フラグ型
Definition GxDefine.h:203
色(HDR)
Definition GxColor.h:241
色(HSV)
Definition GxColor.h:373
Definition GxColor.h:21
フラグ
Definition GxStruct.h:1243
4×4行列(行優先)
Definition GxMatrix.h:607
アフィン変換行列(行優先)
Definition GxMatrix.h:330
座標
Definition GxStruct.h:867
情報構造体
Definition GxProperty.h:217
PROPERTY_FUNCTION_FROM_STRING _pFunctionFromString
文字列から設定する関数ポインタ
Definition GxProperty.h:227
u32 _padding[1]
パディング
Definition GxProperty.h:222
PROPERTY_FUNCTION_COPY_VALUE _pFunctionCopyValue
コピー関数ポインタ
Definition GxProperty.h:225
GxProperty::TYPE _type
Definition GxProperty.h:219
PROPERTY_FUNCTION_GET_VALUE _pFunctionGetValue
取得関数ポインタ
Definition GxProperty.h:223
PROPERTY_FUNCTION_GET_RTTI _pFunctionGetRtti
RTTI取得関数ポインタ
Definition GxProperty.h:228
u32 _size
サイズ
Definition GxProperty.h:220
PROPERTY_FUNCTION_SET_VALUE _pFunctionSetValue
設定関数ポインタ
Definition GxProperty.h:224
PROPERTY_FUNCTION_TO_STRING _pFunctionToString
文字列から取得する関数ポインタ
Definition GxProperty.h:226
static constexpr u32 NAME_LENGTH_MAX
型名の最大文字数
Definition GxProperty.h:218
u32 _attribute
属性
Definition GxProperty.h:221
クォータニオン
Definition GxQuaternion.h:19
矩形
Definition GxStruct.h:951
サイズ
Definition GxStruct.h:730
文字列型クラス
Definition GxString.h:18
ワイド文字列型クラス(UTF-16用)
Definition GxString.h:430
Definition GxBase.h:24
2次元ベクトル
Definition GxVector.h:34
2次元ベクトル(倍精度)
Definition GxVectord.h:25
3次元ベクトル
Definition GxVector.h:245
3次元ベクトル(倍精度)
Definition GxVectord.h:235
4次元ベクトル
Definition GxVector.h:582
4次元ベクトル(倍精度)
Definition GxVectord.h:497
32bitブーリアン型
Definition GxDefine.h:162
32bitブーリアン
Definition GxDefine.h:173