34 #include "../api_core.h"
43 virtual void invoke() = 0;
52 : static_func(static_func) {
return; }
54 void (*static_func)();
59 template <
class UserData>
72 template <
class InstanceClass>
77 : instance(instance), member_func(member_func) {
return; }
80 void (InstanceClass::*member_func)();
85 template <
class InstanceClass,
class UserData>
90 : instance(instance), member_func(member_func), user_data(user_data) {
return; }
93 void (InstanceClass::*member_func)(UserData);
99 template <
class Functor>
104 : functor(functor) {
return; }
122 : impl(copy.impl) {
return; }
133 CL_SharedPtr<CL_SlotCallback> callback(
135 impl->connected_slots.push_back(callback);
139 template<
class UserData>
143 CL_SharedPtr<CL_SlotCallback> callback(
145 impl->connected_slots.push_back(callback);
149 template<
class InstanceClass>
153 CL_SharedPtr<CL_SlotCallback> callback(
155 impl->connected_slots.push_back(callback);
159 template<
class InstanceClass,
class UserData>
160 CL_Slot connect(InstanceClass *instance,
void (InstanceClass::*
function)(UserData),
const UserData &user_data)
163 CL_SharedPtr<CL_SlotCallback> callback(
165 impl->connected_slots.push_back(callback);
169 template<
class Functor>
173 CL_SharedPtr<CL_SlotCallback> callback(
175 impl->connected_slots.push_back(callback);
181 std::vector< CL_SharedPtr<CL_SlotCallback> > callbacks = impl->connected_slots;
182 std::vector< CL_SharedPtr<CL_SlotCallback> >::size_type i, size;
183 size = callbacks.size();
184 for (i = 0; i < size; i++)
185 if (callbacks[i]->valid && callbacks[i]->enabled)
197 std::vector< CL_SharedPtr<CL_SlotCallback> >::size_type i, size;
198 size = impl->connected_slots.size();
199 for (i = 0; i < size; i++)
201 if (!impl->connected_slots[i]->valid)
203 impl->connected_slots.erase(impl->connected_slots.begin()+i);
210 CL_SharedPtr<CL_Signal_Impl> impl;