00001 #ifndef MODULEMANAGER_H
00002 #define MODULEMANAGER_H
00003
00004 #include <kore/kore.h>
00005 #include <kore/serviceprovider.h>
00006 #include <set>
00007
00008 namespace kore
00009 {
00018 class KORE_API ModuleManager : public ServiceProvider
00019 {
00020 public:
00024 ModuleManager();
00028 virtual ~ModuleManager();
00029
00034 virtual void registerModule(Module* module);
00039 virtual void unregisterModule(Module* module);
00044 virtual void registerModules(Module** modules);
00049 virtual void unregisterModules();
00050
00057 virtual Module** registeredModules() const;
00058
00059 protected:
00060 private:
00061
00062 const Version* _mmVersion;
00063
00064 const Version* _mmAPIVersion;
00065
00066 const Info* _mmInfo;
00067
00068 const Service* _mmService;
00069
00070
00071 struct ltptr
00072 {
00073 bool operator()(Module* mod1, Module* mod2) const
00074 {
00075
00076 return mod1 < mod2;
00077 }
00078 };
00079 typedef set<Module* , ltptr> mod_set_type;
00080
00081 mod_set_type _modules;
00082 };
00083 };
00084
00085 #endif