| Classes | Job Modules | Data Objects | Services | Algorithms | Tools | Packages | Directories | Tracs |

In This Package:

SingletonManager.cc

Go to the documentation of this file.
00001 #include "SingletonManager.hh"
00002 #include "Singleton.hh"
00003 #include <stdlib.h>
00004 #include <typeinfo>
00005 #include <iostream>
00006 #include <string>
00007 #include <cstdlib>
00008 SingletonManager* SingletonManager::msInstance = 0;
00009 
00010 SingletonManager& SingletonManager::Instance()
00011 {
00012   if(msInstance==0) {
00013     msInstance = new SingletonManager;
00014     std::atexit(Destroy);
00015   }
00016   return *msInstance;
00017 }
00018 
00019 void SingletonManager::RegisterSingleton(SingletonBase* object)
00020 {
00021   std::string name = typeid(*object).name();
00022   //std::cout << "SingletonManager registering type " << name << std::endl;
00023   mSingletons.push_back(object);
00024 }
00025 
00026 
00027 SingletonManager::SingletonManager()
00028 {
00029 }
00030 
00031 SingletonManager::~SingletonManager()
00032 {
00036   
00037   if(mSingletons.size()>0)
00038   for(unsigned int i = mSingletons.size(); i>0; i--) {
00039     std::string name = typeid(*(mSingletons[i-1])).name();
00040     //std::cout << "SingletonManager destroying type " << name << std::endl;
00041 
00042     delete mSingletons[i-1];
00043     mSingletons[i-1] = 0;
00044   }
00045 }
00046 
00047 
00048 void SingletonManager::Destroy()
00049 {
00050   if(msInstance) delete msInstance;
00051   msInstance = 0;
00052 }
00053 
| Classes | Job Modules | Data Objects | Services | Algorithms | Tools | Packages | Directories | Tracs |

Generated on Mon Apr 11 20:06:22 2011 for Log by doxygen 1.4.7