QGeneralFactory.hh

Go to the documentation of this file.
00001 #ifndef _Q_GENERAL_FACTORY_HH_
00002 #define _Q_GENERAL_FACTORY_HH_
00003 
00023 #include <string>
00024 #include <list>
00025 #include <map>
00026 
00027 #include "QNamed.hh"
00028 #include "QBaseModuleFactory.hh"
00029 
00030 class QModule;
00031 class QFilter;
00032 class QReader;
00033 class QWriter;
00034 class QDriver;
00035 
00036 class QSequence;
00037 class QDLLLoader;
00038 
00039 #define Q_PLUGIN_PREFIX_STR "registerInFactory"
00040 
00041 class QGeneralFactory : public QNamed {
00042     public:
00043         static QGeneralFactory& GetInstance();
00044 
00045         virtual ~QGeneralFactory();
00046         
00047         void LoadPlugin(const std::string& name);
00048        
00049         void Register(QModFactory<QModule>* MF);
00050         QModule* CreateModule(const std::string& name, QSequence* s);
00051         
00052         void Register(QModFactory<QReader>* MF);
00053         QReader* CreateReader(const std::string& name, QSequence* s);
00054 
00055         void Register(QModFactory<QWriter>* MF);
00056         QWriter* CreateWriter(const std::string& name, QSequence* s);
00057 
00058         void Register(QModFactory<QFilter>* MF);
00059         QFilter* CreateFilter(const std::string& name, QSequence* s);
00060 
00061         void Register(QModFactory<QDriver>* MF);
00062         QDriver* CreateDriver(const std::string& name, QSequence* s);
00063 
00064    private:
00065         QGeneralFactory();
00066         QDLLLoader* fDLLLoader;
00067         
00068         std::map<std::string, QModFactory<QModule>* > fModules;
00069         std::map<std::string, QModFactory<QFilter>* > fFilters;
00070         std::map<std::string, QModFactory<QReader>* > fReaders;
00071         std::map<std::string, QModFactory<QWriter>* > fWriters;
00072         std::map<std::string, QModFactory<QDriver>* > fDrivers;
00073 
00074 };
00075 
00076 #endif

Generated on Tue Nov 16 10:49:56 2010 for CUORE Software by  doxygen 1.5.6