Plasma Engine  2.0
Loading...
Searching...
No Matches
plAccessorProperty< Class, Type > Class Template Reference

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

#include <MemberProperty.h>

Inheritance diagram for plAccessorProperty< Class, Type >:

Public Types

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

Public Member Functions

 plAccessorProperty (const char *szPropertyName, 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 plTypedMemberProperty< plTypeTraits< Type >::NonConstReferenceType >
 plTypedMemberProperty (const char *szPropertyName)
 Passes the property name through to plAbstractMemberProperty.
 
virtual const plRTTI * GetSpecificType () const override
 Returns the actual type of the property. You can then compare that with known types, eg. compare it to plGetStaticRTTI<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 plAbstractMemberProperty
 plAbstractMemberProperty (const char *szPropertyName)
 Passes the property name through to plAbstractProperty.
 
virtual plPropertyCategory::Enum GetCategory () const override
 Returns plPropertyCategory::Member.
 
- Public Member Functions inherited from plAbstractProperty
 plAbstractProperty (const char *szPropertyName)
 The constructor must get the name of the property. The string must be a compile-time constant.
 
const char * GetPropertyName () const
 Returns the name of the property.
 
const plBitflags< plPropertyFlags > & GetFlags () const
 Returns the flags of the property.
 
plAbstractProperty * AddFlags (plBitflags< plPropertyFlags > flags)
 Adds flags to the property. Returns itself to allow to be called during initialization.
 
plAbstractProperty * AddAttributes (plPropertyAttribute *pAttrib1, plPropertyAttribute *pAttrib2=nullptr, plPropertyAttribute *pAttrib3=nullptr, plPropertyAttribute *pAttrib4=nullptr, plPropertyAttribute *pAttrib5=nullptr, plPropertyAttribute *pAttrib6=nullptr)
 Adds attributes to the property. Returns itself to allow to be called during initialization. Allocate an attribute using standard 'new'.
 
plArrayPtr< const plPropertyAttribute *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 plAbstractProperty
plBitflags< plPropertyFlags > m_Flags
 
const char * m_szPropertyName
 
plHybridArray< const plPropertyAttribute *, 2, plStaticsAllocatorWrapper > m_Attributes
 

Detailed Description

template<typename Class, typename Type>
class plAccessorProperty< Class, Type >

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

Member Function Documentation

◆ GetPropertyPointer()

template<typename Class , typename Type >
virtual void * plAccessorProperty< 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 plAbstractMemberProperty.

◆ GetValue()

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

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

Implements plTypedMemberProperty< plTypeTraits< Type >::NonConstReferenceType >.

◆ SetValue()

template<typename Class , typename Type >
virtual void plAccessorProperty< 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: