00001 #ifndef QUICK_ANA__ANA_TOOL_SEQUENCE_H
00002 #define QUICK_ANA__ANA_TOOL_SEQUENCE_H
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014 #include <QuickAna/Global.h>
00015
00016 #include <list>
00017 #include <memory>
00018 #include <vector>
00019
00020 namespace ana
00021 {
00029
00030 class AnaToolSequence
00031 {
00032
00033
00034
00035
00036
00037 AnaToolSequence (const AnaToolSequence&) = delete;
00038 AnaToolSequence& operator = (const AnaToolSequence&) = delete;
00039
00040
00044 public:
00045 void testInvariant () const;
00046
00047
00053 public:
00054 AnaToolSequence ();
00055
00056
00060 public:
00061 AnaToolSequence (AnaToolSequence&& that);
00062
00063
00067 public:
00068 AnaToolSequence& operator = (AnaToolSequence&& that);
00069
00070
00074 public:
00075 void swap (AnaToolSequence& that);
00076
00077
00083 public:
00084 void addTool (std::unique_ptr<IAnaTool> val_definition);
00085
00086
00092 public:
00093 void addLabel (const std::string& val_label);
00094
00095
00099 public:
00100 bool empty () const;
00101
00102
00104 public:
00105 typedef std::list<std::pair<IAnaTool*,std::string>>::const_iterator iterator;
00106
00107
00111 public:
00112 iterator begin () const;
00113
00114
00118 public:
00119 iterator end () const;
00120
00121
00122
00123
00124
00125
00126
00128 private:
00129 std::list<std::pair<IAnaTool*,std::string>> m_tools;
00130 };
00131
00132
00133
00144 StatusCode
00145 makeToolSequence (const std::vector<DefinitionConf>& confList,
00146 const DefinitionArgs& masterArgs,
00147 AnaToolSequence& tools);
00148 }
00149
00150 #endif