33 #include "signals_impl.h"
41 template <
class Param1,
class Param2,
class Param3,
class Param4,
class Param5,
class Param6>
45 virtual void invoke(Param1 param1, Param2 param2, Param3 param3, Param4 param4, Param5 param5, Param6 param6) = 0;
49 template <
class Param1,
class Param2,
class Param3,
class Param4,
class Param5,
class Param6>
55 void invoke(Param1 param1, Param2 param2, Param3 param3, Param4 param4, Param5 param5, Param6 param6) {
static_func(param1, param2, param3, param4, param5, param6); }
56 void (*
static_func)(Param1, Param2, Param3, Param4, Param5, Param6);
60 template <
class Param1,
class Param2,
class Param3,
class Param4,
class Param5,
class Param6,
class UserData>
66 void invoke(Param1 param1, Param2 param2, Param3 param3, Param4 param4, Param5 param5, Param6 param6) {
static_func(param1, param2, param3, param4, param5, param6,
user_data); }
72 template <
class Param1,
class Param2,
class Param3,
class Param4,
class Param5,
class Param6,
class InstanceClass>
77 : instance(instance), member_func(member_func) {
return; }
78 void invoke(Param1 param1, Param2 param2, Param3 param3, Param4 param4, Param5 param5, Param6 param6) { (instance->*
member_func)(param1, param2, param3, param4, param5, param6); }
80 void (InstanceClass::*member_func)(Param1, Param2, Param3, Param4, Param5, Param6);
84 template <
class Param1,
class Param2,
class Param3,
class Param4,
class Param5,
class Param6,
class InstanceClass,
class UserData>
89 : instance(instance), member_func(member_func), user_data(user_data) {
return; }
90 void invoke(Param1 param1, Param2 param2, Param3 param3, Param4 param4, Param5 param5, Param6 param6) { (instance->*
member_func)(param1, param2, param3, param4, param5, param6,
user_data); }
92 void (InstanceClass::*member_func)(Param1, Param2, Param3, Param4, Param5, Param6,
UserData);
97 template <
class Param1,
class Param2,
class Param3,
class Param4,
class Param5,
class Param6,
class Functor>
102 : functor(functor) {
return; }
103 void invoke(Param1 param1, Param2 param2, Param3 param3, Param4 param4, Param5 param5, Param6 param6) {
functor(param1, param2, param3, param4, param5, param6); }
109 template <
class Param1,
class Param2,
class Param3,
class Param4,
class Param5,
class Param6>
120 : impl(copy.impl) {
return; }
128 Slot connect(
void (*
function)(Param1, Param2, Param3, Param4, Param5, Param6))
131 std::shared_ptr<SlotCallback> callback(
133 impl->connected_slots.push_back(callback);
134 return Slot(callback);
137 template<
class UserData>
141 std::shared_ptr<SlotCallback> callback(
143 impl->connected_slots.push_back(callback);
144 return Slot(callback);
147 template<
class InstanceClass>
148 Slot connect(InstanceClass *instance,
void (InstanceClass::*
function)(Param1, Param2, Param3, Param4, Param5, Param6))
151 std::shared_ptr<SlotCallback> callback(
153 impl->connected_slots.push_back(callback);
154 return Slot(callback);
157 template<
class InstanceClass,
class UserData>
158 Slot connect(InstanceClass *instance,
void (InstanceClass::*
function)(Param1, Param2, Param3, Param4, Param5, Param6,
UserData),
const UserData &user_data)
161 std::shared_ptr<SlotCallback> callback(
163 impl->connected_slots.push_back(callback);
164 return Slot(callback);
167 template<
class Functor>
171 std::shared_ptr<SlotCallback> callback(
173 impl->connected_slots.push_back(callback);
174 return Slot(callback);
177 void invoke(Param1 param1, Param2 param2, Param3 param3, Param4 param4, Param5 param5, Param6 param6)
const
179 std::vector< std::shared_ptr<SlotCallback> > callbacks = impl->connected_slots;
180 std::vector< std::shared_ptr<SlotCallback> >::size_type i, size;
181 size = callbacks.size();
182 for (i = 0; i < size; i++)
183 if (callbacks[i]->valid && callbacks[i]->enabled)
184 ((
SlotCallback_v6<Param1, Param2, Param3, Param4, Param5, Param6> *) callbacks[i].
get())->
invoke(param1, param2, param3, param4, param5, param6);
194 std::vector< std::shared_ptr<SlotCallback> >::size_type i, size;
195 size = impl->connected_slots.size();
196 for (i = 0; i < size; i++)
198 if (!impl->connected_slots[i]->valid)
200 impl->connected_slots.erase(impl->connected_slots.begin()+i);
207 std::shared_ptr<Signal_Impl> impl;
Signal_v6.
Definition: signal_v6.h:110
(Internal ClanLib Class)
Definition: signal_v6.h:85
Slot connect(InstanceClass *instance, void(InstanceClass::*function)(Param1, Param2, Param3, Param4, Param5, Param6))
Definition: signal_v6.h:148
InstanceClass * instance
Definition: signal_v6.h:91
void invoke(Param1 param1, Param2 param2, Param3 param3, Param4 param4, Param5 param5, Param6 param6)
Definition: signal_v6.h:90
SlotCallback_v6_member_user(InstanceClass *instance, void(InstanceClass::*member_func)(Param1, Param2, Param3, Param4, Param5, Param6, UserData), const UserData &user_data)
Definition: signal_v6.h:88
InstanceClass * instance
Definition: signal_v6.h:79
SlotCallback_v6_member(InstanceClass *instance, void(InstanceClass::*member_func)(Param1, Param2, Param3, Param4, Param5, Param6))
Definition: signal_v6.h:76
SlotCallback_v6_static_user(void(*static_func)(Param1, Param2, Param3, Param4, Param5, Param6, UserData), const UserData &user_data)
Definition: signal_v6.h:64
void invoke(Param1 param1, Param2 param2, Param3 param3, Param4 param4, Param5 param5, Param6 param6)
Definition: signal_v6.h:55
SlotCallback_v6_functor(const Functor &functor)
Definition: signal_v6.h:101
Slot connect(void(*function)(Param1, Param2, Param3, Param4, Param5, Param6))
Definition: signal_v6.h:128
SlotCallback_v6_static(void(*static_func)(Param1, Param2, Param3, Param4, Param5, Param6))
Definition: signal_v6.h:53
Slot connect_functor(const Functor &functor)
Definition: signal_v6.h:168
(Internal ClanLib Class)
Definition: signal_v6.h:98
Definition: userdata.h:47
void(InstanceClass::* member_func)(Param1, Param2, Param3, Param4, Param5, Param6, UserData)
Definition: signal_v6.h:92
Slot connect(InstanceClass *instance, void(InstanceClass::*function)(Param1, Param2, Param3, Param4, Param5, Param6, UserData), const UserData &user_data)
Definition: signal_v6.h:158
UserData user_data
Definition: signal_v6.h:93
(Internal ClanLib Class)
Definition: signal_v6.h:42
void(InstanceClass::* member_func)(Param1, Param2, Param3, Param4, Param5, Param6)
Definition: signal_v6.h:80
(Internal ClanLib Class)
Definition: signal_v6.h:73
void(* static_func)(Param1, Param2, Param3, Param4, Param5, Param6, UserData)
Definition: signal_v6.h:67
(Internal ClanLib Class)
Definition: signal_v6.h:50
Slot.
Definition: slot.h:41
void invoke(Param1 param1, Param2 param2, Param3 param3, Param4 param4, Param5 param5, Param6 param6)
Definition: signal_v6.h:78
(Internal ClanLib Class)
Definition: signals_impl.h:62
Signal_v6()
Definition: signal_v6.h:116
Slot connect(void(*function)(Param1, Param2, Param3, Param4, Param5, Param6, UserData), const UserData &user_data)
Definition: signal_v6.h:138
(Internal ClanLib Class)
Definition: signal_v6.h:61
void invoke(Param1 param1, Param2 param2, Param3 param3, Param4 param4, Param5 param5, Param6 param6) const
Definition: signal_v6.h:177
Signal_v6(const Signal_v6< Param1, Param2, Param3, Param4, Param5, Param6 > ©)
Definition: signal_v6.h:119
UserData user_data
Definition: signal_v6.h:68
(Internal ClanLib Class)
Definition: signals_impl.h:40
virtual void invoke(Param1 param1, Param2 param2, Param3 param3, Param4 param4, Param5 param5, Param6 param6)=0
void invoke(Param1 param1, Param2 param2, Param3 param3, Param4 param4, Param5 param5, Param6 param6)
Definition: signal_v6.h:66
void(* static_func)(Param1, Param2, Param3, Param4, Param5, Param6)
Definition: signal_v6.h:56
void invoke(Param1 param1, Param2 param2, Param3 param3, Param4 param4, Param5 param5, Param6 param6)
Definition: signal_v6.h:103
Functor functor
Definition: signal_v6.h:104