#ifndef APP_H
#define APP_H

#include "pch.hpp"
#include "Module.h"
#include "GuiModule.h"

class App {
    
    private:
        static App* instance;

        bool done = false;

        std::list<Module*> modules;
        std::list<Module*> toClose;

    public:
        App(const int&, char*[]);
        ~App();

        static App& Get() { return *instance; }

        void run();

        void load(std::string);

        void unload(decltype(Module::self));

        void stopModule(decltype(Module::self));

        void handleArgs(const int&, char*[]);

        void printHelp();

        void end() { done = true; }
};

#endif
