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