Isis Developer Reference
ProcessByTile.h
Go to the documentation of this file.
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:
43 bool p_tileSizeSet;
44 int p_tileSamples;
45 int p_tileLines;
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) {
75 SetBricks(InPlace);
76 //SetBrickSizesForProcessCubeInPlace();
78 }
79
85 template <typename Functor>
86 void ProcessCube(const Functor & funct, bool threaded = true) {
87
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
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.
Definition ProcessByBrick.h:83
void ProcessCubeInPlace(const Functor &functor, bool threaded=true)
Operate over a single cube (either input or output).
Definition ProcessByBrick.h:167
void ProcessCubes(const Functor &functor, bool threaded=true)
Operate over an arbitrary number of input cubes given an arbitrary number of output cubes.
Definition ProcessByBrick.h:243
void VerifyCubes(IOCubes cn)
Verifies the dimensions of the input/output cubes.
Definition ProcessByBrick.cpp:120
void ProcessCube(const Functor &functor, bool threaded=true)
Operate over a single input cube creating a separate output cube.
Definition ProcessByBrick.h:204
IOCubes
Definition ProcessByBrick.h:91
@ InputOutput
Definition ProcessByBrick.h:92
@ InputOutputList
Definition ProcessByBrick.h:93
@ InPlace
Definition ProcessByBrick.h:91
Process cubes by tile.
Definition ProcessByTile.h:40
void StartProcess(void funct(Buffer &in))
Starts the systematic processing of the input cube by moving an arbitrary shaped tile through the cub...
Definition ProcessByTile.cpp:63
void SetTileSize(const int ns, const int nl)
Sets the tile size.
Definition ProcessByTile.cpp:20
ProcessByTile()
Constructs a ProcessByTile object.
Definition ProcessByTile.h:50
void ProcessCubeInPlace(const Functor &funct, bool threaded=true)
Definition ProcessByTile.h:73
void Finalize()
Cleans up by closing cubes and freeing memory.
Definition ProcessByTile.cpp:110
void ProcessCubes(const Functor &funct, bool threaded=true)
Definition ProcessByTile.h:101
~ProcessByTile()
Destroys the ProcessByTile object.
Definition ProcessByTile.h:55
void ProcessCube(const Functor &funct, bool threaded=true)
Definition ProcessByTile.h:86
void EndProcess()
End the processing sequence and cleans up by closing cubes, freeing memory, etc.
Definition ProcessByTile.cpp:101
This is free and unencumbered software released into the public domain.
Definition Apollo.h:16