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 plRTTIGetSpecificType () 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.
 
plAbstractPropertyAddFlags (plBitflags< plPropertyFlags > flags)
 Adds flags to the property. Returns itself to allow to be called during initialization.
 
plAbstractPropertyAddAttributes (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< plPropertyFlagsm_Flags
 
const char * m_szPropertyName
 
plHybridArray< const plPropertyAttribute *, 2, plStaticsAllocatorWrapperm_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: