Files
Archimedes/include/utils/App/App.h

55 lines
1.3 KiB
C++

#ifndef APP_H
#define APP_H
#include "pch.hpp"
#include "utils/Module/Module.h"
namespace Archimedes {
class App {
protected:
static App* instance;
bool done = false;
std::list<Module*> modules;
std::list<Module*> toClose;
std::list<std::string> toOpen;
Module* dynamicLoad(std::string);
virtual std::list<Module*>::iterator load(std::string, std::list<std::string>);
virtual std::list<Module*>::iterator load(Module*, std::list<std::string>);
virtual void unload(std::list<Module*>::iterator);
virtual void printHelp() = 0;
std::list<std::string> getBlacklist() {
std::list<std::string> l;
for(Module* m : modules)
l.push_back(m->getName());
return l;
}
public:
App();
virtual ~App();
static App* Get() { return instance; }
virtual void handleArgs(const int&, char*[]) = 0;
virtual void run() = 0;
virtual void stopModule(std::list<Module*>::iterator);
virtual void startModule(std::string);
void end() { done = true; }
};
}
#endif