Herramientas de usuario

Herramientas del sitio


rf_taskmanager

RF_TaskManager

(Hereda de RF_Map)
La clase RF_TaskManager es la clase que controla la gestión de las instancias de RF_Process.

Miembros públicos

Funciones

RF_TaskManager()

Constructor de la clase.

template<typename T> string newTask(string father = "", RF_Window *_window = nullptr)

Función para instanciar la clase indicada integrándolo con la lógica del framework.
La clase a instanciar debe tener como clase base RF_Process.

void deleteTask(string id)

Elimina la instancia de RF_Process con el ID indicado.

void deleteTask(RF_Process* task)

Elimina la instancia de RF_Process recibida.

RF_Process* getTask(string id)

Retorna un puntero a la instancia de RF_Process con el ID indicado.

vector<RF_Process*> getTaskByType(string type)

Retorna un vector con punteros a todas las instancias de RF_Process cuyo type coincida con el indicado.

vector<RF_Process*> getTaskByFather(string father)

Retorna un vector con punteros a todas las instancias de RF_Process cuyo father coincida con el indicado.

vector<RF_Process*> getTaskList()

Retorna un vector con punteros a todas las instancias de RF_Process registradas.

void Run()

Función que actualiza todas las instancias de RF_Process registradas (llamando a la función Update de todas las instancias que lo requieran).

void Draw()

Función que renderiza todas las instancias de RF_Process registradas.

void Clear()

Función que elimina todas las instancias de RF_Process registradas.

Atributos

static RF_TaskManager *instance

Puntero que apunta a la única instancia de RF_TaskManager.

Implementación

class RF_TaskManager : public RF_Map
{
    public:
	static RF_TaskManager *instance;
 
	RF_TaskManager();
	virtual ~RF_TaskManager();
 
	template<typename T>
	string newTask(string father = "", RF_Window *_window = nullptr)
	{
		static_assert(is_base_of<RF_Process, T>::value, "[RF_TaskManager::newTask] T must derive from RF_Process");
 
		RF_Process *task = new T();
		int _id = 0;
		string id = father + ":" + task->type + to_string(_id);
 
		while(isInList(id))
		{
			_id++;
			id = father + ":" + task->type + to_string(_id);
		}
 
		Add(id, task);
		task->id = id;
		task->father = father;
		task->window = _window;
		task->Start();
		return id;
        }
 
	void deleteTask(string id);
	void deleteTask(RF_Process* task);
 
	RF_Process* getTask(string id);
	vector<RF_Process*> getTaskByType(string type);
	vector<RF_Process*> getTaskByFather(string father);
	vector<RF_Process*> getTaskList();
 
	void Run();
	void Draw();
 
	void Clear(){}
 
    private:
        int cont;
};
Categorías: Clases
rf_taskmanager.txt · Última modificación: 2018/01/18 21:37 (editor externo)