+class Client;
+
+struct MouseCallbackData {
+ MouseCallback callback;
+ void *data;
+ MouseCallbackData(MouseCallback c, void *d) : callback(c), data(d) {}
+ void fire(MouseData *d) { callback(d, data); }
+ bool operator==(const MouseCallbackData &other) { return (callback ==
+ other.callback &&
+ data ==
+ other.data); }
+};
+
+struct KeyCallbackData {
+ KeyCallback callback;
+ void *data;
+ KeyCallbackData(KeyCallback c, void *d) : callback(c), data(d) {}
+ void fire(KeyData *d) { callback(d, data); }
+ bool operator==(const KeyCallbackData &other) { return (callback ==
+ other.callback &&
+ data ==
+ other.data); }
+};
+
+struct EventCallbackData {
+ EventCallback callback;
+ void *data;
+ EventCallbackData(EventCallback c, void *d) : callback(c), data(d) {}
+ void fire(EventData *d) { callback(d, data); }
+ bool operator==(const EventCallbackData &other) { return (callback ==
+ other.callback &&
+ data ==
+ other.data); }
+};