/* * Copyright 2013 (c) Anna Schumaker. */ #ifndef OCARINA_IDLE_H #define OCARINA_IDLE_H namespace idle { class IdleBase { protected: void schedule(); public: IdleBase(); virtual ~IdleBase(); virtual void run() = 0; }; template class IdleTask : public IdleBase { private: void (*func)(T &); T data; public: IdleTask(void (*)(T &), T); ~IdleTask(); void run(); }; template static inline void schedule(void (*func)(T &), T param) { new IdleTask(func, param); } bool run_task(); float get_progress(); }; #include "idle.hpp" #endif /* OCARINA_IDLE_H */