00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifndef _METRIVIS_PIPELINE_H
00023 #define _METRIVIS_PIPELINE_H
00024
00032 #include <string>
00033 #include <vector>
00034
00035
00036 namespace metrivis {
00037
00038
00039 class PipelineProcess;
00040
00041
00050 class Pipeline {
00051
00052
00053 public:
00054
00060 Pipeline() {
00061 Reset();
00062 }
00063
00069 virtual ~Pipeline() {
00070 ClearPipeline();
00071 }
00072
00080 void Execute();
00081
00082
00090 void Reset();
00091
00092
00101 const std::string& GetResult() const;
00102
00103
00109 PipelineProcess* GetPipeline(int index) const {
00110 return pipeline_processes_[index];
00111 }
00112
00113
00114 protected:
00115
00124 void AppendProcess(PipelineProcess* pipeline_process);
00125
00126
00132 void ClearPipeline();
00133
00134
00135 private:
00136
00137 Pipeline(const Pipeline& pipeline);
00138 Pipeline operator=(const Pipeline& pipeline);
00139
00140
00141 public:
00142
00144 enum {
00145 PL_PIPELINE_0 = 0,
00146 PL_PIPELINE_1,
00147 PL_PIPELINE_2,
00148 PL_PIPELINE_3,
00149 PL_PIPELINE_4,
00150 PL_PIPELINE_5
00151 };
00152
00153 protected:
00154
00155
00156 std::vector<PipelineProcess*> pipeline_processes_;
00157
00158 std::string result_;
00159 };
00160
00161 }
00162 #endif // _METRIVIS_PIPELINE_H