Listing 5: Header for callback that uses templates
// Callback.h
#ifndef _CALLBACK_H_
#define _CALLBACK_H_
void registerCallback(void *);
template <class T>
struct CallbackInfo {
typedef void (T::*p_func)(Widget, XtPointer, XtPointer);
T *obj;
p_func func;
Widget w;
_XtString cbType;
XtPointer udata;
};
template <class T>
void addCallback(T *obj,
void (T::*t_func)(Widget, XtPointer, XtPointer),
Widget w,
_XtString type,
XtPointer udata)
{
CallbackInfo<T> *ci = new CallbackInfo<T>;
ci->obj = obj;
ci->func = t_func;
ci->w = w;
ci->cbType = type;
ci->udata = udata;
registerCallback((void *)ci);
}
#endif
//End of File