Nebula
Loading...
Searching...
No Matches
Util::Delegate< RETTYPE(ARGTYPES...)> Class Template Reference

#include <delegate.h>

Detailed Description

template<typename RETTYPE, typename ... ARGTYPES>
class Util::Delegate< RETTYPE(ARGTYPES...)>
See also
Util::Delegate

Public Member Functions

 Delegate ()
 constructor
 
 Delegate (Delegate< RETTYPE(ARGTYPES...)> const &rhs)
 copy constructor
 
 Delegate (Delegate< RETTYPE(ARGTYPES...)> &&rhs)
 move constructor
 
template<typename LAMBDA >
 Delegate (LAMBDA const &lambda)
 lambda constructor
 
void operator= (Delegate< RETTYPE(ARGTYPES...)> const &rhs)
 assignment operator
 
void operator= (Delegate< RETTYPE(ARGTYPES...)> &&rhs)
 move operator
 
bool operator== (std::nullptr_t)
 check if null
 
bool operator! ()
 check if null
 
template<typename LAMBDA >
Delegate< RETTYPE(ARGTYPES ...)> & operator= (LAMBDA const &instance)
 lambda assignment operator
 
RETTYPE operator() (ARGTYPES ... args) const
 invokation operator
 
template<class CLASS >
const CLASS * GetObject () const
 get object pointer
 
bool IsValid ()
 returns true if delegate is valid
 
template<typename LAMBDA >
Delegate< RETTYPE(ARGTYPES...)> & operator= (LAMBDA const &instance)
 
template<class CLASS , RETTYPE(CLASS::*)(ARGTYPES ...) METHOD>
Delegate< RETTYPE(ARGTYPES...)> FromMethod (CLASS *objPtr_)
 
template<RETTYPE(*)(ARGTYPES ...) FUNCTION>
Delegate< RETTYPE(ARGTYPES...)> FromFunction ()
 
template<typename LAMBDA >
Delegate< RETTYPE(ARGTYPES...)> FromLambda (const LAMBDA &instance)
 
template<typename LAMBDA >
RETTYPE LambdaStub (void *objPtr, ARGTYPES ... arg_)
 

Static Public Member Functions

template<class CLASS , RETTYPE(CLASS::*)(ARGTYPES ...) METHOD>
static Delegate< RETTYPE(ARGTYPES ...)> FromMethod (CLASS *objPtr)
 setup a new delegate from a method call
 
template<RETTYPE(*)(ARGTYPES ...) FUNCTION>
static Delegate< RETTYPE(ARGTYPES ...)> FromFunction ()
 setup a new delegate from a function call
 
template<typename LAMBDA >
static Delegate< RETTYPE(ARGTYPES ...)> FromLambda (const LAMBDA &instance)
 setup a new delegate from lambda
 

Private Types

using StubType = RETTYPE(*)(void*, ARGTYPES...)
 method pointer typedef
 

Private Member Functions

void Assign (void *obj, typename Delegate< RETTYPE(ARGTYPES...)>::StubType stub)
 assignment method
 

Static Private Member Functions

template<class CLASS , RETTYPE(CLASS::*)(ARGTYPES ...) METHOD>
static RETTYPE MethodStub (void *objPtr, ARGTYPES ... args)
 static method-call stub
 
template<RETTYPE(*)(ARGTYPES ...) FUNCTION>
static RETTYPE FunctionStub (void *dummyPtr, ARGTYPES ... args)
 static function-call stub
 
template<typename LAMBDA >
static RETTYPE LambdaStub (void *objPtr, ARGTYPES... arg)
 static lambda-call stub
 

Private Attributes

void * objPtr
 
StubType stubPtr
 

Member Typedef Documentation

◆ StubType

template<typename RETTYPE , typename ... ARGTYPES>
using Util::Delegate< RETTYPE(ARGTYPES...)>::StubType = RETTYPE(*)(void*, ARGTYPES...)
private

method pointer typedef

Constructor & Destructor Documentation

◆ Delegate() [1/4]

template<typename RETTYPE , typename ... ARGTYPES>
Util::Delegate< RETTYPE(ARGTYPES...)>::Delegate ( )

constructor

◆ Delegate() [2/4]

template<typename RETTYPE , typename ... ARGTYPES>
Util::Delegate< RETTYPE(ARGTYPES...)>::Delegate ( Delegate< RETTYPE(ARGTYPES...)> const & rhs)

copy constructor

◆ Delegate() [3/4]

template<typename RETTYPE , typename ... ARGTYPES>
Util::Delegate< RETTYPE(ARGTYPES...)>::Delegate ( Delegate< RETTYPE(ARGTYPES...)> && rhs)

move constructor

◆ Delegate() [4/4]

template<typename RETTYPE , typename ... ARGTYPES>
template<typename LAMBDA >
Util::Delegate< RETTYPE(ARGTYPES...)>::Delegate ( LAMBDA const & lambda)

lambda constructor

Member Function Documentation

◆ Assign()

template<typename RETTYPE , typename ... ARGTYPES>
void Util::Delegate< RETTYPE(ARGTYPES...)>::Assign ( void * obj,
typename Delegate< RETTYPE(ARGTYPES...)>::StubType stub )
private

assignment method

◆ FromFunction() [1/2]

template<typename RETTYPE , typename ... ARGTYPES>
template<RETTYPE(*)(ARGTYPES ...) FUNCTION>
static Delegate< RETTYPE(ARGTYPES ...)> Util::Delegate< RETTYPE(ARGTYPES...)>::FromFunction ( )
static

setup a new delegate from a function call

