OROCHI
 
Loading...
Searching...
No Matches
GxRttiResource.h File Reference

リソース用実行時型情報 (Run Time Type Identification) More...

This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

class  GxRttiResource
 リソース実行時型情報クラス More...
 

Macros

リソースプロパティ登録マクロ
#define _RESOURCE(__CLASS__, __VALUE__)
 
#define _RESOURCE_ATTRIBUTE(__CLASS__, __VALUE__, __ATTRIBUTE__)
 
#define _RESOURCE_NAME(__CLASS__, __VALUE__, __NAME__)
 
#define _RESOURCE_NAME_ATTRIBUTE(__CLASS__, __VALUE__, __NAME__, __ATTRIBUTE__)
 
#define _RESOURCE_ARRAY(__CLASS__, __VALUE__)
 
#define _RESOURCE_ARRAY_COUNT(__CLASS__, __VALUE__, __COUNT__)
 
#define _RESOURCE_CUSTOM(__CLASS__, __NAME__, __GET_VALUE_FUNC__, __SET_VALUE_FUNC__)
 
#define _RESOURCE_CUSTOM_ATTRIBUTE(__CLASS__, __NAME__, __GET_VALUE_FUNC__, __SET_VALUE_FUNC__, __ATTRIBUTE__)
 
#define _RESOURCE_DYNAMIC(__CLASS__, __NAME__, __GET_IVALUE_FUNC__, __SET_IVALUE_FUNC__, __GET_COUNT_FUNC__, __SET_COUNT_FUNC__)
 
#define _RESOURCE_DYNAMIC_ATTRIBUTE(__CLASS__, __NAME__, __GET_IVALUE_FUNC__, __SET_IVALUE_FUNC__, __GET_COUNT_FUNC__, __SET_COUNT_FUNC__, __ATTRIBUTE__)
 
リソース実行時型情報宣言(.h記述用)マクロ
#define GX_RTTI_RESOURCE_CPP_PRAGMA_BEGIN()
 
#define GX_RTTI_RESOURCE_CPP_PRAGMA_END()
 
#define GX_RTTI_RESOURCE_DEFINE(__THIS__, __BASE__, __NAME__, __ID__, __ICON_TYPE__, __ATTRIBUTE__, __CREATEINSTANCE__)
 リソースクラス型情報定義
 
#define GX_RTTI_RESOURCE(__THIS__, __BASE__)
 リソースクラス型情報宣言
 
#define GX_RTTI_RESOURCE_ICON(__THIS__, __BASE__, __ICON_TYPE__)
 
#define GX_RTTI_RESOURCE_NAME(__THIS__, __BASE__, __NAME__)
 
#define GX_RTTI_RESOURCE_NAME_ICON(__THIS__, __BASE__, __NAME__, __ICON_TYPE__)
 
#define GX_RTTI_ABSTRACT_RESOURCE(__THIS__, __BASE__)
 リソース抽象クラス型情報宣言
 
#define GX_RTTI_ABSTRACT_RESOURCE_ICON(__THIS__, __BASE__, __ICON_TYPE__)
 
#define GX_RTTI_ABSTRACT_RESOURCE_NAME(__THIS__, __BASE__, __NAME__)
 
#define GX_RTTI_ABSTRACT_RESOURCE_NAME_ICON(__THIS__, __BASE__, __NAME__, __ICON_TYPE__)
 
リソース実行時型情報定義(.cpp記述用)マクロ
#define GX_RESOURCE_MAGIC_NUMBER(__ext1__, __ext2__, __ext3__, __ext4__)
 
#define GX_RTTI_RESOURCE_DETAIL(__THIS__, __ATTRIBUTE__, __RES_VERSION__, __MAGIC_NUMBER__, __EXTENSION__, __RES_ATTRIBUTE__, __CONFIG__)
 リソースクラスRTTI実体定義
 
#define GX_RESOURCE_PROPERTY_BEGIN(__THIS__, __RES_VERSION__, __MAGIC_NUMBER__, __EXTENSION__, __RES_ATTRIBUTE__)
 リソースクラスRTTIプロパティ開始
 
#define GX_RESOURCE_PROPERTY_BEGIN_ABSTRACT(__THIS__, __RES_ATTRIBUTE__)
 
#define GX_RESOURCE_PROPERTY_END   GX_PROPERTY_END
 リソースクラスRTTIプロパティ終了
 

Detailed Description

リソース用実行時型情報 (Run Time Type Identification)

Author
Copyright (C)2009 SiliconStudio Inc. All rights reserved.
Takashi Taketa
Tahir Arai

