diff options
author | chai <chaifix@163.com> | 2018-07-22 15:25:01 +0800 |
---|---|---|
committer | chai <chaifix@163.com> | 2018-07-22 15:25:01 +0800 |
commit | ad483a2d1c25f2f986eedbdadf4dbf1f24d0c532 (patch) | |
tree | 195233426c0fbace33e5c51d4e1e9d367701fe25 /src/libjin/common/subsystem.h | |
parent | b2c7bb0b283dd2a80f345e26c042d6ffaf05209c (diff) |
*singleton
Diffstat (limited to 'src/libjin/common/subsystem.h')
-rw-r--r-- | src/libjin/common/subsystem.h | 30 |
1 files changed, 17 insertions, 13 deletions
diff --git a/src/libjin/common/subsystem.h b/src/libjin/common/subsystem.h index abe509e..4f3c5ab 100644 --- a/src/libjin/common/subsystem.h +++ b/src/libjin/common/subsystem.h @@ -1,32 +1,36 @@ #ifndef __JIN_COMMON_SUBSYSTEM_H #define __JIN_COMMON_SUBSYSTEM_H +#include "singleton.h" #include "../utils/macros.h" namespace jin { - class Subsystem + template<class System> + class Subsystem : public Singleton<System> { + public: + struct Setting {}; + typedef Setting SettingBase; - public: + void init(const SettingBase* setting) + { + initSystem(setting); + } - struct Setting {}; - - typedef Subsystem::Setting SettingBase; - - virtual bool init(const Setting* setting) = 0; - - virtual void quit() = 0; + void quit() + { + quitSystem(); + destroy(); + } protected: - Subsystem() {}; virtual ~Subsystem() {}; - virtual onlyonce bool _init(const Setting* setting) = 0; - virtual onlyonce void _quit() = 0; - + virtual bool initSystem(const Setting* setting) = 0; + virtual void quitSystem() = 0; }; } |