Quake-III-Arena

Quake III Arena GPL Source Release
Log | Files | Refs

event.c (416B)


      1 #include "c.h"
      2 
      3 
      4 struct entry {
      5 	Apply func;
      6 	void *cl;
      7 };
      8 
      9 Events events;
     10 void attach(Apply func, void *cl, List *list) {
     11 	struct entry *p;
     12 
     13 	NEW(p, PERM);
     14 	p->func = func;
     15 	p->cl = cl;
     16 	*list = append(p, *list);
     17 }
     18 void apply(List event, void *arg1, void *arg2) {
     19 	if (event) {
     20 		List lp = event;
     21 		do {
     22 			struct entry *p = lp->x;
     23 			(*p->func)(p->cl, arg1, arg2);
     24 			lp = lp->link;
     25 		} while (lp != event);
     26 	}
     27 }
     28