31 #ifndef GUM_SIGNALER0_H 32 #define GUM_SIGNALER0_H 41 #ifndef DOXYGEN_SHOULD_SKIP_THIS 47 virtual ~IConnector0(){};
49 virtual Listener* target()
const = 0;
50 virtual void notify(
const void*) = 0;
51 virtual IConnector0* clone() = 0;
52 virtual IConnector0* duplicate(Listener* target) = 0;
55 class BasicSignaler0 :
public ISignaler {
57 typedef std::vector< IConnector0* > ConnectorList;
61 BasicSignaler0(
const BasicSignaler0& s);
64 virtual ~BasicSignaler0();
68 void detach(Listener* target);
71 friend class Listener;
73 void _detachFromTarget(Listener* target);
75 void _duplicateTarget(
const Listener* oldtarget, Listener* newtarget);
77 ConnectorList _connectors;
80 std::function< bool(IConnector0* el) > __find_target(
const gum::Listener* l);
83 template <
class TargetClass >
84 class Connector0 :
public IConnector0 {
88 Connector0(TargetClass* target,
void (TargetClass::*action)(
const void*));
90 Connector0(
const Connector0< TargetClass >* src);
92 virtual ~Connector0();
94 virtual IConnector0* clone();
96 virtual IConnector0* duplicate(Listener* target);
98 virtual void notify(
const void* src);
100 virtual Listener* target()
const;
103 TargetClass* __target;
104 void (TargetClass::*__action)(
const void*);
109 #endif // DOXYGEN_SHOULD_SKIP_THIS 128 template <
class TargetClass >
129 void attach(TargetClass* target,
void (TargetClass::*action)(
const void*)) {
130 __sig__::Connector0< TargetClass >* conn =
131 new __sig__::Connector0< TargetClass >(target, action);
132 this->_connectors.push_back(conn);
133 target->attachSignal__(
this);
137 for (
const auto el : _connectors) {
146 #define GUM_EMIT0(signal) this->signal(this) 151 #ifndef GUM_NO_INLINE 153 #endif // GUM_NO_INLINE 155 #endif // GUM_SIGNALER0_H Copyright 2005-2019 Pierre-Henri WUILLEMIN et Christophe GONZALES (LIP6) {prenom.nom}_at_lip6.fr.
Copyright 2005-2019 Pierre-Henri WUILLEMIN et Christophe GONZALES (LIP6) {prenom.nom}_at_lip6.fr.
void attach(TargetClass *target, void(TargetClass::*action)(const void *))
Copyright 2005-2019 Pierre-Henri WUILLEMIN et Christophe GONZALES (LIP6) {prenom.nom}_at_lip6.fr.
Copyright 2005-2019 Pierre-Henri WUILLEMIN et Christophe GONZALES (LIP6) {prenom.nom}_at_lip6.fr.
Copyright 2005-2019 Pierre-Henri WUILLEMIN et Christophe GONZALES (LIP6) {prenom.nom}_at_lip6.fr.
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.