00001 // $Header: /cvs/lcd/slic/src/ModuleRegistry.cc,v 1.6 2007/04/27 01:54:35 jeremy Exp $ 00002 #include "ModuleRegistry.hh" 00003 00004 // slic 00005 #include "Module.hh" 00006 00007 // geant4 00008 #include "globals.hh" 00009 00010 namespace slic 00011 { 00012 ModuleRegistry::ModuleRegistry() 00013 : Module("ModuleRegistry",false,false) 00014 {} 00015 00016 ModuleRegistry::~ModuleRegistry() 00017 {} 00018 00019 Module* ModuleRegistry::findModule(const std::string& name) 00020 { 00021 return m_modules[ name ]; 00022 } 00023 00024 void ModuleRegistry::registerModule(Module* module) 00025 { 00026 if ( module == 0 ) { 00027 log().warning("ModuleRegistry::registerModule - module points to null!"); 00028 return; 00029 } 00030 00031 if ( m_modules[ module->getName() ] == 0 ) { 00032 m_modules[ module->getName() ] = module; 00033 } 00034 else { 00035 log().warning(module->getName() + " is already registered!"); 00036 } 00037 } 00038 00039 void ModuleRegistry::deregisterModule(Module* module) 00040 { 00041 deregisterModule(module->getName()); 00042 } 00043 00044 void ModuleRegistry::deregisterModule(const std::string& name) 00045 { 00046 ModuleMap::iterator it = m_modules.find( name ); 00047 00048 if ( it != m_modules.end() ) { 00049 m_modules.erase( it ); 00050 } 00051 } 00052 00053 void ModuleRegistry::print() 00054 { 00055 log() << LOG::always << LOG::endl; 00056 log() << LOG::always << "********************" << LOG::endl; 00057 log() << LOG::always << "* Module Registry *" << LOG::endl; 00058 log() << LOG::always << "********************" << LOG::endl; 00059 for ( ModuleMap::const_iterator it = m_modules.begin(); 00060 it != m_modules.end(); 00061 it++ ) { 00062 log() << LOG::always << it->first << LOG::endl; 00063 } 00064 } 00065 00066 void ModuleRegistry::deleteModules() 00067 { 00068 for (ModuleMap::iterator it = m_modules.begin(); 00069 it != m_modules.end(); 00070 it++) { 00071 // Delete it as long as Module has not 00072 // been flagged to not delete on exit. 00073 if (it->second->deleteOnExit() ) { 00074 delete it->second; 00075 } 00076 } 00077 } 00078 }
1.5.4