34 #include "../System/exception.h"
35 #include "../System/sharedptr.h"
39 template <
typename RetVal>
47 virtual RetVal
invoke()
const = 0;
52 template <
typename RetVal>
71 template <
typename RetVal,
typename UserData>
93 template <
typename RetVal,
typename InstanceClass>
99 : instance(instance), member_func(member_func)
105 return (instance->*member_func)();
110 RetVal (InstanceClass::*member_func)();
115 template <
typename RetVal,
typename InstanceClass,
typename UserData>
121 : instance(instance), member_func(member_func), user_data(user_data)
127 return (instance->*member_func)(
user_data);
132 RetVal (InstanceClass::*member_func)(UserData);
139 template <
typename RetVal,
class Functor>
159 template <
typename RetVal>
182 template<
typename UserData>
188 template<
class InstanceClass>
194 template<
class InstanceClass,
typename UserData>
195 CL_Callback_0(InstanceClass *instance, RetVal (InstanceClass::*
function)(UserData),
const UserData &user_data)
200 void set(RetVal (*
function)())
205 template<
typename UserData>
206 void set(RetVal (*
function)(UserData),
const UserData &user_data)
211 template<
class InstanceClass>
212 void set(InstanceClass *instance, RetVal (InstanceClass::*
function)())
217 template<
class InstanceClass,
typename UserData>
218 void set(InstanceClass *instance, RetVal (InstanceClass::*
function)(UserData),
const UserData &user_data)
225 impl = CL_SharedPtr< CL_Callback_Impl_0<RetVal> >();
230 return impl->invoke();
239 CL_SharedPtr< CL_Callback_Impl_0<RetVal> > impl;
245 template <
typename RetVal>
258 template<
class Functor>