25 class ModuleEventListener;
26 class ModuleEventProvider;
58 prov.SetCaptureHook(
this);
74 subscribers.insert(subscriber);
75 OnSubscribe(subscriber);
83 subscribers.erase(subscriber);
84 OnUnsubscribe(subscriber);
88 void OnCapture() CXX11_OVERRIDE
98 virtual void OnSubscribe(ModuleEventListener* subscriber) { }
103 virtual void OnUnsubscribe(ModuleEventListener* subscriber) { }
115 SubscriberList subscribers;
127 const unsigned int eventpriority;
131 void OnCapture() CXX11_OVERRIDE
133 prov->Subscribe(
this);
137 static const unsigned int DefaultPriority = 100;
146 , eventpriority(eventprio)
151 ModuleEventListener::OnCapture();
157 prov->Unsubscribe(
this);
178 return std::less<ModuleEventListener*>()(lhs, rhs);
186 #define FOREACH_MOD_CUSTOM(prov, listenerclass, func, params) do { \
187 if (!(prov).GetModule() || !(prov).GetModule()->dying) \
189 const ::Events::ModuleEventProvider::SubscriberList& _handlers = (prov).GetSubscribers(); \
190 for (::Events::ModuleEventProvider::SubscriberList::const_iterator _i = _handlers.begin(); _i != _handlers.end(); ++_i) \
192 listenerclass* _t = static_cast<listenerclass*>(*_i); \
193 const Module* _m = _t->GetModule(); \
194 if (_m && !_m->dying) \
207 #define FIRST_MOD_RESULT_CUSTOM(prov, listenerclass, func, result, params) do { \
208 result = MOD_RES_PASSTHRU; \
209 if (!(prov).GetModule() || !(prov).GetModule()->dying) \
211 const ::Events::ModuleEventProvider::SubscriberList& _handlers = (prov).GetSubscribers(); \
212 for (::Events::ModuleEventProvider::SubscriberList::const_iterator _i = _handlers.begin(); _i != _handlers.end(); ++_i) \
214 listenerclass* _t = static_cast<listenerclass*>(*_i); \
215 const Module* _m = _t->GetModule(); \
216 if (!_m || _m->dying) \
218 result = _t->func params ; \
219 if (result != MOD_RES_PASSTHRU) \