48 lines
621 B
C++
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 */
|