class event {protected: event(event* x) : ev(x) {} public: int type() { return ev->type(); } void* rawevent() { return ev; } private: event* ev; }; class xevent : public event {
event public: int type() { return X->type(); } private: struct XEvent* X; };
X