USGS

Isis 3.0 Object Programmers' Reference

Home

Pipeline.h
Go to the documentation of this file.
1 #ifndef Pipeline_h
2 #define Pipeline_h
3 
26 #include <vector>
27 
28 #include <QString>
29 
30 #include "PipelineApplication.h"
31 
32 namespace Isis {
33  class FileName;
34 
160  class Pipeline {
161  public:
162  Pipeline(const QString &procAppName = "");
163  ~Pipeline();
164 
165  void Prepare();
166  void Run();
167 
168  void SetInputFile(const char *inputParam);
169  void SetInputFile(const QString &inputParam);
170  void SetInputFile(const char *inputParam, const char *virtualBandsParam);
171  void SetInputFile(const QString &inputParam, const QString &virtualBandsParam);
172  void SetInputListFile(const char *inputParam);
173  void SetInputListFile(const QString &inputParam);
174  void SetInputFile(const FileName &inputFileName);
175  void SetInputListFile(const FileName &inputFileName);
176 
177  void SetOutputFile(const char *outputParam);
178  void SetOutputFile(const QString &outputParam);
179  void SetOutputFile(const FileName &outputFile);
180  void SetOutputListFile(const char *outputFileNameParam);
181  void SetOutputListFile(const QString &outputFileNameParam);
182  void SetOutputListFile(const FileName &outputFileNameList);
183  void KeepTemporaryFiles(bool keep);
186  return p_keepTemporary;
187  }
188 
189  void AddPause();
190  void AddToPipeline(const QString &appname);
191  void AddToPipeline(const QString &appname, const QString &identifier);
192  PipelineApplication &Application(const QString &identifier);
193  PipelineApplication &Application(const int &index);
194 
195  void SetFirstApplication(const QString &appname);
196  void SetLastApplication(const QString &appname);
197 
198  friend std::ostream &operator<<(std::ostream &os, Pipeline &pipeline);
199 
201  QString Name() const {
202  return p_procAppName;
203  }
205  int Size() const {
206  return (int)p_apps.size();
207  }
208 
216  QString OriginalInput(unsigned int branch) {
217  return ((branch < p_originalInput.size()) ? p_originalInput[branch] : "");
218  }
219 
222  return p_originalInput.size();
223  }
224 
234  if (p_originalBranches.size() > 0){
235  return p_originalBranches.size();
236  }
237  return p_inputBranches.size();
238  }
239 
242  std::vector<QString> OriginalBranches() {
243  if (p_originalBranches.size() > 0){
244  return p_originalBranches;
245  }
246  return p_inputBranches;
247  }
248 
249  QString FinalOutput(int branch = 0, bool addModifiers = true);
250  QString TemporaryFolder();
251 
252  void EnableAllApplications();
253 
261  void AddOriginalBranch(QString branch){
262  int size = (int)p_inputBranches.size();
263  if (size == 1) {
264  p_originalBranches.push_back(branch);
265  }
266  else {
267  for (int i=0; i<size; i++) {
268  p_originalBranches.push_back(p_inputBranches[i] + "." + branch);
269  }
270  }
271  }
272 
280  void SetContinue(bool pbFlag) {
281  p_continue = pbFlag;
282  };
283 
284  private:
285  int p_pausePosition;
286  QString p_procAppName;
287  std::vector<QString> p_originalInput;
288  std::vector<QString> p_inputBranches;
289  std::vector<QString> p_originalBranches;
290  std::vector<QString> p_finalOutput;
291  std::vector<QString> p_virtualBands;
294  std::vector< PipelineApplication * > p_apps;
295  std::vector< QString > p_appIdentifiers;
296  bool p_outputListNeedsModifiers;
297  bool p_continue;
298  };
299 };
300 
301 #endif