observer.h

Go to the documentation of this file.
00001 
00038 #ifndef MWARE_OBSERVER_H
00039 #define MWARE_OBSERVER_H
00040 
00041 #include <mware/list.h>
00042 
00067 typedef struct Observer
00068 {
00069     Node link;
00070     void (*event)(int event_id, void *param);
00071 } Observer;
00072 
00073 typedef struct Subject
00074 {
00076     List observers;
00077 
00078 } Subject;
00079 
00080 void observer_SetEvent(Observer *observer, void (*event)(int event_id, void *param));
00081 
00082 #define OBSERVER_INITIALIZER(callback) { { NULL, NULL }, callback }
00083 
00084 void observer_InitSubject(Subject *subject);
00085 
00087 void observer_Subscribe(Subject *subject, Observer *observer);
00088 
00090 void observer_Unsubscribe(Subject *subject, Observer *observer);
00091 
00094 void observer_notify(Subject *subject, int event_id, void *param);
00095 
00096 #endif /* MWARE_OBSERVER_H */