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

[internal] An implementation of xiiTypedMemberProperty that uses custom getter / setter functions to access a property. More...

#include <MemberProperty.h>

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

Public Types

using RealType = typename xiiTypeTraits<Type>::NonConstReferenceType
using GetterFunc = Type (Class::*)() const
using SetterFunc = void (Class::*)(Type value)

Public Member Functions

 xiiAccessorProperty (xiiStringView sPropertyName, GetterFunc getter, SetterFunc setter)
 Constructor.
virtual void * GetPropertyPointer (const void *pInstance) const override
virtual RealType 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, RealType value) const override
Public Member Functions inherited from xiiTypedMemberProperty< xiiTypeTraits< Type >::NonConstReferenceType >
 xiiTypedMemberProperty (xiiStringView sPropertyName)
 Passes the property name through to xiiAbstractMemberProperty.
virtual const xiiRTTI * GetSpecificType () const override
virtual void SetValue (void *pInstance, Type value) const=0
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 Type>
class xiiAccessorProperty< Class, Type >

[internal] An implementation of xiiTypedMemberProperty that uses custom getter / setter functions to access a property.

Member Function Documentation

◆ GetPropertyPointer()

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

Always returns nullptr; once a property is modified through accessors, there is no point in giving more direct access to others.

Implements xiiAbstractMemberProperty.

◆ GetValue()

template<typename Class, typename Type>
virtual RealType xiiAccessorProperty< Class, Type >::GetValue ( const void * pInstance) const
inlineoverridevirtual

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

Implements xiiTypedMemberProperty< xiiTypeTraits< Type >::NonConstReferenceType >.

◆ SetValue()

template<typename Class, typename Type>
virtual void xiiAccessorProperty< Class, Type >::SetValue ( void * pInstance,
RealType 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.

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