52 lines
1.1 KiB
C++
52 lines
1.1 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;
|
|
|
|
virtual bool load(std::string, 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
|