00001
00002 #ifndef MODULE_H
00003 #define MODULE_H
00004
00005 #include <kore/kore.h>
00006
00007 namespace kore
00008 {
00009
00010 class Version;
00011 class ModuleManager;
00012
00019 class KORE_API Module
00020 {
00021 public:
00022
00027 class KORE_API Info
00028 {
00029 public:
00039 Info(Module* module, const char* name = 0, const char* type = 0, const char* description = 0, const Version* version = 0, const Version* api = 0);
00040 virtual ~Info();
00041
00046 virtual Module* module() const;
00051 virtual const char* name() const;
00056 virtual const char* type() const;
00061 virtual const char* description() const;
00066 virtual const Version* version() const;
00071 virtual const Version* APIVersion() const;
00072 protected:
00076 Info();
00081 void setModule(Module* module = 0);
00086 void setName(const char* name = 0);
00091 void setType(const char* type = 0);
00096 void setDescription(const char* descr = 0);
00101 void setVersion(const Version* version = 0);
00106 void setAPIVersion(const Version* api = 0);
00116 void setInfo(Module* module = 0, const char* name = 0, const char* type = 0, const char* description = 0, const Version* version = 0, const Version* api = 0);
00117 private:
00118
00119 Module* _module;
00120
00121 const char* _name;
00122
00123 const char* _type;
00124
00125 const char* _description;
00126
00127 const Version* _version;
00128
00129 const Version* _api;
00130 };
00131
00137 virtual void registeringModule(ModuleManager* mm);
00143 virtual void moduleRegistered(ModuleManager* mm);
00149 virtual void unregisteringModule(ModuleManager* mm);
00155 virtual void moduleUnregistered(ModuleManager* mm);
00161 virtual const Info* info() const;
00162 protected:
00166 Module();
00171 Module(const Info* info);
00175 virtual ~Module();
00180 void setInfo(const Info* info = 0);
00181 private:
00182
00183 const Info* _info;
00184 };
00185
00186 };
00187
00188 #endif