Isis 3 Programmer Reference
ProcessByLine.h
Go to the documentation of this file.
1 #ifndef ProcessByLine_h
2 #define ProcessByLine_h
3 
25 #include "ProcessByBrick.h"
26 #include "Buffer.h"
27 namespace Isis {
28  class Cube;
29  class CubeAttributeInput;
30 
114 
115  public:
117  SetWrap(true);
118  };
119 
120  using Isis::ProcessByBrick::SetInputCube; // make parents SetInputCube visable
121  Isis::Cube *SetInputCube(const QString &parameter,
122  const int requirements = 0);
123  Isis::Cube *SetInputCube(const QString &file,
125  const int requirements = 0);
126 
127  void SetInputCube(Isis::Cube *inCube);
128 
129  void StartProcess(void funct(Isis::Buffer &inout));
130  virtual void StartProcess(std::function<void(Isis::Buffer &in)> funct );
131 
132  void StartProcess(void funct(Isis::Buffer &in, Isis::Buffer &out));
133  void StartProcess(void
134  funct(std::vector<Isis::Buffer *> &in,
135  std::vector<Isis::Buffer *> &out));
136 
137  void SetBricks(IOCubes cn);
138 
149  template <typename Functor>
150  void ProcessCubeInPlace(const Functor & funct, bool threaded = true) {
151  VerifyCubes(InPlace);
152  SetBricks(InPlace);
153  ProcessByBrick::ProcessCubeInPlace(funct, threaded);
154  }
155 
156 
169  template <typename Functor>
170  void ProcessCube(const Functor & funct, bool threaded = true) {
171  VerifyCubes(InputOutput);
172  SetBricks(InputOutput);
173  ProcessByBrick::ProcessCube(funct, threaded);
174  }
175 
176 
190  template <typename Functor>
191  void ProcessCubes(const Functor & funct, bool threaded = true) {
192  VerifyCubes(InputOutputList);
193  SetBricks(InputOutputList);
194  ProcessByBrick::ProcessCubes(funct, threaded);
195  }
196  };
197 };
198 
199 #endif
Buffer for reading and writing cube data.
Definition: Buffer.h:69
Manipulate and parse attributes of input cube filenames.
void ProcessCubeInPlace(const Functor &funct, bool threaded=true)
Same functionality as StartProcess(void funct(Isis::Buffer &inout)) using Functors.
Isis::Cube * SetInputCube(const QString &parameter, const int requirements=0)
Opens an input cube specified by the user and verifies requirements are met.
void VerifyCubes(IOCubes cn)
Verifies the dimensions of the input/output cubes.
void ProcessCubes(const Functor &functor, bool threaded=true)
Operate over an arbitrary number of input cubes given an arbitrary number of output cubes...
Cube * SetInputCube(const QString &parameter, int requirements=0)
Opens an input cube specified by the user and verifies requirements are met.
Process cubes by brick.
void ProcessCubeInPlace(const Functor &functor, bool threaded=true)
Operate over a single cube (either input or output).
void StartProcess(void funct(Isis::Buffer &inout))
This method invokes the process by line operation over a single input or output cube.
void ProcessCube(const Functor &functor, bool threaded=true)
Operate over a single input cube creating a separate output cube.
void ProcessCubes(const Functor &funct, bool threaded=true)
Same functionality as StartProcess(std::vector<Isis::Buffer *> &in, std::vector<Isis::Buffer *> &out)...
void ProcessCube(const Functor &funct, bool threaded=true)
Same functionality as StartProcess(void funct(Isis::Buffer &in, Isis::Buffer &out)) using Functors...
Namespace for ISIS/Bullet specific routines.
Definition: Apollo.h:31
Process cubes by line.
ProcessByBrick()
Constructs a ProcessByBrick object.
void SetWrap(bool wrap)
This wrapping option only applys when there are two or more input cubes.
IO Handler for Isis Cubes.
Definition: Cube.h:170