39 template <
class Param1,
class Param2,
class Param3,
class Param4,
class Param5>
43 virtual void invoke(Param1 param1, Param2 param2, Param3 param3, Param4 param4, Param5 param5) = 0;
48 template <
class Param1,
class Param2,
class Param3,
class Param4,
class Param5>
54 void invoke(Param1 param1, Param2 param2, Param3 param3, Param4 param4, Param5 param5) {
static_func(param1, param2, param3, param4, param5); }
60 template <
class Param1,
class Param2,
class Param3,
class Param4,
class Param5,
class UserData>
66 void invoke(Param1 param1, Param2 param2, Param3 param3, Param4 param4, Param5 param5) {
static_func(param1, param2, param3, param4, param5,
user_data); }
67 void (*
static_func)(Param1, Param2, Param3, Param4, Param5, UserData);
73 template <
class Param1,
class Param2,
class Param3,
class Param4,
class Param5,
class InstanceClass>
78 : instance(instance), member_func(member_func) {
return; }
79 void invoke(Param1 param1, Param2 param2, Param3 param3, Param4 param4, Param5 param5) { (instance->*
member_func)(param1, param2, param3, param4, param5); }
81 void (InstanceClass::*member_func)(Param1, Param2, Param3, Param4, Param5);
86 template <
class Param1,
class Param2,
class Param3,
class Param4,
class Param5,
class InstanceClass,
class UserData>
91 : instance(instance), member_func(member_func), user_data(user_data) {
return; }
92 void invoke(Param1 param1, Param2 param2, Param3 param3, Param4 param4, Param5 param5) { (instance->*
member_func)(param1, param2, param3, param4, param5,
user_data); }
94 void (InstanceClass::*member_func)(Param1, Param2, Param3, Param4, Param5, UserData);
100 template <
class Param1,
class Param2,
class Param3,
class Param4,
class Param5,
class Functor>
105 : functor(functor) {
return; }
106 void invoke(Param1 param1, Param2 param2, Param3 param3, Param4 param4, Param5 param5) {
functor(param1, param2, param3, param4, param5); }
113 template <
class Param1,
class Param2,
class Param3,
class Param4,
class Param5>
124 : impl(copy.impl) {
return; }
135 CL_SharedPtr<CL_SlotCallback> callback(
137 impl->connected_slots.push_back(callback);
141 template<
class UserData>
142 CL_Slot connect(
void (*
function)(Param1, Param2, Param3, Param4, Param5, UserData),
const UserData &user_data)
145 CL_SharedPtr<CL_SlotCallback> callback(
147 impl->connected_slots.push_back(callback);
151 template<
class InstanceClass>
152 CL_Slot connect(InstanceClass *instance,
void (InstanceClass::*
function)(Param1, Param2, Param3, Param4, Param5))
155 CL_SharedPtr<CL_SlotCallback> callback(
157 impl->connected_slots.push_back(callback);
161 template<
class InstanceClass,
class UserData>
162 CL_Slot connect(InstanceClass *instance,
void (InstanceClass::*
function)(Param1, Param2, Param3, Param4, Param5, UserData),
const UserData &user_data)
165 CL_SharedPtr<CL_SlotCallback> callback(
167 impl->connected_slots.push_back(callback);
171 template<
class Functor>
175 CL_SharedPtr<CL_SlotCallback> callback(
177 impl->connected_slots.push_back(callback);
181 void invoke(Param1 param1, Param2 param2, Param3 param3, Param4 param4, Param5 param5)
const
183 std::vector< CL_SharedPtr<CL_SlotCallback> > callbacks = impl->connected_slots;
184 std::vector< CL_SharedPtr<CL_SlotCallback> >::size_type i, size;
185 size = callbacks.size();
186 for (i = 0; i < size; i++)
187 if (callbacks[i]->valid && callbacks[i]->enabled)
199 std::vector< CL_SharedPtr<CL_SlotCallback> >::size_type i, size;
200 size = impl->connected_slots.size();
201 for (i = 0; i < size; i++)
203 if (!impl->connected_slots[i]->valid)
205 impl->connected_slots.erase(impl->connected_slots.begin()+i);
212 CL_SharedPtr<CL_Signal_Impl> impl;