#pragma once #include "Clock.h" namespace midi { class CallbackClock : public Clock { public: typedef void (*TickCallback)( void *userData ); private: TickCallback tickCallback; std::mutex tickCallback_mutex; void* tickCallbackData; std::mutex tickCallbackData_mutex; public: CallbackClock(); CallbackClock(TickCallback tickCallback); CallbackClock(TickCallback tickCallback, void* tickCallbackData); TickCallback getTickCallback(); void setTickCallback(TickCallback tickCallback); void* getTickCallbackData(); void setTickCallbackData(void* tickCallbackData); public: virtual void tick(); }; } // namespace