diff options
Diffstat (limited to 'src/libjin/Common/je_subsystem.hpp')
-rw-r--r-- | src/libjin/Common/je_subsystem.hpp | 44 |
1 files changed, 39 insertions, 5 deletions
diff --git a/src/libjin/Common/je_subsystem.hpp b/src/libjin/Common/je_subsystem.hpp index 4966a9d..d8e106d 100644 --- a/src/libjin/Common/je_subsystem.hpp +++ b/src/libjin/Common/je_subsystem.hpp @@ -8,22 +8,40 @@ namespace JinEngine { + /// + /// Subsystem class. + /// template<class System> class Subsystem : public Singleton<System> { public: - struct Setting {}; + /// + /// Subsystem setting. + /// + struct Setting + { + }; + typedef Setting SettingBase; + /// + /// Initialize subsystem. + /// + /// @param setting Subsystem setting. + /// @return True if initialize sucessful, otherwise return false. + /// bool init(const SettingBase* setting = nullptr) { static bool success = initSystem(setting); return success; } + /// + /// Quit subsystem. + /// void quit() { - /*call only once*/ + // Call only once. static char __dummy__ = (quitSystem(), 1); Singleton<System>::destroy(); } @@ -31,11 +49,27 @@ namespace JinEngine protected: singleton(System); + /// + /// Subsystem constructor. + /// Subsystem() {}; - virtual ~Subsystem() {}; - /*onlyonce*/ virtual bool initSystem(const Setting* setting) = 0; - /*onlyonce*/ virtual void quitSystem() = 0; + /// + /// Subsystem destructor. + /// + virtual ~Subsystem() + { + }; + + /// + /// Initializer callback. + /// + virtual bool initSystem(const Setting* setting) = 0; + + /// + /// Quit subsystem callback. + /// + virtual void quitSystem() = 0; }; |