aboutsummaryrefslogtreecommitdiff
path: root/code/tools/lcc/src/event.c
diff options
context:
space:
mode:
authorFathi Boudra <fabo@debian.org>2011-10-20 15:18:11 +0300
committerFathi Boudra <fabo@debian.org>2011-10-20 15:18:11 +0300
commit840643efa638de9dc44f45dc4f3f1c81c2985498 (patch)
treec4d2f3b70c4138f8f7df772b09e663d7794d9456 /code/tools/lcc/src/event.c
Initial import1772-openpandora
Diffstat (limited to 'code/tools/lcc/src/event.c')
-rw-r--r--code/tools/lcc/src/event.c28
1 files changed, 28 insertions, 0 deletions
diff --git a/code/tools/lcc/src/event.c b/code/tools/lcc/src/event.c
new file mode 100644
index 0000000..4549e3f
--- /dev/null
+++ b/code/tools/lcc/src/event.c
@@ -0,0 +1,28 @@
+#include "c.h"
+
+
+struct entry {
+ Apply func;
+ void *cl;
+};
+
+Events events;
+void attach(Apply func, void *cl, List *list) {
+ struct entry *p;
+
+ NEW(p, PERM);
+ p->func = func;
+ p->cl = cl;
+ *list = append(p, *list);
+}
+void apply(List event, void *arg1, void *arg2) {
+ if (event) {
+ List lp = event;
+ do {
+ struct entry *p = lp->x;
+ (*p->func)(p->cl, arg1, arg2);
+ lp = lp->link;
+ } while (lp != event);
+ }
+}
+