61 template <
typename Ret,
typename T,
typename Method,
typename... Params>
class MethodCapture;
67 template <
typename Ret,
typename... Params>
88 template <
typename T,
typename Method>
90 : myFunctionCapture(new
MethodCapture<Ret, T, Method, Params...>(object, method))
95 Callback(std::function<Ret(Params...)>& stdFunc)
104 if (orig.myFunctionCapture)
106 myFunctionCapture = orig.myFunctionCapture->clone();
110 myFunctionCapture = 0;
113 myType = orig.myType;
121 if (orig.myFunctionCapture)
123 myFunctionCapture = orig.myFunctionCapture->clone();
127 myFunctionCapture = 0;
130 myType = orig.myType;
140 bool isValid() {
return myFunctionCapture != 0; }
145 return myFunctionCapture->invoke(params...);
151 if (myType != rhs.myType)
156 return (*myFunctionCapture) == (*(rhs.myFunctionCapture));
162 return !(*
this == rhs);
171 template <
typename Ret,
typename... Params>
172 class AbstractFunctionCapture
175 virtual Ret
invoke(Params... params)
const = 0;
176 virtual AbstractFunctionCapture*
clone()
const = 0;
178 virtual bool operator==(
const AbstractFunctionCapture<Ret, Params...>& rhs)
const = 0;
182 return !(*
this == rhs);
189 template <
typename Ret,
typename... Params>
190 class StaticFunctionCapture :
public AbstractFunctionCapture<Ret, Params...>
236 template <
typename Ret,
typename T,
typename Method,
typename... Params>
237 class MethodCapture :
public AbstractFunctionCapture<Ret, Params...>
274 T *obj =
static_cast<T *
>(
myObject);
288 template <
typename Ret,
typename... Params>
289 class StdFunctionCapture :
public AbstractFunctionCapture<Ret, Params...>
328 return *(
long*)(
char*)(&
myFunc) == *(
long*)(
char*)(&rhsp->myFunc);
std::function callback is used to bind std::functions, which are typically lambdas The return type an...
Definition: callback.h:62
virtual Ret invoke(Params...params) const =0
bool isValid()
returns if this callback object points to valid function
Definition: callback.h:140
Member function callback is used to bind class member functions The return type, single parameter...
Definition: callback.h:61
virtual bool operator==(const AbstractFunctionCapture< Ret, Params...> &rhs) const =0
std::function< Ret(Params...)> myFunc
Definition: callback.h:292
StaticFunctionCapture(const StaticFunctionCapture &orig)
Definition: callback.h:200
MethodCapture & operator=(const MethodCapture &orig)
Definition: callback.h:261
bool operator!=(const Callback &rhs) const
not equals operator
Definition: callback.h:160
int myType
Definition: callback.h:72
Abstract Callback template the base abstract callback class that is used internally to the delegate...
Definition: callback.h:59
Callback()
default empty constructor
Definition: callback.h:76
StdFunctionCapture * clone() const
Definition: callback.h:304
Callback template for binding static or member functions for callback at later time The return type a...
Definition: callback.h:66
bool operator==(const Callback &rhs) const
equality operator that checks internal function pointers
Definition: callback.h:149
Callback(Ret(*func)(Params...))
constructor using a static function
Definition: callback.h:82
StaticFunctionCapture * clone() const
Definition: callback.h:215
void * myObject
Definition: callback.h:240
StdFunctionCapture & operator=(const StdFunctionCapture &orig)
Definition: callback.h:310
StaticFunctionCapture & operator=(const StaticFunctionCapture &orig)
Definition: callback.h:205
Callback(T *object, Method method)
constructor using a class member functions
Definition: callback.h:89
Ret invoke(Params...params) const
Definition: callback.h:320
Callback(const Callback &orig)
copy constructor
Definition: callback.h:102
StaticFunctionCapture(Ret(*func)(Params...params))
Definition: callback.h:196
~Callback(void)
destructor
Definition: callback.h:137
bool operator==(const AbstractFunctionCapture< Ret, Params...> &rhs) const
Definition: callback.h:325
Method myMethod
Definition: callback.h:241
virtual bool operator!=(const AbstractFunctionCapture< Ret, Params...> &rhs) const
Definition: callback.h:180
Ret invoke(Params...params) const
Definition: callback.h:272
bool operator==(const AbstractFunctionCapture< Ret, Params...> &rhs) const
Definition: callback.h:226
Ret(* myFunction)(Params...params)
Definition: callback.h:193
MethodCapture(void *object, Method method)
Definition: callback.h:244
virtual AbstractFunctionCapture * clone() const =0
Ret operator()(Params...params) const
execute operator
Definition: callback.h:143
Static member function (or global function) callback is used to bind global or static class functions...
Definition: callback.h:60
bool operator==(const AbstractFunctionCapture< Ret, Params...> &rhs) const
Definition: callback.h:278
MethodCapture * clone() const
Definition: callback.h:255
Ret invoke(Params...params) const
Definition: callback.h:221
Callback & operator=(const Callback &orig)
assignment operator
Definition: callback.h:117
MethodCapture(const MethodCapture &orig)
Definition: callback.h:249
AbstractFunctionCapture< Ret, Params...> * myFunctionCapture
Definition: callback.h:71