46 lines
619 B
C
46 lines
619 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 */
|