61 struct InstantiableTag;
62 struct NonInstantiableTag;
63 struct AutoDetectInstantiatabilityTag;
107 virtual const std::vector<const CYIRuntimeTypeInfo *> &
GetBasesTypeInfos()
const = 0;
145 virtual const void *CastVoidToVoid(
const CYIRuntimeTypeInfo &baseType,
const void *pObject)
const = 0;
149 virtual void *CreateVoidInstance()
const = 0;
164 template<
typename CLASS,
typename... BASES>
219 template<
typename T,
typename... TBASES>
230 virtual const std::vector<const CYIRuntimeTypeInfo *> &
GetBasesTypeInfos()
const override;
231 inline const void *CastVoidToVoidNonVirtual(
const CYIRuntimeTypeInfo &baseType,
const void *pObject)
const;
235 virtual const void *CastVoidToVoid(
const CYIRuntimeTypeInfo &baseType,
const void *pObject)
const override;
236 virtual void *CreateVoidInstance()
const override;
259 # define YI_TYPE_BASES(CLASS, BASES...) 280 # define YI_TYPE_DEF(CLASS, BASES...) 297 # define YI_TYPE_DEF_WITH_NAME(CLASS, NAME, BASES...) 321 # define YI_TYPE_DEF_INST(CLASS, BASES...) 341 # define YI_TYPE_DEF_INST_WITH_NAME(CLASS, NAME, BASES...) 369 template<
typename TARGET,
typename SOURCE>
390 template<
typename TARGET,
typename SOURCE>
396 template<
typename TARGET,
typename SOURCE>
397 inline std::shared_ptr<TARGET>
YiDynamicCast(
const std::shared_ptr<SOURCE> &pObject);
471 #include "utility/internal/YiRtti.inl" CLASS ClassType
Definition: YiRtti.h:171
std::tuple< BASES... > BaseTypes
Definition: YiRtti.h:182
const T * CastVoidPointer(const void *pObject) const
bool operator<(const CYIRuntimeTypeInfo &other) const
Container class for Unicode strings. Conceptually, a CYIString object is a sequence of Unicode charac...
Definition: YiString.h:32
bool operator!=(const CYIRuntimeTypeInfo &other) const
bool operator==(const CYIRuntimeTypeInfo &other) const
const CYIRuntimeTypeInfo * YiGetTypeInfo(const char *pTypeName)
CYIStringView GetNameAsView() const
virtual ~CYIRuntimeTypeInfo()
TARGET * YiDynamicCast(SOURCE *pObject)
Casts the pointer pObject to type T*.
std::shared_ptr< TARGET > YiDynamicPointerCast(const std::shared_ptr< SOURCE > &pObject)
Casts the shared pointer pObject to shared pointer type T*.
std::unique_ptr< T > CreateInstance() const
This is a sample class to document the RTTI functions inserted into classes by the YI_TYPE_BASES(...
Definition: YiRtti.h:437
std::unique_ptr< T > YiRTTINew(CYIStringView name)
Creates a new instance of the type identifed by name.
The abstract runtime representation of a C++ type.
Definition: YiRtti.h:58
virtual bool IsInstantiable() const =0
void RegisterWithLinker() const
virtual const std::vector< const CYIRuntimeTypeInfo * > & GetBasesTypeInfos() const =0
CYIRuntimeTypeInfo(CYIStringView name)
CYIString GetName() const
The runtime representation of a C++ type.
Definition: YiRtti.h:165
A lightweight wrapper around a sequence of Unicode characters.
Definition: YiStringView.h:56