43 for (std::set<Sender*>::iterator it = m_senders.begin();
44 it != m_senders.end(); ++it) {
45 (*it)->disconnectTrackable(
this);
50 m_senders.insert(sender);
54 m_senders.erase(sender);
59 std::set<Sender*> m_senders;
63 template <
class Function>
79 template <
class Arg0=
void,
class Arg1=
void,
class Arg2=
void,
class Arg3=
void,
class Arg4=
void>
84 virtual void fire(Arg0 arg0, Arg1 arg1, Arg2 arg2, Arg3 arg3, Arg4 arg4) = 0;
92 virtual void fire() = 0;
100 virtual void fire(Arg0 arg0) = 0;
103 template <
class Arg0,
class Arg1>
108 virtual void fire(Arg0 arg0, Arg1 arg1) = 0;
111 template <
class Arg0,
class Arg1,
class Arg2>
116 virtual void fire(Arg0 arg0, Arg1 arg1, Arg2 arg2) = 0;
119 template <
class Arg0,
class Arg1,
class Arg2,
class Arg3>
124 virtual void fire(Arg0 arg0, Arg1 arg1, Arg2 arg2, Arg3 arg3) = 0;
129 template <
class Receiver,
class Arg0=
void,
class Arg1=
void,
class Arg2=
void,
class Arg3=
void,
class Arg4=
void>
135 typedef void (Receiver::*
Function)(Arg0, Arg1, Arg2, Arg3, Arg4);
142 void fire(Arg0 arg0, Arg1 arg1, Arg2 arg2, Arg3 arg3, Arg4 arg4) {
147 template <
class Receiver>
148 class Slot<Receiver, void, void, void, void, void> :
public SlotBase<>,
165 template <
class Receiver,
class Arg0>
166 class Slot<Receiver, Arg0, void, void, void, void> :
public SlotBase<Arg0>,
185 template <
class Receiver,
class Arg0,
class Arg1>
186 class Slot<Receiver, Arg0, Arg1, void, void, void> :
public SlotBase<Arg0, Arg1>,
198 void fire(Arg0 arg0, Arg1 arg1) {
203 template <
class Receiver,
class Arg0,
class Arg1,
class Arg2>
204 class Slot<Receiver, Arg0, Arg1, Arg2, void, void> :
public SlotBase<Arg0, Arg1, Arg2>,
209 typedef void (Receiver::*
Function)(Arg0, Arg1, Arg2);
216 void fire(Arg0 arg0, Arg1 arg1, Arg2 arg2) {
221 template <
class Receiver,
class Arg0,
class Arg1,
class Arg2,
class Arg3>
222 class Slot<Receiver, Arg0, Arg1, Arg2, Arg3, void> :
public SlotBase<Arg0, Arg1, Arg2, Arg3>,
227 typedef void (Receiver::*
Function)(Arg0, Arg1, Arg2, Arg3);
234 void fire(Arg0 arg0, Arg1 arg1, Arg2 arg2, Arg3 arg3) {
243 template <
class Arg0=
void,
class Arg1=
void,
class Arg2=
void,
class Arg3=
void,
class Arg4=
void>
251 for (
typename SlotSet::const_iterator it = this->
m_slots.begin();
252 it != this->
m_slots.end(); ++it) {
253 Sl* s =
static_cast<Sl*
>(*it);
269 typename SlotSet::iterator it = this->
m_slots.begin();
270 typename SlotSet::iterator itEnd = this->
m_slots.end();
271 while (it != itEnd) {
272 Sl* s =
static_cast<Sl*
>(*it);
289 typedef std::set<SlotBase<Arg0, Arg1, Arg2, Arg3, Arg4>* >
SlotSet;
293 template <
class Arg0=
void,
class Arg1=
void,
class Arg2=
void,
class Arg3=
void,
class Arg4=
void>
298 template <
class Receiver>
299 void connect(Receiver* rec,
void (Receiver::*func)(Arg0, Arg1, Arg2, Arg3, Arg4)) {
303 void fire(Arg0 arg0, Arg1 arg1, Arg2 arg2, Arg3 arg3, Arg4 arg4) {
304 typename std::set<SlotBase<Arg0, Arg1, Arg2, Arg3, Arg4>* >::iterator it = this->
m_slots.begin();
305 while (it != this->
m_slots.end()) {
306 (*it++)->
fire(arg0, arg1, arg2, arg3, arg4);
317 template <
class Receiver>
318 void connect(Receiver* rec,
void (Receiver::*func)()) {
323 std::set<SlotBase<>* >::iterator it = this->
m_slots.begin();
324 while (it != this->
m_slots.end()) {
330 template <
class Arg0>
335 template <
class Receiver>
336 void connect(Receiver* rec,
void (Receiver::*func)(Arg0)) {
341 typename std::set<SlotBase<Arg0>* >::iterator it = this->
m_slots.begin();
342 while (it != this->
m_slots.end()) {
348 template <
class Arg0,
class Arg1>
353 template <
class Receiver>
354 void connect(Receiver* rec,
void (Receiver::*func)(Arg0, Arg1)) {
358 void fire(Arg0 arg0, Arg1 arg1) {
359 typename std::set<SlotBase<Arg0, Arg1>* >::iterator it = this->
m_slots.begin();
360 while (it != this->
m_slots.end()) {
361 (*it++)->
fire(arg0, arg1);
366 template <
class Arg0,
class Arg1,
class Arg2>
371 template <
class Receiver>
372 void connect(Receiver* rec,
void (Receiver::*func)(Arg0, Arg1, Arg2)) {
376 void fire(Arg0 arg0, Arg1 arg1, Arg2 arg2) {
377 typename std::set<SlotBase<Arg0, Arg1, Arg2>* >::iterator it = this->
m_slots.begin();
378 while (it != this->
m_slots.end()) {
379 (*it++)->
fire(arg0, arg1, arg2);
384 template <
class Arg0,
class Arg1,
class Arg2,
class Arg3>
389 template <
class Receiver>
390 void connect(Receiver* rec,
void (Receiver::*func)(Arg0, Arg1, Arg2, Arg3)) {
394 void fire(Arg0 arg0, Arg1 arg1, Arg2 arg2, Arg3 arg3) {
395 typename std::set<SlotBase<Arg0, Arg1, Arg2, Arg3>* >::iterator it = this->
m_slots.begin();
396 while (it != this->
m_slots.end()) {
397 (*it++)->
fire(arg0, arg1, arg2, arg3);
463 #endif // SIGNALSLOT_H