XII Release 0.1.0
Loading...
Searching...
No Matches
xiiEnumMemberProperty< Class, EnumType, Type > Class Template Reference

[internal] An implementation of xiiTypedEnumProperty that accesses the enum property data directly. More...

#include <EnumProperty.h>

Inheritance diagram for xiiEnumMemberProperty< Class, EnumType, Type >:
[legend]

Public Types

using GetterFunc = Type (*)(const Class* pInstance)
using SetterFunc = void (*)(Class* pInstance, Type value)
using PointerFunc = void* (*)(const Class* pInstance)

Public Member Functions

 xiiEnumMemberProperty (xiiStringView sPropertyName, GetterFunc getter, SetterFunc setter, PointerFunc pointer)
 Constructor.
virtual void * GetPropertyPointer (const void *pInstance) const override
virtual xiiInt64 GetValue (const void *pInstance) const override
 Returns the value of the property. Pass the instance pointer to the surrounding class along.
virtual void SetValue (void *pInstance, xiiInt64 value) const override
Public Member Functions inherited from xiiTypedEnumProperty< EnumType >
 xiiTypedEnumProperty (xiiStringView sPropertyName)
 Passes the property name through to xiiAbstractEnumerationProperty.
virtual const xiiRTTI * GetSpecificType () const override
Public Member Functions inherited from xiiAbstractEnumerationProperty
 xiiAbstractEnumerationProperty (xiiStringView sPropertyName)
 Passes the property name through to xiiAbstractMemberProperty.
virtual void GetValuePtr (const void *pInstance, void *pObject) const override
virtual void SetValuePtr (void *pInstance, const void *pObject) const override
Public Member Functions inherited from xiiAbstractMemberProperty
 xiiAbstractMemberProperty (xiiStringView sPropertyName)
 Passes the property name through to xiiAbstractProperty.
virtual xiiPropertyCategory::Enum GetCategory () const override
 Returns xiiPropertyCategory::Member.
Public Member Functions inherited from xiiAbstractProperty
 xiiAbstractProperty (xiiStringView sPropertyName)
 The constructor must get the name of the property. The string must be a compile-time constant.
virtual ~xiiAbstractProperty ()
 Copyright (c) Theophilus Eriata. All Rights Reserved.
xiiStringView GetPropertyName () const
 Returns the name of the property.
const xiiBitflags< xiiPropertyFlags > & GetFlags () const
 Returns the flags of the property.
xiiAbstractProperty * AddFlags (xiiBitflags< xiiPropertyFlags > flags)
 Adds flags to the property. Returns itself to allow to be called during initialization.
xiiAbstractProperty * AddAttributes (xiiPropertyAttribute *pAttrib1, xiiPropertyAttribute *pAttrib2=nullptr, xiiPropertyAttribute *pAttrib3=nullptr, xiiPropertyAttribute *pAttrib4=nullptr, xiiPropertyAttribute *pAttrib5=nullptr, xiiPropertyAttribute *pAttrib6=nullptr)
xiiArrayPtr< const xiiPropertyAttribute *const > GetAttributes () const
 Returns the array of property attributes.
template<typename Type>
const Type * GetAttributeByType () const
 Returns the first attribute that derives from the given type, or nullptr if nothing is found.

Additional Inherited Members

Protected Attributes inherited from xiiAbstractProperty
xiiBitflags< xiiPropertyFlags > m_Flags
xiiStringView m_sPropertyName
xiiHybridArray< const xiiPropertyAttribute *, 2U, xiiStaticAllocatorWrapper > m_Attributes

Detailed Description

template<typename Class, typename EnumType, typename Type>
class xiiEnumMemberProperty< Class, EnumType, Type >

[internal] An implementation of xiiTypedEnumProperty that accesses the enum property data directly.

Member Function Documentation

◆ GetPropertyPointer()

template<typename Class, typename EnumType, typename Type>
virtual void * xiiEnumMemberProperty< Class, EnumType, Type >::GetPropertyPointer ( const void * pInstance) const
inlineoverridevirtual

Returns a pointer to the property data or nullptr. If a valid pointer is returned, that pointer and the information from GetSpecificType() can be used to step deeper into the type (if required).

You need to pass the pointer to an object on which you are operating. This function is mostly of interest when the property itself is a compound type (a struct or class). If it is a simple type (int, float, etc.) it doesn't make much sense to retrieve the pointer.

For example GetSpecificType() might return that a property is of type xiiVec3. In that case one might either stop and just use the code to handle xiiVec3 types, or one might continue and enumerate all sub-properties (x, y and z) as well.

Note
There is no guarantee that this function returns a non-nullptr pointer, independent of the type. When a property uses custom 'accessors' (functions to get / set the property value), it is not possible (or useful) to get the property pointer.

Implements xiiAbstractMemberProperty.

◆ GetValue()

template<typename Class, typename EnumType, typename Type>
virtual xiiInt64 xiiEnumMemberProperty< Class, EnumType, Type >::GetValue ( const void * pInstance) const
inlineoverridevirtual

Returns the value of the property. Pass the instance pointer to the surrounding class along.

Implements xiiAbstractEnumerationProperty.

◆ SetValue()

template<typename Class, typename EnumType, typename Type>
virtual void xiiEnumMemberProperty< Class, EnumType, Type >::SetValue ( void * pInstance,
xiiInt64 value ) const
inlineoverridevirtual

Modifies the value of the property. Pass the instance pointer to the surrounding class along.

Note
Make sure the property is not read-only before calling this, otherwise an assert will fire.

Implements xiiAbstractEnumerationProperty.


The documentation for this class was generated from the following file:
  • /home/runner/work/XII/XII/Source/Engine/Foundation/Reflection/Implementation/EnumProperty.h