33 #include "signals_impl.h" 41 template <
class Param1>
45 virtual void invoke(Param1 param1) = 0;
49 template <
class Param1>
54 : static_func(static_func) {
return; }
55 void invoke(Param1 param1) { static_func(param1); }
56 void (*static_func)(Param1);
60 template <
class Param1,
class UserData>
65 : static_func(static_func), user_data(user_data) {
return; }
66 void invoke(Param1 param1) { static_func(param1, user_data); }
72 template <
class Param1,
class InstanceClass>
77 : instance(instance), member_func(member_func) {
return; }
78 void invoke(Param1 param1) { (instance->*member_func)(param1); }
80 void (InstanceClass::*member_func)(Param1);
84 template <
class Param1,
class InstanceClass,
class UserData>
89 : instance(instance), member_func(member_func), user_data(user_data) {
return; }
90 void invoke(Param1 param1) { (instance->*member_func)(param1, user_data); }
92 void (InstanceClass::*member_func)(Param1,
UserData);
97 template <
class Param1,
class Functor>
102 : functor(functor) {
return; }
103 void invoke(Param1 param1) { functor(param1); }
109 template <
class Param1>
120 : impl(copy.impl) {
return; }
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))
151 std::shared_ptr<SlotCallback> callback(
153 impl->connected_slots.push_back(callback);
154 return Slot(callback);
157 template<
class InstanceClass,
class UserData>
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);
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++)
195 std::vector< std::shared_ptr<SlotCallback> >::size_type i, size;
196 size = impl->connected_slots.size();
197 for (i = 0; i < size; i++)
199 if (!impl->connected_slots[i]->valid)
201 impl->connected_slots.erase(impl->connected_slots.begin()+i);
208 std::shared_ptr<Signal_Impl> impl;
Functor functor
Definition: signal_v1.h:104
(Internal ClanLib Class)
Definition: signal_v1.h:85
Signal_v1(const Signal_v1< Param1 > ©)
Definition: signal_v1.h:119
Slot connect(void(*function)(Param1, UserData), const UserData &user_data)
Definition: signal_v1.h:138
SlotCallback_v1_functor(const Functor &functor)
Definition: signal_v1.h:101
void invoke(Param1 param1)
Definition: signal_v1.h:90
Slot connect(InstanceClass *instance, void(InstanceClass::*function)(Param1))
Definition: signal_v1.h:148
Slot connect(InstanceClass *instance, void(InstanceClass::*function)(Param1, UserData), const UserData &user_data)
Definition: signal_v1.h:158
(Internal ClanLib Class)
Definition: signal_v1.h:98
Signal_v1()
Definition: signal_v1.h:116
bool valid
Definition: signals_impl.h:47
Slot connect_functor(const Functor &functor)
Definition: signal_v1.h:168
Definition: userdata.h:47
Signal_v1.
Definition: signal_v1.h:110
SlotCallback_v1_static_user(void(*static_func)(Param1, UserData), const UserData &user_data)
Definition: signal_v1.h:64
InstanceClass * instance
Definition: signal_v1.h:79
SlotCallback_v1_member_user(InstanceClass *instance, void(InstanceClass::*member_func)(Param1, UserData), const UserData &user_data)
Definition: signal_v1.h:88
(Internal ClanLib Class)
Definition: signal_v1.h:42
(Internal ClanLib Class)
Definition: signal_v1.h:73
virtual void invoke(Param1 param1)=0
bool enabled
Definition: signals_impl.h:49
(Internal ClanLib Class)
Definition: signal_v1.h:50
UserData user_data
Definition: signal_v1.h:93
void invoke(Param1 param1)
Definition: signal_v1.h:78
Slot.
Definition: slot.h:41
void invoke(Param1 param1)
Definition: signal_v1.h:66
(Internal ClanLib Class)
Definition: signals_impl.h:62
void invoke(Param1 param1) const
Definition: signal_v1.h:177
(Internal ClanLib Class)
Definition: signal_v1.h:61
UserData user_data
Definition: signal_v1.h:68
InstanceClass * instance
Definition: signal_v1.h:91
void invoke(Param1 param1)
Definition: signal_v1.h:103
Slot connect(void(*function)(Param1))
Definition: signal_v1.h:128
SlotCallback_v1_static(void(*static_func)(Param1))
Definition: signal_v1.h:53
(Internal ClanLib Class)
Definition: signals_impl.h:40
void invoke(Param1 param1)
Definition: signal_v1.h:55
SlotCallback_v1_member(InstanceClass *instance, void(InstanceClass::*member_func)(Param1))
Definition: signal_v1.h:76