ocarina/include/core/idle.h

48 lines
621 B
C++

/*
* 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 T>
class IdleTask : public IdleBase {
private:
void (*func)(T &);
T data;
public:
IdleTask(void (*)(T &), T);
~IdleTask();
void run();
};
template <class T>
static inline void schedule(void (*func)(T &), T param)
{
new IdleTask<T>(func, param);
}
bool run_task();
float get_progress();
};
#include "idle.hpp"
#endif /* OCARINA_IDLE_H */