#ifdef __GNUG__ #pragma implementation "Event.h" #endif #include Event EventPoll::IdleEvent; void Event::add(EventPoll *s) { s->next = list; list = s; } void Event::del(EventPoll *p) { for (EventPoll **s = &list; *s; s = &(*s)->next) if (*s == p) { *s = p->next; break; } } int Event::handler() { int flag = 0; for (EventPoll *s = list; s; s = s->next) flag |= s->eventHandler(); return flag; } void EventPoll::arm(Event *e) { disarm(); head = e; head->add(this); } void EventPoll::disarm() { if (head) { head->del(this); head = 0; } }