32 #include "../System/exception.h" 41 template <
typename RetVal,
typename P1,
typename P2,
typename P3,
typename P4>
49 virtual RetVal
invoke(P1 p1, P2 p2, P3 p3, P4 p4)
const = 0;
53 template <
typename RetVal,
typename P1,
typename P2,
typename P3,
typename P4>
58 : static_func(static_func)
62 RetVal
invoke(P1 p1, P2 p2, P3 p3, P4 p4)
const 64 return static_func(p1, p2, p3, p4);
67 RetVal (*static_func)(P1, P2, P3, P4);
71 template <
typename RetVal,
typename P1,
typename P2,
typename P3,
typename P4,
typename UserData>
77 : static_func(static_func), user_data(user_data)
81 RetVal
invoke(P1 p1, P2 p2, P3 p3, P4 p4)
const 83 return static_func(p1, p2, p3, p4, user_data);
86 RetVal (*static_func)(P1, P2, P3, P4,
UserData);
92 template <
typename RetVal,
typename P1,
typename P2,
typename P3,
typename P4,
typename InstanceClass>
97 RetVal (InstanceClass::*member_func)(P1, P2, P3, P4))
98 : instance(instance), member_func(member_func)
102 RetVal
invoke(P1 p1, P2 p2, P3 p3, P4 p4)
const 104 return (instance->*member_func)(p1, p2, p3, p4);
109 RetVal (InstanceClass::*member_func)(P1, P2, P3, P4);
113 template <
typename RetVal,
typename P1,
typename P2,
typename P3,
typename P4,
typename InstanceClass,
typename UserData>
118 RetVal (InstanceClass::*member_func)(P1, P2, P3, P4,
UserData),
const UserData &user_data)
119 : instance(instance), member_func(member_func), user_data(user_data)
123 RetVal
invoke(P1 p1, P2 p2, P3 p3, P4 p4)
const 125 return (instance->*member_func)(p1, p2, p3, p4, user_data);
130 RetVal (InstanceClass::*member_func)(P1, P2, P3, P4,
UserData);
136 template <
typename RetVal,
class P1,
class P2,
class P3,
class P4,
class Functor>
145 RetVal
invoke(P1 p1, P2 p2, P3 p3, P4 p4)
const 147 return functor(p1, p2, p3, p4);
155 template <
typename RetVal,
typename P1,
typename P2,
typename P3,
typename P4>
178 template<
typename UserData>
184 template<
class InstanceClass>
185 Callback_4(InstanceClass *instance, RetVal (InstanceClass::*
function)(P1, P2, P3, P4))
190 template<
class InstanceClass,
typename UserData>
196 void set(RetVal (*
function)(P1, P2, P3, P4))
201 template<
typename UserData>
204 impl = std::shared_ptr< Callback_Impl_4<RetVal, P1, P2, P3, P4> >(
new Callback_Impl_4_static_user<RetVal, P1, P2, P3, P4, UserData>(
function, user_data));
207 template<
class InstanceClass>
208 void set(InstanceClass *instance, RetVal (InstanceClass::*
function)(P1, P2, P3, P4))
210 impl = std::shared_ptr< Callback_Impl_4<RetVal, P1, P2, P3, P4> >(
new Callback_Impl_4_member<RetVal, P1, P2, P3, P4, InstanceClass>(instance,
function));
213 template<
class InstanceClass,
typename UserData>
214 void set(InstanceClass *instance, RetVal (InstanceClass::*
function)(P1, P2, P3, P4,
UserData),
const UserData &user_data)
216 impl = std::shared_ptr< Callback_Impl_4<RetVal, P1, P2, P3, P4> >(
new Callback_Impl_4_member_user<RetVal, P1, P2, P3, P4, InstanceClass, UserData>(instance,
function, user_data));
221 impl = std::shared_ptr< Callback_Impl_4<RetVal, P1, P2, P3, P4> >();
224 RetVal
invoke(P1 p1, P2 p2, P3 p3, P4 p4)
const 226 return impl->invoke(p1, p2, p3, p4);
235 std::shared_ptr< Callback_Impl_4<RetVal, P1, P2, P3, P4> > impl;
240 template <
typename RetVal,
typename P1,
typename P2,
typename P3,
typename P4>
253 template<
class Functor>
virtual RetVal invoke(P1 p1, P2 p2, P3 p3, P4 p4) const =0
Callback_Impl_4_member(InstanceClass *instance, RetVal(InstanceClass::*member_func)(P1, P2, P3, P4))
Definition: callback_4.h:96
(Internal ClanLib Class)
Definition: callback_4.h:93
Callback_4_functor(const Callback_4_functor ©)
Definition: callback_4.h:248
Callback_4(InstanceClass *instance, RetVal(InstanceClass::*function)(P1, P2, P3, P4))
Definition: callback_4.h:185
RetVal invoke(P1 p1, P2 p2, P3 p3, P4 p4) const
Definition: callback_4.h:224
(Internal ClanLib Class)
Definition: callback_4.h:72
UserData user_data
Definition: callback_4.h:88
RetVal invoke(P1 p1, P2 p2, P3 p3, P4 p4) const
Definition: callback_4.h:102
(Internal ClanLib Class)
Definition: callback_4.h:114
Definition: userdata.h:47
InstanceClass * instance
Definition: callback_4.h:128
RetVal invoke(P1 p1, P2 p2, P3 p3, P4 p4) const
Definition: callback_4.h:62
(Internal ClanLib Class)
Definition: callback_4.h:42
void clear()
Definition: callback_4.h:219
virtual ~Callback_Impl_4()
Definition: callback_4.h:45
RetVal invoke(P1 p1, P2 p2, P3 p3, P4 p4) const
Definition: callback_4.h:145
Callback_4_functor(Functor functor)
Definition: callback_4.h:254
Functor functor
Definition: callback_4.h:150
Callback_4(InstanceClass *instance, RetVal(InstanceClass::*function)(P1, P2, P3, P4, UserData), const UserData &user_data)
Definition: callback_4.h:191
Callback_4(RetVal(*function)(P1, P2, P3, P4, UserData), const UserData &user_data)
Definition: callback_4.h:179
Callback_4_functor()
Definition: callback_4.h:244
Callback_4_functor.
Definition: callback_4.h:241
Callback_Impl_4_member_user(InstanceClass *instance, RetVal(InstanceClass::*member_func)(P1, P2, P3, P4, UserData), const UserData &user_data)
Definition: callback_4.h:117
UserData user_data
Definition: callback_4.h:132
Callback_Impl_4_static_user(RetVal(*static_func)(P1, P2, P3, P4, UserData), const UserData &user_data)
Definition: callback_4.h:75
(Internal ClanLib Class)
Definition: callback_4.h:54
(Internal ClanLib Class)
Definition: callback_4.h:137
bool is_null() const
Definition: callback_4.h:229
Callback_4(RetVal(*function)(P1, P2, P3, P4))
Definition: callback_4.h:173
Callback_Impl_4_functor(Functor functor)
Definition: callback_4.h:140
RetVal invoke(P1 p1, P2 p2, P3 p3, P4 p4) const
Definition: callback_4.h:81
Callback_4()
Definition: callback_4.h:159
RetVal invoke(P1 p1, P2 p2, P3 p3, P4 p4) const
Definition: callback_4.h:123
Callback_4.
Definition: callback_4.h:156
Callback_4(Callback_Impl_4< RetVal, P1, P2, P3, P4 > *impl)
Definition: callback_4.h:168
Callback_4(const Callback_4 ©)
Definition: callback_4.h:163
InstanceClass * instance
Definition: callback_4.h:107
Callback_Impl_4_static(RetVal(*static_func)(P1, P2, P3, P4))
Definition: callback_4.h:57