// MCpp_Callback.h - MULTICAM C++ API - Callback #if !defined(__MCPP_CALLBACK_H__) #define __MCPP_CALLBACK_H__ namespace Euresys { namespace MultiCam { // ******************************************************************************************** // Callback class // -------------- class Callback { public: virtual ~Callback() = 0; virtual void RunUntyped(MultiCamObjectWithSignaling *object, SignalInfo &info) = 0; }; template class UserCallback : public Callback { private: T *Object; void (T::*Function)(OwnerType &channel, SignalInfo &info); public: UserCallback(T *obj, void (T::*f)(OwnerType &channel, SignalInfo &info)) : Object(obj), Function(f) { } inline ~UserCallback() { } void Run(OwnerType &channel, SignalInfo &info) { (Object->*Function)(channel, info); } void RunUntyped(MultiCamObjectWithSignaling *caller, SignalInfo &info) { Run(*reinterpret_cast(caller), info); } }; } } #endif