#ifndef MODULE_H #define MODULE_H #include "pch.hpp" namespace Archimedes { class App; class Module { friend class App; public: typedef Module* create_t(void*, App*); Module(void* h, App* a) : handle(h), app(a) {} virtual ~Module() {} virtual void run() = 0; virtual void onLoad() = 0; std::string getName() const { return name; } void* getHandle() { return handle; } void setSelf(std::list::iterator s) { self = s; } protected: std::string name; void* handle; std::list::iterator self; App* app; std::unordered_map deps; }; } #endif