Macro Definition Documentation

◆ _RESOURCE

#define _RESOURCE ( __CLASS__,
__VALUE__ )
Value:
_CUSTOM_PROPERTY_POINTER(__CLASS__, __VALUE__)

◆ _RESOURCE_ARRAY

#define _RESOURCE_ARRAY ( __CLASS__,
__VALUE__ )
Value:
_CUSTOM_PROPERTY_POINTER_ARRAY(__CLASS__, __VALUE__)

◆ _RESOURCE_ARRAY_COUNT

#define _RESOURCE_ARRAY_COUNT ( __CLASS__,
__VALUE__,
__COUNT__ )
Value:
_CUSTOM_PROPERTY_POINTER_ARRAY_COUNT(__CLASS__, __VALUE__, __COUNT__)

◆ _RESOURCE_ATTRIBUTE

#define _RESOURCE_ATTRIBUTE ( __CLASS__,
__VALUE__,
__ATTRIBUTE__ )
Value:
_CUSTOM_PROPERTY_POINTER_ATTRIBUTE(__CLASS__, __VALUE__, __ATTRIBUTE__)

◆ _RESOURCE_CUSTOM

#define _RESOURCE_CUSTOM ( __CLASS__,
__NAME__,
__GET_VALUE_FUNC__,
__SET_VALUE_FUNC__ )
Value:
_CUSTOM_PROPERTY_POINTER_CUSTOM(__CLASS__, __NAME__, __GET_VALUE_FUNC__, __SET_VALUE_FUNC__)

◆ _RESOURCE_CUSTOM_ATTRIBUTE

#define _RESOURCE_CUSTOM_ATTRIBUTE ( __CLASS__,
__NAME__,
__GET_VALUE_FUNC__,
__SET_VALUE_FUNC__,
__ATTRIBUTE__ )
Value:
_CUSTOM_PROPERTY_POINTER_CUSTOM_ATTRIBUTE(__CLASS__, __NAME__, __GET_VALUE_FUNC__, __SET_VALUE_FUNC__, __ATTRIBUTE__)

◆ _RESOURCE_DYNAMIC

#define _RESOURCE_DYNAMIC ( __CLASS__,
__NAME__,
__GET_IVALUE_FUNC__,
__SET_IVALUE_FUNC__,
__GET_COUNT_FUNC__,
__SET_COUNT_FUNC__ )
Value:
_CUSTOM_PROPERTY_POINTER_DYNAMIC(__CLASS__, __NAME__, __GET_IVALUE_FUNC__, __SET_IVALUE_FUNC__, __GET_COUNT_FUNC__, __SET_COUNT_FUNC__)

◆ _RESOURCE_DYNAMIC_ATTRIBUTE

#define _RESOURCE_DYNAMIC_ATTRIBUTE ( __CLASS__,
__NAME__,
__GET_IVALUE_FUNC__,
__SET_IVALUE_FUNC__,
__GET_COUNT_FUNC__,
__SET_COUNT_FUNC__,
__ATTRIBUTE__ )
Value:
_CUSTOM_PROPERTY_POINTER_DYNAMIC_ATTRIBUTE(__CLASS__, __NAME__, __GET_IVALUE_FUNC__, __SET_IVALUE_FUNC__, __GET_COUNT_FUNC__, __SET_COUNT_FUNC__, __ATTRIBUTE__)

◆ _RESOURCE_NAME

#define _RESOURCE_NAME ( __CLASS__,
__VALUE__,
__NAME__ )
Value:
_CUSTOM_PROPERTY_POINTER_NAME(__CLASS__, __VALUE__, __NAME__)

◆ _RESOURCE_NAME_ATTRIBUTE

#define _RESOURCE_NAME_ATTRIBUTE ( __CLASS__,
__VALUE__,
__NAME__,
__ATTRIBUTE__ )
Value:
_CUSTOM_PROPERTY_POINTER_NAME_ATTRIBUTE(__CLASS__, __VALUE__, __NAME__, __ATTRIBUTE__)

◆ GX_RESOURCE_MAGIC_NUMBER

#define GX_RESOURCE_MAGIC_NUMBER ( __ext1__,
__ext2__,
__ext3__,
__ext4__ )
Value:
GX_FOURCC(__ext1__, __ext2__, __ext3__, __ext4__)

識別用マジックナンバー生成マクロ

Parameters
ext1[in] 拡張子文字列第1文字
ext2[in] 拡張子文字列第2文字
ext3[in] 拡張子文字列第3文字
ext4[in] 拡張子文字列第4文字 (※拡張子が3文字の場合は'\0'を指定)

