34 #include "../System/exception.h"
35 #include "../System/sharedptr.h"
39 template <
typename P1,
typename P2,
typename P3>
47 virtual void invoke(P1 p1, P2 p2, P3 p3)
const = 0;
52 template <
typename P1,
typename P2,
typename P3>
61 void invoke(P1 p1, P2 p2, P3 p3)
const
71 template <
typename P1,
typename P2,
typename P3,
typename UserData>
81 void invoke(P1 p1, P2 p2, P3 p3)
const
93 template <
typename P1,
typename P2,
typename P3,
typename InstanceClass>
99 : instance(instance), member_func(member_func)
110 void (InstanceClass::*member_func)(P1, P2, P3);
115 template <
typename P1,
typename P2,
typename P3,
typename InstanceClass,
typename UserData>
121 : instance(instance), member_func(member_func), user_data(user_data)
132 void (InstanceClass::*member_func)(P1, P2, P3, UserData);
139 template <
class P1,
class P2,
class P3,
class Functor>
159 template <
typename P1,
typename P2,
typename P3>
182 template<
typename UserData>
183 CL_Callback_v3(
void (*
function)(P1, P2, P3, UserData),
const UserData &user_data)
188 template<
class InstanceClass>
189 CL_Callback_v3(InstanceClass *instance,
void (InstanceClass::*
function)(P1, P2, P3))
194 template<
class InstanceClass,
typename UserData>
195 CL_Callback_v3(InstanceClass *instance,
void (InstanceClass::*
function)(P1, P2, P3, UserData),
const UserData &user_data)
200 void set(
void (*
function)(P1, P2, P3))
205 template<
typename UserData>
206 void set(
void (*
function)(P1, P2, P3, UserData),
const UserData &user_data)
211 template<
class InstanceClass>
212 void set(InstanceClass *instance,
void (InstanceClass::*
function)(P1, P2, P3))
217 template<
class InstanceClass,
typename UserData>
218 void set(InstanceClass *instance,
void (InstanceClass::*
function)(P1, P2, P3, UserData),
const UserData &user_data)
225 impl = CL_SharedPtr< CL_Callback_Impl_v3<P1, P2, P3> >();
230 impl->invoke(p1, p2, p3);
239 CL_SharedPtr< CL_Callback_Impl_v3<P1, P2, P3> > impl;
245 template <
typename P1,
typename P2,
typename P3>
258 template<
class Functor>