Diana Software
QGeneralFactory.hh
Go to the documentation of this file.
1 #ifndef _Q_GENERAL_FACTORY_HH_
2 #define _Q_GENERAL_FACTORY_HH_
23 #include <string>
24 #include <list>
25 #include <map>
26 
27 #include "QNamed.hh"
28 #include "QBaseModuleFactory.hh"
29 
31 
32 class QModule;
33 class QFilter;
34 class QReader;
35 class QWriter;
36 class QDriver;
37 
38 class QSequence;
39 class QDLLLoader;
40 
41 #define Q_PLUGIN_PREFIX_STR "registerInFactory"
42 
43 class QGeneralFactory : public QNamed {
44  public:
45  static QGeneralFactory& GetInstance();
46 
47  virtual ~QGeneralFactory();
48 
49  void LoadPlugin(const std::string& name);
50 
52  QModule* CreateModule(const std::string& name, QSequence* s);
53 
55  QReader* CreateReader(const std::string& name, QSequence* s);
56 
58  QWriter* CreateWriter(const std::string& name, QSequence* s);
59 
61  QFilter* CreateFilter(const std::string& name, QSequence* s);
62 
64  QDriver* CreateDriver(const std::string& name, QSequence* s);
65 
66  private:
69 
70  std::map<std::string, QModFactory<QModule>* > fModules;
71  std::map<std::string, QModFactory<QFilter>* > fFilters;
72  std::map<std::string, QModFactory<QReader>* > fReaders;
73  std::map<std::string, QModFactory<QWriter>* > fWriters;
74  std::map<std::string, QModFactory<QDriver>* > fDrivers;
75 
76 };
77 
79 
80 #endif
#define Q_END_NAMESPACE
Definition: QDiana.hh:22
#define Q_BEGIN_NAMESPACE
Definition: QDiana.hh:20
Base class for diana drivers.
Definition: QDriver.hh:32
Base class for diana filters.
Definition: QFilter.hh:57
This class take care of plugin registration and creation.
std::map< std::string, QModFactory< QModule > * > fModules
std::map< std::string, QModFactory< QReader > * > fReaders
QFilter * CreateFilter(const std::string &name, QSequence *s)
static QGeneralFactory & GetInstance()
std::map< std::string, QModFactory< QFilter > * > fFilters
QWriter * CreateWriter(const std::string &name, QSequence *s)
void LoadPlugin(const std::string &name)
std::map< std::string, QModFactory< QWriter > * > fWriters
void Register(QModFactory< QModule > *MF)
std::map< std::string, QModFactory< QDriver > * > fDrivers
QDLLLoader * fDLLLoader
QModule * CreateModule(const std::string &name, QSequence *s)
QReader * CreateReader(const std::string &name, QSequence *s)
virtual ~QGeneralFactory()
QDriver * CreateDriver(const std::string &name, QSequence *s)
abstract module factory and definition of macros that builds modulefactories and register function.
Base class for diana modules.
Definition: QModule.hh:54
base class for anything that has a name
Definition: QNamed.hh:14
Base class for diana event readers.
Definition: QReader.hh:50
Diana Reconstruction program.
Definition: QSequence.hh:40
Abstract class for diana writers.
Definition: QWriter.hh:30