◆ GX_RESOURCE_PROPERTY_BEGIN

#define GX_RESOURCE_PROPERTY_BEGIN ( __THIS__,
__RES_VERSION__,
__MAGIC_NUMBER__,
__EXTENSION__,
__RES_ATTRIBUTE__ )
Value:
GX_RTTI_RESOURCE_DETAIL(__THIS__, 0, __RES_VERSION__, __MAGIC_NUMBER__, __EXTENSION__, __RES_ATTRIBUTE__, nullptr)
#define GX_RTTI_RESOURCE_DETAIL(__THIS__, __ATTRIBUTE__, __RES_VERSION__, __MAGIC_NUMBER__, __EXTENSION__, __RES_ATTRIBUTE__, __CONFIG__)
リソースクラスRTTI実体定義
Definition GxRttiResource.h:150

リソースクラスRTTIプロパティ開始

◆ GX_RESOURCE_PROPERTY_BEGIN_ABSTRACT

#define GX_RESOURCE_PROPERTY_BEGIN_ABSTRACT ( __THIS__,
__RES_ATTRIBUTE__ )
Value:
GX_RTTI_RESOURCE_DETAIL(__THIS__, 0, gx::core::GxRttiResource::VERSION_NOTHING, gx::core::GxRttiResource::MAGIC_NUMBER_NOTHING, gx::core::GxRttiResource::EXTENSION_NOTHING, __RES_ATTRIBUTE__, nullptr)

◆ GX_RTTI_ABSTRACT_RESOURCE

#define GX_RTTI_ABSTRACT_RESOURCE ( __THIS__,
__BASE__ )
Value:
GX_RTTI_RESOURCE_DEFINE(__THIS__, __BASE__, nullptr, gx::core::GxRtti::DEFAULT_ID, GxRtti::ICON_TYPE::INVALID, 0, nullptr)
#define GX_RTTI_RESOURCE_DEFINE(__THIS__, __BASE__, __NAME__, __ID__, __ICON_TYPE__, __ATTRIBUTE__, __CREATEINSTANCE__)
リソースクラス型情報定義
Definition GxRttiResource.h:72
@ INVALID
未定義

リソース抽象クラス型情報宣言

◆ GX_RTTI_ABSTRACT_RESOURCE_ICON

#define GX_RTTI_ABSTRACT_RESOURCE_ICON ( __THIS__,
__BASE__,
__ICON_TYPE__ )
Value:
GX_RTTI_RESOURCE_DEFINE(__THIS__, __BASE__, nullptr, gx::core::GxRtti::DEFAULT_ID, __ICON_TYPE__, 0, nullptr)

◆ GX_RTTI_ABSTRACT_RESOURCE_NAME

#define GX_RTTI_ABSTRACT_RESOURCE_NAME ( __THIS__,
__BASE__,
__NAME__ )
Value:
GX_RTTI_RESOURCE_DEFINE(__THIS__, __BASE__, nullptr, gx::core::GxRtti::DEFAULT_ID, GxRtti::ICON_TYPE::INVALID, 0, nullptr)

◆ GX_RTTI_ABSTRACT_RESOURCE_NAME_ICON

#define GX_RTTI_ABSTRACT_RESOURCE_NAME_ICON ( __THIS__,
__BASE__,
__NAME__,
__ICON_TYPE__ )
Value:
GX_RTTI_RESOURCE_DEFINE(__THIS__, __BASE__, nullptr, gx::core::GxRtti::DEFAULT_ID, __ICON_TYPE__, 0, nullptr)

◆ GX_RTTI_RESOURCE

#define GX_RTTI_RESOURCE ( __THIS__,
__BASE__ )
Value:
GX_RTTI_RESOURCE_DEFINE(__THIS__, __BASE__, nullptr, gx::core::GxRtti::DEFAULT_ID, GxRtti::ICON_TYPE::INVALID, gx::core::GxRtti::ATTRIBUTE_CREATABLE, GX_NEW __THIS__)

リソースクラス型情報宣言

◆ GX_RTTI_RESOURCE_DEFINE

