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

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

#include <MemberProperty.h>

Inheritance diagram for plMemberProperty< Class, Type >:

Public Types

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

Public Member Functions

 plMemberProperty (const char *szPropertyName, GetterFunc getter, SetterFunc setter, PointerFunc pointer)
 Constructor.
 
virtual void * GetPropertyPointer (const void *pInstance) const override
 Returns a pointer to the member property.
 
virtual Type 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, Type value) const override
 Modifies the value of the property. Pass the instance pointer to the surrounding class along.
 
- Public Member Functions inherited from plTypedMemberProperty< Type >
 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 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 plMemberProperty< Class, Type >

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

Member Function Documentation

◆ GetPropertyPointer()

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

Returns a pointer to the member property.

Implements plAbstractMemberProperty.

◆ GetValue()

template<typename Class , typename Type >
virtual Type plMemberProperty< 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< Type >.

◆ SetValue()

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


The documentation for this class was generated from the following file: