make App easily subclassable

This commit is contained in:
2025-03-27 13:15:30 -05:00
parent 5b6a7b62c7
commit aff69960a0
4 changed files with 216 additions and 0 deletions

51
include/utils/App/App.h Normal file
View File

@@ -0,0 +1,51 @@
#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 handleArgs(const int&, char*[]);
virtual void printHelp();
std::list<std::string> getBlacklist() {
std::list<std::string> l;
for(Module* m : modules)
l.push_back(m->getName());
return l;
}
public:
App(const int&, char*[]);
~App();
static App& Get() { return *instance; }
void run();
void stopModule(std::list<Module*>::iterator);
void startModule(std::string);
void end() { done = true; }
};
}
#endif