◆ FromFunction() [2/2]

template<typename RETTYPE , typename ... ARGTYPES>
template<RETTYPE(*)(ARGTYPES ...) FUNCTION>
Delegate< RETTYPE(ARGTYPES...)> Util::Delegate< RETTYPE(ARGTYPES...)>::FromFunction ( )

◆ FromLambda() [1/2]

template<typename RETTYPE , typename ... ARGTYPES>
template<typename LAMBDA >
static Delegate< RETTYPE(ARGTYPES ...)> Util::Delegate< RETTYPE(ARGTYPES...)>::FromLambda ( const LAMBDA & instance)
static

setup a new delegate from lambda

◆ FromLambda() [2/2]

template<typename RETTYPE , typename ... ARGTYPES>
template<typename LAMBDA >
Delegate< RETTYPE(ARGTYPES...)> Util::Delegate< RETTYPE(ARGTYPES...)>::FromLambda ( const LAMBDA & instance)

◆ FromMethod() [1/2]

template<typename RETTYPE , typename ... ARGTYPES>
template<class CLASS , RETTYPE(CLASS::*)(ARGTYPES ...) METHOD>
static Delegate< RETTYPE(ARGTYPES ...)> Util::Delegate< RETTYPE(ARGTYPES...)>::FromMethod ( CLASS * objPtr)
static

setup a new delegate from a method call

◆ FromMethod() [2/2]

template<typename RETTYPE , typename ... ARGTYPES>
template<class CLASS , RETTYPE(CLASS::*)(ARGTYPES ...) METHOD>
Delegate< RETTYPE(ARGTYPES...)> Util::Delegate< RETTYPE(ARGTYPES...)>::FromMethod ( CLASS * objPtr_)

◆ FunctionStub()

template<typename RETTYPE , typename ... ARGTYPES>
template<RETTYPE(*)(ARGTYPES ...) FUNCTION>
RETTYPE Util::Delegate< RETTYPE(ARGTYPES...)>::FunctionStub ( void * dummyPtr,
ARGTYPES ... args )
staticprivate

static function-call stub

◆ GetObject()

template<typename RETTYPE , typename ... ARGTYPES>
template<class CLASS >
const CLASS * Util::Delegate< RETTYPE(ARGTYPES...)>::GetObject ( ) const
inline

get object pointer

◆ IsValid()

template<typename RETTYPE , typename ... ARGTYPES>
bool Util::Delegate< RETTYPE(ARGTYPES...)>::IsValid ( )

returns true if delegate is valid

◆ LambdaStub() [1/2]

template<typename RETTYPE , typename ... ARGTYPES>
template<typename LAMBDA >
RETTYPE Util::Delegate< RETTYPE(ARGTYPES...)>::LambdaStub ( void * objPtr,
ARGTYPES ... arg_ )

◆ LambdaStub() [2/2]

template<typename RETTYPE , typename ... ARGTYPES>
template<typename LAMBDA >
static RETTYPE Util::Delegate< RETTYPE(ARGTYPES...)>::LambdaStub ( void * objPtr,
ARGTYPES... arg )
staticprivate

static lambda-call stub

◆ MethodStub()

template<typename RETTYPE , typename ... ARGTYPES>
template<class CLASS , RETTYPE(CLASS::*)(ARGTYPES ...) METHOD>
RETTYPE Util::Delegate< RETTYPE(ARGTYPES...)>::MethodStub ( void * objPtr,
ARGTYPES ... args )
staticprivate

static method-call stub

◆ operator!()

template<typename RETTYPE , typename ... ARGTYPES>
bool Util::Delegate< RETTYPE(ARGTYPES...)>::operator! ( )

check if null

◆ operator()()

template<typename RETTYPE , typename ... ARGTYPES>
RETTYPE Util::Delegate< RETTYPE(ARGTYPES...)>::operator() ( ARGTYPES ... args) const

invokation operator

◆ operator=() [1/4]

template<typename RETTYPE , typename ... ARGTYPES>
void Util::Delegate< RETTYPE(ARGTYPES...)>::operator= ( Delegate< RETTYPE(ARGTYPES...)> && rhs)

move operator

◆ operator=() [2/4]

template<typename RETTYPE , typename ... ARGTYPES>
void Util::Delegate< RETTYPE(ARGTYPES...)>::operator= ( Delegate< RETTYPE(ARGTYPES...)> const & rhs)

assignment operator

◆ operator=() [3/4]

template<typename RETTYPE , typename ... ARGTYPES>
template<typename LAMBDA >
Delegate< RETTYPE(ARGTYPES ...)> & Util::Delegate< RETTYPE(ARGTYPES...)>::operator= ( LAMBDA const & instance)

lambda assignment operator

◆ operator=() [4/4]

template<typename RETTYPE , typename ... ARGTYPES>
template<typename LAMBDA >
Delegate< RETTYPE(ARGTYPES...)> & Util::Delegate< RETTYPE(ARGTYPES...)>::operator= ( LAMBDA const & instance)

◆ operator==()

template<typename RETTYPE , typename ... ARGTYPES>
bool Util::Delegate< RETTYPE(ARGTYPES...)>::operator== ( std::nullptr_t )

check if null

Member Data Documentation

◆ objPtr

template<typename RETTYPE , typename ... ARGTYPES>
void* Util::Delegate< RETTYPE(ARGTYPES...)>::objPtr
private

◆ stubPtr

template<typename RETTYPE , typename ... ARGTYPES>
StubType Util::Delegate< RETTYPE(ARGTYPES...)>::stubPtr
private

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