00001 // $Header: /cvs/lcd/slic/include/ModuleRegistry.hh,v 1.6 2007/04/27 01:54:32 jeremy Exp $ 00002 00003 // std 00004 #include <map> 00005 #include <string> 00006 00007 // slic 00008 #include "Module.hh" 00009 #include "Singleton.hh" 00010 00011 namespace slic 00012 { 00017 class ModuleRegistry : 00018 public Singleton<ModuleRegistry>, 00019 public Module 00020 { 00021 public: 00022 typedef std::map<std::string, Module*> ModuleMap; 00023 00024 public: 00025 virtual ~ModuleRegistry(); 00026 ModuleRegistry(); 00027 00028 public: 00029 00030 void registerModule(Module*); 00031 Module* findModule(const std::string&); 00032 00033 void deregisterModule(Module* module); 00034 void deregisterModule(const std::string& name); 00035 00039 void print(); 00040 00041 void deleteModules(); 00042 00043 private: 00044 ModuleMap m_modules; 00045 }; 00046 }
1.5.4