Isis 3 Programmer Reference
ProcessByTile.h
1#ifndef ProcessByTile_h
2#define ProcessByTile_h
8/* SPDX-License-Identifier: CC0-1.0 */
9#include "ProcessByBrick.h"
10#include "Buffer.h"
11
12namespace Isis {
41
42 private:
46
47 public:
48
51 p_tileSizeSet = false;
52 };
53
56
57 void SetTileSize(const int ns, const int nl);
58
59 void StartProcess(void funct(Buffer &in));
60 void StartProcess(void funct(Buffer &in, Buffer &out));
61
62 void StartProcess(void funct(std::vector<Buffer *> &in,
63 std::vector<Buffer *> &out));
64 void EndProcess();
65 void Finalize();
66
72 template <typename Functor>
73 void ProcessCubeInPlace(const Functor & funct, bool threaded = true) {
74 VerifyCubes(InPlace);
75 SetBricks(InPlace);
76 //SetBrickSizesForProcessCubeInPlace();
78 }
79
85 template <typename Functor>
86 void ProcessCube(const Functor & funct, bool threaded = true) {
87
88 VerifyCubes(InputOutput) ;
89 SetBricks(InputOutput);
90
91 //SetBrickSizesForProcessCube();
92 ProcessByBrick::ProcessCube(funct, threaded);
93 }
94
100 template <typename Functor>
101 void ProcessCubes(const Functor & funct, bool threaded = true) {
102
103 VerifyCubes(InputOutputList);
104 SetBricks(InputOutputList);
105 //SetBrickSizesForProcessCubes();
106 ProcessByBrick::ProcessCubes(funct, threaded);
107 }
108
109 private:
110 void SetBricks(IOCubes cn);
111 void SetBrickSizesForProcessCubeInPlace();
112 void SetBrickSizesForProcessCube();
113 void SetBrickSizesForProcessCubes();
114 };
115};
116
117#endif
Buffer for reading and writing cube data.
Definition Buffer.h:53
Process cubes by brick.
void ProcessCubeInPlace(const Functor &functor, bool threaded=true)
Operate over a single cube (either input or output).
void ProcessCubes(const Functor &functor, bool threaded=true)
Operate over an arbitrary number of input cubes given an arbitrary number of output cubes.
void VerifyCubes(IOCubes cn)
Verifies the dimensions of the input/output cubes.
void ProcessCube(const Functor &functor, bool threaded=true)
Operate over a single input cube creating a separate output cube.
Process cubes by tile.
void StartProcess(void funct(Buffer &in))
Starts the systematic processing of the input cube by moving an arbitrary shaped tile through the cub...
void SetTileSize(const int ns, const int nl)
Sets the tile size.
ProcessByTile()
Constructs a ProcessByTile object.
void ProcessCubeInPlace(const Functor &funct, bool threaded=true)
void Finalize()
Cleans up by closing cubes and freeing memory.
void ProcessCubes(const Functor &funct, bool threaded=true)
int p_tileSamples
Number of samples in the tile.
~ProcessByTile()
Destroys the ProcessByTile object.
void ProcessCube(const Functor &funct, bool threaded=true)
int p_tileLines
Number of lines in the tile.
void EndProcess()
End the processing sequence and cleans up by closing cubes, freeing memory, etc.
bool p_tileSizeSet
Indicates whether the tile size has been set.
This is free and unencumbered software released into the public domain.
Definition Apollo.h:16