Orxonox  0.0.5 Codename: Arcturus
Public Member Functions | Protected Attributes | List of all members
orxonox::FunctorPointer< F, O > Class Template Reference

FunctorPointer is a child class of FunctorMember and extends it with a function-pointer (or a function-object). More...

#include </home/jenkins/workspace/orxonox_doxygen_trunk/src/libraries/core/command/Functor.h>

Inheritance diagram for orxonox::FunctorPointer< F, O >:
orxonox::FunctorMember< O > orxonox::Functor orxonox::DestructionListener

Public Member Functions

 FunctorPointer (F functionPointer, O *object=nullptr)
 Constructor: Initializes the base class and stores the function-pointer. More...
 
getFunction () const
 Returns the function-pointer. More...
 
void setFunction (F functionPointer)
 Changes the function-pointer. More...
 
- Public Member Functions inherited from orxonox::FunctorMember< O >
 FunctorMember (O *object=nullptr)
 Constructor: Stores the object-pointer. More...
 
virtual ~FunctorMember ()
 
O * getObject () const
 Returns the object-pointer. More...
 
virtual voidgetRawObjectPointer () const override
 Returns the object-pointer. More...
 
virtual Functor::Type getType () const override
 Returns the type of the function: static or member. More...
 
virtual MultiType operator() (O *object, const MultiType &param1=MultiType::Null, const MultiType &param2=MultiType::Null, const MultiType &param3=MultiType::Null, const MultiType &param4=MultiType::Null, const MultiType &param5=MultiType::Null)=0
 Calls the function-pointer with up to five arguments and an object. In case of a static-function, the object can be nullptr. More...
 
virtual MultiType operator() (const MultiType &param1=MultiType::Null, const MultiType &param2=MultiType::Null, const MultiType &param3=MultiType::Null, const MultiType &param4=MultiType::Null, const MultiType &param5=MultiType::Null) override
 Calls the function-pointer with up to five arguments. In case of a member-function, the assigned object-pointer is used to call the function. More...
 
void setObject (O *object)
 Assigns an object-pointer to the functor which is used to execute a member-function. More...
 
virtual void setRawObjectPointer (void *object) override
 Assigns an object-pointer to the functor which is used to execute a member-function. More...
 
virtual void setSafeMode (bool bSafeMode) override
 Enables or disables the safe mode which causes the functor to change the object pointer to nullptr if the object is deleted (only member functors). More...
 
- Public Member Functions inherited from orxonox::Functor
virtual ~Functor ()=default
 
virtual FunctorPtr clone ()=0
 Creates a new instance of Functor with the same values like this (used instead of a copy-constructor) More...
 
virtual void evaluateArgument (unsigned int index, MultiType &argument) const =0
 Converts a given argument to the type of the parameter with given index (the first parameter has index 0). More...
 
virtual const std::type_info & getFullIdentifier () const =0
 Returns the full identifier of the function-pointer which is defined as typeid(F), where F is the type of the stored function-pointer. Used to compare functors. More...
 
virtual const std::type_info & getHeaderIdentifier () const =0
 Returns an identifier of the header of the function (doesn't include the function's class). Used to compare functors. More...
 
virtual const std::type_info & getHeaderIdentifier (unsigned int params) const =0
 Returns an identifier of the header of the function (doesn't include the function's class), but regards only the first params parameters. Used to compare functions if an Executor provides default-values for the other parameters. More...
 
virtual unsigned int getParamCount () const =0
 Returns the number of parameters of the function. More...
 
virtual std::string getTypenameParam (unsigned int index) const =0
 Returns the type-name of the parameter with given index (the first parameter has index 0). More...
 
virtual std::string getTypenameReturnvalue () const =0
 Returns the type-name of the return-value. More...
 
virtual bool hasReturnvalue () const =0
 Returns true if the function has a return-value. More...
 

Protected Attributes

functionPointer_
 The stored function-pointer. More...
 
- Protected Attributes inherited from orxonox::FunctorMember< O >
bool bSafeMode_
 If true, the functor is in safe mode and registers itself as listener at the object and changes the pointer to nullptr if the object is deleted. More...
 
O * object_
 The stored object-pointer, used to execute a member-function (or nullptr for static functions) More...
 

Additional Inherited Members

- Public Types inherited from orxonox::Functor
enum  Type { Type::Static, Type::Member }
 Defines the type of a function (static or member) More...
 
- Protected Member Functions inherited from orxonox::FunctorMember< O >
virtual void objectDeleted () override
 Will be called by Destroyable::~Destroyable() if the stored object is a Destroyable and deleted and the Functor is in safe mode. More...
 
void registerObject (Destroyable *object)
 Casts the object and registers as destruction listener if the object is a Destroyable. More...
 
void registerObject (void *object)
 
void unregisterObject (Destroyable *object)
 Casts the object and unregisters as destruction listener if the object is a Destroyable. More...
 
void unregisterObject (void *object)
 
- Protected Member Functions inherited from orxonox::DestructionListener
virtual ~DestructionListener ()
 
void registerAsDestructionListener (Destroyable *object)
 
void unregisterAsDestructionListener (Destroyable *object)
 

Detailed Description

template<class F, class O = void>
class orxonox::FunctorPointer< F, O >

FunctorPointer is a child class of FunctorMember and extends it with a function-pointer (or a function-object).

Parameters
FThe type of the function-pointer (or the function-object)
OThe type of the function's class (or void if it's a static function or a function-object)

The template FunctorPointer has an additional template parameter that defines the type of the function-pointer (or the function-object). This can be handy if you want to get or set the function-pointer (or the function-object). You can then use a static_cast to cast a Functor to FunctorPointer if you know the type of the function.

However FunctorPointer is not aware of the types of the different parameters or the return value.

Constructor & Destructor Documentation

template<class F, class O = void>
orxonox::FunctorPointer< F, O >::FunctorPointer ( functionPointer,
O *  object = nullptr 
)
inline

Constructor: Initializes the base class and stores the function-pointer.

Member Function Documentation

template<class F, class O = void>
F orxonox::FunctorPointer< F, O >::getFunction ( ) const
inline

Returns the function-pointer.

template<class F, class O = void>
void orxonox::FunctorPointer< F, O >::setFunction ( functionPointer)
inline

Changes the function-pointer.

Member Data Documentation

template<class F, class O = void>
F orxonox::FunctorPointer< F, O >::functionPointer_
protected

The stored function-pointer.


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