Gadget
class gadget {public: enum { PRESS, RELEASE }; gadget(int i) : info(i) { next = 0; } void pick(handler* h) { if (h->info() == info) { h->set( this ); } else if (next) next->pick(h); } virtual void callback() = 0; void insert(gadget* g); private: int info; gadget* next; }; void gadget::insert(gadget* g) { if (!next) next = g; else next->insert(g); }
gadget