ezEngine  Milestone 7
ezBitflagsMemberProperty< Class, EnumType, Type > Class Template Reference

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

#include <BitflagsProperty.h>

Inheritance diagram for ezBitflagsMemberProperty< Class, EnumType, Type >:

Public Types

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

Public Member Functions

 ezBitflagsMemberProperty (const char *szPropertyName, GetterFunc getter, SetterFunc setter, PointerFunc pointer)
 Constructor.
 
virtual void * GetPropertyPointer (const void *pInstance) const override
 Returns a pointer to the property data or nullptr. If a valid pointer is returned, that pointer and the information from GetSpecificType() can be used to step deeper into the type (if required). More...
 
virtual ezInt64 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, ezInt64 value) override
 Modifies the value of the property. Pass the instance pointer to the surrounding class along. More...
 
- Public Member Functions inherited from ezTypedEnumProperty< EnumType >
 ezTypedEnumProperty (const char *szPropertyName)
 Passes the property name through to ezAbstractEnumerationProperty.
 
virtual const ezRTTIGetSpecificType () const override
 Returns the actual type of the property. You can then test whether it derives from ezEnumBase or ezBitflagsBase to determine whether we are dealing with an enum or bitflags property.
 
- Public Member Functions inherited from ezAbstractEnumerationProperty
 ezAbstractEnumerationProperty (const char *szPropertyName)
 Passes the property name through to ezAbstractMemberProperty.
 
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, void *pObject) 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 ezAbstractMemberProperty
 ezAbstractMemberProperty (const char *szPropertyName)
 Passes the property name through to ezAbstractProperty.
 
virtual ezPropertyCategory::Enum GetCategory () const override
 Returns ezPropertyCategory::Member.
 
- Public Member Functions inherited from ezAbstractProperty
 ezAbstractProperty (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 ezBitflags
< ezPropertyFlags > & 
GetFlags () const
 Returns the flags of the property.
 
ezAbstractPropertyAddFlags (ezBitflags< ezPropertyFlags > flags)
 Adds flags to the property. Returns itself to allow to be called during initialization.
 
ezAbstractPropertyAddAttributes (ezPropertyAttribute *pAttrib1, ezPropertyAttribute *pAttrib2=nullptr, ezPropertyAttribute *pAttrib3=nullptr, ezPropertyAttribute *pAttrib4=nullptr, ezPropertyAttribute *pAttrib5=nullptr, ezPropertyAttribute *pAttrib6=nullptr)
 Adds attributes to the property. Returns itself to allow to be called during initialization. Allocate an attribute using standard 'new'.
 
const ezArrayPtr
< ezPropertyAttribute *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.
 

Private Attributes

GetterFunc m_Getter
 
SetterFunc m_Setter
 
PointerFunc m_Pointer
 

Additional Inherited Members

- Protected Attributes inherited from ezAbstractProperty
ezBitflags< ezPropertyFlagsm_Flags
 
const char * m_szPropertyName
 
ezHybridArray
< ezPropertyAttribute *, 2 > 
m_Attributes
 

Detailed Description

template<typename Class, typename EnumType, typename Type>
class ezBitflagsMemberProperty< Class, EnumType, Type >

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

Member Function Documentation

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

Returns a pointer to the property data or nullptr. If a valid pointer is returned, that pointer and the information from GetSpecificType() can be used to step deeper into the type (if required).

You need to pass the pointer to an object on which you are operating. This function is mostly of interest when the property itself is a compound type (a struct or class). If it is a simple type (int, float, etc.) it doesn't make much sense to retrieve the pointer.

For example GetSpecificType() might return that a property is of type ezVec3. In that case one might either stop and just use the code to handle ezVec3 types, or one might continue and enumerate all sub-properties (x, y and z) as well.

Note
There is no guarantee that this function returns a non-nullptr pointer, independent of the type. When a property uses custom 'accessors' (functions to get / set the property value), it is not possible (or useful) to get the property pointer.

Implements ezAbstractMemberProperty.

template<typename Class , typename EnumType , typename Type >
virtual void ezBitflagsMemberProperty< Class, EnumType, Type >::SetValue ( void *  pInstance,
ezInt64  value 
)
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 ezAbstractEnumerationProperty.


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