Diana Software
QModuleFactory.hh
Go to the documentation of this file.
1 
30 #ifndef _Q_MODULE_FACTORY_H_
31 #define _Q_MODULE_FACTORY_H_
32 
33 #include <list>
34 #include <string>
35 #include <ostream>
36 #include <iostream>
37 #include <ctype.h>
38 #include <vector>
39 #include <utility>
40 
41 #include "QNamed.hh"
42 #include "QDiana.hh"
43 
45 
46 class QSequence;
47 class QBaseModule;
48 class QReader;
49 class QWriter;
50 class QFilter;
51 class QDriver;
52 class QModule;
53 
54 class QModuleFactory : public QNamed {
55  public:
56 
57  // singleton
58  static QModuleFactory *Get();
59 
60  virtual ~QModuleFactory();
61 
62  void Init();
63 
64  void Dump(std::ostream&);
65 
66  std::list< QSequence* > &GetSequences() { return sequences;}
67 
68  private:
69  QSequence* FindSequence(const std::string& s);
70  // singleton
71  static QModuleFactory *me;
72 
73  // private ctor
75 
76  QModule* CreateModule(const std::string& n, QSequence *);
77  QWriter* CreateWriter(const std::string& n, QSequence *);
78  QReader* CreateReader(const std::string& n, QSequence *);
79  QFilter* CreateFilter(const std::string& n, QSequence *);
80  QDriver* CreateDriver(const std::string& n, QSequence *);
81  void LoadLoadable(const std::string& n);
82  std::string ReplaceCFGVar(const std::string& value);
83  void AddAliasGroup(
84  std::vector<std::pair<std::string, int> >& cfgFileLines, int location,
85  const std::vector<std::string>& alias_files, const std::string& group,
86  const std::vector<std::pair<std::string, std::string> >& group_options);
87 
88  // list of sequences
89  std::list< QSequence* > sequences;
90 
91 
92  // status
93  bool init_done;
94 };
95 
97 
98 #endif
#define Q_END_NAMESPACE
Definition: QDiana.hh:22
#define Q_BEGIN_NAMESPACE
Definition: QDiana.hh:20
Base class for modules.
Definition: QBaseModule.hh:57
Base class for diana drivers.
Definition: QDriver.hh:32
Base class for diana filters.
Definition: QFilter.hh:57
module instantiation class
virtual ~QModuleFactory()
void Dump(std::ostream &)
QFilter * CreateFilter(const std::string &n, QSequence *)
void LoadLoadable(const std::string &n)
void AddAliasGroup(std::vector< std::pair< std::string, int > > &cfgFileLines, int location, const std::vector< std::string > &alias_files, const std::string &group, const std::vector< std::pair< std::string, std::string > > &group_options)
std::string ReplaceCFGVar(const std::string &value)
QModule * CreateModule(const std::string &n, QSequence *)
std::list< QSequence * > & GetSequences()
static QModuleFactory * Get()
QDriver * CreateDriver(const std::string &n, QSequence *)
static QModuleFactory * me
QReader * CreateReader(const std::string &n, QSequence *)
std::list< QSequence * > sequences
QWriter * CreateWriter(const std::string &n, QSequence *)
QSequence * FindSequence(const std::string &s)
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