#define GX_RTTI_RESOURCE_DEFINE ( __THIS__,
__BASE__,
__NAME__,
__ID__,
__ICON_TYPE__,
__ATTRIBUTE__,
__CREATEINSTANCE__ )
Value:
GX_RTTI_RESOURCE_CPP_PRAGMA_BEGIN() \
using MyClass = __THIS__; \
using Super = __BASE__; \
static gx::core::GxRttiResource __rtti; \
static gx::core::GxProperty __properties[]; \
static constexpr u32 __defaultId = __ID__; \
static constexpr u32 __defaultAttribute = __ATTRIBUTE__; \
static void usage(void){ gx::core::GxRtti& rtti = __THIS__::__rtti; \
gx::core::GxRtti::forceUsage(rtti); \
volatile u32 mask = 0; \
GX_ALLOCA(sizeof(MyClass) * mask + 1); } \
gx::core::GxRttiResource& getRtti(void) const override { return __THIS__::__rtti; } \
void* cast(const GxRtti& rtti){ if( getRtti().isDerived(rtti) ){ return this; } return nullptr; } \
const void* cast(const GxRtti& rtti) const { if( getRtti().isDerived(rtti) ){ return this; } return nullptr; } \
static gx::core::GxProperty* __getProperties(void){ return __properties; } \
static u32 __getPropertyCount(void); \
static GX_CSTR __getName(void){ return __NAME__; } \
static gx::core::GxRttiResource& __getStaticRtti(void){ return __rtti; } \
static __THIS__* __createInstance(void){ return __CREATEINSTANCE__; } \
GX_RTTI_RESOURCE_CPP_PRAGMA_END()
実行時型情報クラス
Definition GxRtti.h:154

リソースクラス型情報定義

◆ GX_RTTI_RESOURCE_DETAIL

#define GX_RTTI_RESOURCE_DETAIL ( __THIS__,
__ATTRIBUTE__,
__RES_VERSION__,
__MAGIC_NUMBER__,
__EXTENSION__,
__RES_ATTRIBUTE__,
__CONFIG__ )
Value:
gx::core::GxRttiResource __THIS__::__rtti( gx::core::GxRtti::TYPE::RESOURCE, sizeof(__THIS__), \
(__defaultId == gx::core::GxRtti::DEFAULT_ID)? GxMath::getHash32(#__THIS__) : __defaultId, __THIS__::__defaultAttribute | __ATTRIBUTE__, \
&Super::__getStaticRtti(), (gx::core::GxRttiResource::CREATE_INSTANCE_FUNCTION)&__THIS__::__createInstance, \
(gx::core::GxRttiResource::GET_PROPERTIES_FUNCTION)&__THIS__::__getProperties, (gx::core::GxRttiResource::GET_PROPERTY_NUM_FUNCTION)&__THIS__::__getPropertyCount, \
__RES_VERSION__, __MAGIC_NUMBER__, __EXTENSION__, __RES_ATTRIBUTE__, \
(gx::core::GxRttiResource::RESOURCE_CREATE_FUNCTION)&__THIS__::createCallback, (gx::core::GxRttiResource::RESOURCE_LOAD_FUNCTION)&__THIS__::load ); \
u32 __THIS__::__getPropertyCount(void){ u32 i; for(i = 0;__properties[i].getType() != gx::core::GxProperty::TYPE::COUNT_MAX; ++i){} return i; } \
gx::core::GxProperty __THIS__::__properties[] = {
static u32 getHash32(void *pData, u32 size)
ハッシュ値取得(32bit、データ、サイズ指定版)
Definition GxMath.cpp:241

リソースクラスRTTI実体定義

◆ GX_RTTI_RESOURCE_ICON

#define GX_RTTI_RESOURCE_ICON ( __THIS__,
__BASE__,
__ICON_TYPE__ )
Value:
GX_RTTI_RESOURCE_DEFINE(__THIS__, __BASE__, nullptr, gx::core::GxRtti::DEFAULT_ID, __ICON_TYPE__, gx::core::GxRtti::ATTRIBUTE_CREATABLE, GX_NEW __THIS__)

◆ GX_RTTI_RESOURCE_NAME

#define GX_RTTI_RESOURCE_NAME ( __THIS__,
__BASE__,
__NAME__ )
Value:
GX_RTTI_RESOURCE_DEFINE(__THIS__, __BASE__, nullptr, gx::core::GxRtti::DEFAULT_ID, GxRtti::ICON_TYPE::INVALID, gx::core::GxRtti::ATTRIBUTE_CREATABLE, GX_NEW __THIS__)

◆ GX_RTTI_RESOURCE_NAME_ICON

#define GX_RTTI_RESOURCE_NAME_ICON ( __THIS__,
__BASE__,
__NAME__,
__ICON_TYPE__ )
Value:
GX_RTTI_RESOURCE_DEFINE(__THIS__, __BASE__, nullptr, gx::core::GxRtti::DEFAULT_ID, __ICON_TYPE__, gx::core::GxRtti::ATTRIBUTE_CREATABLE, GX_NEW __THIS__)