emcCalFEMFactory.h

Go to the documentation of this file.
00001 #ifndef __EMCCALFEMFACTORY_H__
00002 #define __EMCCALFEMFACTORY_H__
00003 
00004 class emcCalFEM;
00005 #include "PHTimeStamp.h"
00006 #include <iostream>
00007 #include <string>
00008 #include <map>
00009 
00017 class emcCalFEMFactory
00018 {
00019 public:
00020 
00021   typedef emcCalFEM* (*Creator)(int absolutePosition,
00022                                 const PHTimeStamp& start,
00023                                 const PHTimeStamp& end,
00024                                 bool isDefault);
00025   typedef std::map<std::string,Creator> CreatorMap;
00026 
00028   static emcCalFEM*
00029   Create(const char* category, 
00030          int absPosition,
00031          const PHTimeStamp& start=PHTimeStamp(), 
00032          const PHTimeStamp& end=PHTimeStamp(PHTimeStamp::PHFarFuture));
00033 
00034   //  /// Same w/o validity period.
00035   //  static emcCalFEM* Create(const char* category,
00036   //                       int absPosition);
00037 
00039   static emcCalFEM* 
00040   CreateDefault(const char* category, 
00041                 int absPosition, 
00042                 const PHTimeStamp& start=PHTimeStamp(), 
00043                 const PHTimeStamp& end=PHTimeStamp(PHTimeStamp::PHFarFuture));
00044 
00046   static void print(std::ostream& out = std::cout);
00047 
00049   //  static emcCalFEM* CreateDefault(const char* category, 
00050   //                                  int absPosition);
00051 
00052   static bool registerCreator(const char* category,
00053                               Creator creator);
00054 private:
00055 
00056   static emcCalFEM* create(const char* category,
00057                            int absPosition,
00058                            const PHTimeStamp& start,
00059                            const PHTimeStamp& end,
00060                            bool isDefault);
00061 
00062   static CreatorMap& fCreators();
00063 };
00064 
00065 #endif