From ad483a2d1c25f2f986eedbdadf4dbf1f24d0c532 Mon Sep 17 00:00:00 2001 From: chai Date: Sun, 22 Jul 2018 15:25:01 +0800 Subject: *singleton --- src/libjin/common/subsystem.h | 30 +++++++++++++++++------------- 1 file changed, 17 insertions(+), 13 deletions(-) (limited to 'src/libjin/common/subsystem.h') 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 Subsystem : public Singleton { + 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; }; } -- cgit v1.1-26-g67d0