13#ifndef ML_EVENT_SOURCE_H
14#define ML_EVENT_SOURCE_H
64 struct ListenerEntry {
65 ListenerEntry() : cb(nullptr), userData(nullptr) {}
66 ListenerEntry(
BaseEventCallback* aCB,
void* aUserData) : cb(aCB), userData(aUserData) {}
67 void sendEvent(BaseEvent* event)
const { (*cb)(userData, event); }
68 bool isValid()
const {
return (cb !=
nullptr); }
69 bool operator==(
const ListenerEntry& b)
const {
return cb == b.cb && userData == b.userData; }
76 std::vector<ListenerEntry> _eventListeners;
77 bool _inEventListenerIteration;
78 bool _eventListenersRemovedInIteration;
122template<
typename ToTypePtr>
125 if (from->getTypeId()->isDerivedFrom((
static_cast<ToTypePtr
>(0))->getClassTypeId())) {
126 return static_cast<ToTypePtr
>(from);
136template<
typename ToTypePtr>
139 if (from->getTypeId()->isDerivedFrom((
static_cast<ToTypePtr
>(0))->getClassTypeId())) {
140 return static_cast<ToTypePtr
>(from);
EventSource * source() const
Returns the Base object emitting this event.
EventSourceDeletedEvent()
EventSource(const EventSource &evSource)
void addEventListener(BaseEventCallback *cb, void *userData)
void sendEvent(BaseEvent *event, void *skipListener=nullptr)
bool hasEventListeners() const
void removeEventListener(BaseEventCallback *cb, void *userData)
#define ML_ABSTRACT_CLASS_HEADER(className)
ToTypePtr mlbaseevent_cast(ml::BaseEvent *from)
Cast operation for safely casting BaseEvents to derived types.
#define ML_CLASS_HEADER(className)
#define ML_ABSTRACT_ROOT_CLASS_HEADER(className)
bool operator==(const Tmat2< DT > &a, const Tmat2< DT > &b)
a == b ? Returns true if yes.
void BaseEventCallback(void *, BaseEvent *)