No patch,
Usage:
class fooWindow : public Window, public Slot<fooWindow> {
public:
fooWindow(...)
-----------------------------Simple Header-------------------------
#ifndef _FLSLOT_H_
#define _FLSLOT_H_
namespace fltk {
class Widget;
template<typename windowT>
class Slot {
public:
template<void (windowT::*methodP)(),typename widgetT>
slot(widgetT* widget) {
widget->callback(&stub<methodP>,static_cast<void*>(this));
}
template<void (windowT::*methodP)() const,typename widgetT>
slot(widgetT* widget) {
widget->callback(&stub<methodP>,static_cast<void*>(this));
}
template<void (windowT::*methodP)(),typename widgetT>
slot(widgetT& widget) {
widget.callback(&stub<methodP>,static_cast<void*>(this));
}
template<void (windowT::*methodP)() const,typename widgetT>
slot(widgetT& widget) {
widget.callback(&stub<methodP>,static_cast<void*>(this));
}
private:
template<void (windowT::*methodP)()>
static void stub(Widget* widget,void* window){
(static_cast<windowT*>(window)->*methodP)();
}
template<void (windowT::*methodP)() const>
static void stub(Widget* widget,void* window){
(static_cast<windowT*>(window)->*methodP)();
}
};
}
#endif /* _FLSLOT_H_ */
_______________________________________________
fltk mailing list
[email protected]
http://lists.easysw.com/mailman/listinfo/fltk