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
 Always returns nullptr; once a property is modified through accessors, there is no point in giving more direct access to others.
 
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
 Modifies the value of the property. Pass the instance pointer to the surrounding class along.
 
- Public Member Functions inherited from xiiTypedMemberProperty< xiiTypeTraits< Type >::NonConstReferenceType >
 xiiTypedMemberProperty (xiiStringView sPropertyName)
 Passes the property name through to xiiAbstractMemberProperty.
 
virtual const xiiRTTIGetSpecificType () const override
 Returns the actual type of the property. You can then compare that with known types, eg. compare it to xiiGetStaticRTTI<int>() to see whether this is an int property.
 
virtual void SetValue (void *pInstance, Type value) const=0
 Modifies the value of the property. Pass the instance pointer to the surrounding class along.
 
virtual void GetValuePtr (const void *pInstance, void *pObject) const override
 Writes the value of this property in pInstance to pObject. pObject needs to point to an instance of this property's type.
 
virtual void SetValuePtr (void *pInstance, const void *pObject) const override
 Sets the value of pObject to the property in pInstance. pObject needs to point to an instance of this property's type.
 
- 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.
 
xiiStringView GetPropertyName () const
 Returns the name of the property.
 
const xiiBitflags< xiiPropertyFlags > & GetFlags () const
 Returns the flags of the property.
 
xiiAbstractPropertyAddFlags (xiiBitflags< xiiPropertyFlags > flags)
 Adds flags to the property. Returns itself to allow to be called during initialization.
 
xiiAbstractPropertyAddAttributes (xiiPropertyAttribute *pAttrib1, xiiPropertyAttribute *pAttrib2=nullptr, xiiPropertyAttribute *pAttrib3=nullptr, xiiPropertyAttribute *pAttrib4=nullptr, xiiPropertyAttribute *pAttrib5=nullptr, xiiPropertyAttribute *pAttrib6=nullptr)
 Adds attributes to the property. Returns itself to allow to be called during initialization. Allocate an attribute using standard 'new'.
 
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< xiiPropertyFlagsm_Flags
 
xiiStringView m_sPropertyName
 
xiiHybridArray< const xiiPropertyAttribute *, 2U, xiiStaticAllocatorWrapperm_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: