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