Orxonox  0.0.5 Codename: Arcturus
Namespaces | Typedefs
FunctorPtr.h File Reference

Typedefs and definitions of FunctorPtr, FunctorMemberPtr, FunctorStaticPtr, and FunctorPointerPtr. More...

#include "core/CorePrereqs.h"
#include <memory>

Go to the source code of this file.

Namespaces

 orxonox
 Die Wagnis Klasse hat die folgenden Aufgaben:
 

Typedefs

template<class T >
using orxonox::FunctorMemberPtr = std::shared_ptr< FunctorMember< T >>
 
template<class F , class T >
using orxonox::FunctorPointerPtr = std::shared_ptr< FunctorPointer< F, T >>
 
using orxonox::FunctorPtr = std::shared_ptr< Functor >
 
using orxonox::FunctorStaticPtr = std::shared_ptr< FunctorMember< void >>
 

Detailed Description

Typedefs and definitions of FunctorPtr, FunctorMemberPtr, FunctorStaticPtr, and FunctorPointerPtr.

Instances of orxonox::Functor are usually managed by an std::shared_ptr. This ensures that Functors will be destroyed after usage. To make things easier, there's a typedef that defines FunctorPtr as std::shared_ptr<Functor>.

Because there's not only orxonox::Functor, but also orxonox::FunctorStatic, and orxonox::FunctorMember, the shared pointers need to store them all and also reflect their hierarchy - FunctorStatic and FunctorMember should not be mixed, but both can be converted to Functor. This is achieved by using orxonox::SharedChildPtr.

Because it's not possible to use a typedef for a template, we have to define the helper class FunctorMemberPtr<T> that makes it easier to use FunctorMember. The same is also done for FunctorPointerPtr<T>, which can be converted to both, FunctorMemberPtr<T> as well as FunctorPtr.