29 #ifndef GUM_SIGNALER0_H 30 #define GUM_SIGNALER0_H 39 #ifndef DOXYGEN_SHOULD_SKIP_THIS 45 virtual ~IConnector0(){};
47 virtual Listener* target()
const = 0;
48 virtual void notify(
const void*) = 0;
49 virtual IConnector0* clone() = 0;
50 virtual IConnector0* duplicate(Listener* target) = 0;
53 class BasicSignaler0 :
public ISignaler {
55 typedef std::vector< IConnector0* > ConnectorList;
59 BasicSignaler0(
const BasicSignaler0& s);
62 virtual ~BasicSignaler0();
66 void detach(Listener* target);
69 friend class Listener;
71 void _detachFromTarget(Listener* target);
73 void _duplicateTarget(
const Listener* oldtarget, Listener* newtarget);
75 ConnectorList _connectors;
78 std::function< bool(IConnector0* el) > __find_target(
const gum::Listener* l);
81 template <
class TargetClass >
82 class Connector0 :
public IConnector0 {
86 Connector0(TargetClass* target,
void (TargetClass::*action)(
const void*));
88 Connector0(
const Connector0< TargetClass >* src);
90 virtual ~Connector0();
92 virtual IConnector0* clone();
94 virtual IConnector0* duplicate(Listener* target);
96 virtual void notify(
const void* src);
98 virtual Listener* target()
const;
101 TargetClass* __target;
102 void (TargetClass::*__action)(
const void*);
107 #endif // DOXYGEN_SHOULD_SKIP_THIS 126 template <
class TargetClass >
127 void attach(TargetClass* target,
void (TargetClass::*action)(
const void*)) {
128 __sig__::Connector0< TargetClass >* conn =
129 new __sig__::Connector0< TargetClass >(target, action);
130 this->_connectors.push_back(conn);
131 target->attachSignal__(
this);
135 for (
const auto el : _connectors) {
144 #define GUM_EMIT0(signal) this->signal(this) 149 #ifndef GUM_NO_INLINE 151 #endif // GUM_NO_INLINE 153 #endif // GUM_SIGNALER0_H
void attach(TargetClass *target, void(TargetClass::*action)(const void *))
gum is the global namespace for all aGrUM entities
Generic class for manipulating lists.
class for signal with 0 args
Signaler0(const Signaler0 &s)
INLINE void operator()(const void *src)
Every class who would catch signal from signaler should derive from Listener.