00001 #ifndef QUICK_ANA__DEFINITION_ARGS_H
00002 #define QUICK_ANA__DEFINITION_ARGS_H
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #include <QuickAna/Global.h>
00021
00022 #include <QuickAna/AnaToolSequence.h>
00023 #include <list>
00024 #include <memory>
00025 #include <string>
00026
00027 namespace ana
00028 {
00041
00042 class DefinitionArgs
00043 {
00044
00045
00046
00047
00048
00049 DefinitionArgs (const DefinitionArgs&) = delete;
00050 DefinitionArgs& operator = (const DefinitionArgs&) = delete;
00051
00052
00056 public:
00057 void testInvariant () const;
00058
00059
00065 public:
00066 DefinitionArgs (const std::string& val_prefix,
00067 InternalConfiguration *val_configuration);
00068
00069
00073 public:
00074 DefinitionArgs (DefinitionArgs&&) = default;
00075
00076
00086 public:
00087 DefinitionArgs cloneConf () const;
00088
00089
00097 public:
00098 const std::string& prefix () const;
00099
00100
00106 public:
00107 void addToPrefix (const std::string& extension);
00108
00109
00114 public:
00115 InternalConfiguration *configuration () const;
00116
00117
00122 public:
00123 bool firstWP () const;
00124
00128 public:
00129 void setFirstWP (bool val_firstWP);
00130
00131
00137 public:
00138 void add (std::unique_ptr<IAnaTool> val_tool);
00139
00140
00145 public:
00146 bool filled () const;
00147
00148
00152 public:
00153 AnaToolSequence&& extractSequence ();
00154
00155
00156
00157
00158
00159
00160
00162 private:
00163 std::string m_prefix;
00164
00166 private:
00167 bool m_firstWP = true;
00168
00170 private:
00171 InternalConfiguration *m_configuration;
00172
00174 private:
00175 AnaToolSequence m_sequence;
00176
00177
00178
00179
00180
00181
00182
00186 public:
00187 ObjectType type () const;
00188
00192 public:
00193 void setType (ObjectType val_type);
00194
00195
00199 public:
00200 const std::string& name () const;
00201
00205 public:
00206 void setName (const std::string& val_name);
00207
00208
00210 private:
00211 ObjectType m_type;
00212 private:
00213 std::string m_name;
00214 };
00215 }
00216
00217 #endif