XII Release 0.1.0
Loading...
Searching...
No Matches
xiiAbstractFunctionProperty Class Referenceabstract

The base class for a property that represents a function. More...

#include <AbstractProperty.h>

Inheritance diagram for xiiAbstractFunctionProperty:
[legend]

Public Member Functions

 xiiAbstractFunctionProperty (xiiStringView sPropertyName)
 Passes the property name through to xiiAbstractProperty.
 
virtual xiiPropertyCategory::Enum GetCategory () const override
 Returns the category of this property. Cast this property to the next higher type for more information.
 
virtual xiiFunctionType::Enum GetFunctionType () const =0
 Returns the type of function, see xiiFunctionPropertyType::Enum.
 
virtual const xiiRTTIGetReturnType () const =0
 Returns the type of the return value.
 
virtual xiiBitflags< xiiPropertyFlagsGetReturnFlags () const =0
 Returns property flags of the return value.
 
virtual xiiUInt32 GetArgumentCount () const =0
 Returns the number of arguments.
 
virtual const xiiRTTIGetArgumentType (xiiUInt32 uiParamIndex) const =0
 Returns the type of the given argument.
 
virtual xiiBitflags< xiiPropertyFlagsGetArgumentFlags (xiiUInt32 uiParamIndex) const =0
 Returns the property flags of the given argument.
 
virtual void Execute (void *pInstance, xiiArrayPtr< xiiVariant > arguments, xiiVariant &out_returnValue) const =0
 Calls the function. Provide the instance on which the function is supposed to be called.
 
virtual const xiiRTTIGetSpecificType () const override
 Returns the type information of the constant property. Use this to cast this property to a specific version of xiiTypedConstantProperty.
 
xiiAbstractFunctionPropertyAddFlags (xiiBitflags< xiiPropertyFlags > flags)
 Adds flags to the property. Returns itself to allow to be called during initialization.
 
xiiAbstractFunctionPropertyAddAttributes (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'.
 
- 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

The base class for a property that represents a function.

Member Function Documentation

◆ Execute()

virtual void xiiAbstractFunctionProperty::Execute ( void * pInstance,
xiiArrayPtr< xiiVariant > arguments,
xiiVariant & out_returnValue ) const
pure virtual

Calls the function. Provide the instance on which the function is supposed to be called.

arguments must be the size of GetArgumentCount, the following rules apply for both arguments and return value: Any standard type must be provided by value, even if it is a pointer to one. Types must match exactly, no ConvertTo is called. enum and bitflags are supported if xiiEnum / xiiBitflags is used, value must be provided as xiiInt64. Out values (&, *) are written back to the variant they were read from. Any class is provided by pointer, regardless of whether it is a pointer or not. The returnValue must only be valid if the return value is a ref or by value class. In that case returnValue must be a ptr to a valid class instance of the returned type. An invalid variant is equal to a nullptr, except for if the argument is of type xiiVariant, in which case it is impossible to pass along a nullptr.

Implemented in xiiConstructorFunctionProperty< CLASS, Args >, xiiFunctionProperty< R(*)(Args...)>, xiiFunctionProperty< R(CLASS::*)(Args...) const >, xiiFunctionProperty< R(CLASS::*)(Args...)>, xiiPhantomFunctionProperty, xiiScriptCoroutineFunctionProperty, and xiiVisualScriptFunctionProperty.

◆ GetArgumentCount()

virtual xiiUInt32 xiiAbstractFunctionProperty::GetArgumentCount ( ) const
pure virtual

◆ GetArgumentFlags()

virtual xiiBitflags< xiiPropertyFlags > xiiAbstractFunctionProperty::GetArgumentFlags ( xiiUInt32 uiParamIndex) const
pure virtual

◆ GetArgumentType()

virtual const xiiRTTI * xiiAbstractFunctionProperty::GetArgumentType ( xiiUInt32 uiParamIndex) const
pure virtual

◆ GetCategory()

virtual xiiPropertyCategory::Enum xiiAbstractFunctionProperty::GetCategory ( ) const
inlineoverridevirtual

Returns the category of this property. Cast this property to the next higher type for more information.

Implements xiiAbstractProperty.

◆ GetFunctionType()

◆ GetReturnFlags()

◆ GetReturnType()

virtual const xiiRTTI * xiiAbstractFunctionProperty::GetReturnType ( ) const
pure virtual

◆ GetSpecificType()

virtual const xiiRTTI * xiiAbstractFunctionProperty::GetSpecificType ( ) const
inlineoverridevirtual

Returns the type information of the constant property. Use this to cast this property to a specific version of xiiTypedConstantProperty.

Implements xiiAbstractProperty.


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