#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 modules; std::list toClose; std::list toOpen; Module* dynamicLoad(std::string); virtual bool load(Module*, std::list); virtual void unload(std::list::iterator); virtual void printHelp() = 0; std::list getBlacklist() { std::list 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::iterator); virtual void startModule(std::string); void end() { done = true; } }; } #endif