VTK  9.4.20251007
vtkStreamingDemandDrivenPipeline.h
Go to the documentation of this file.
1// SPDX-FileCopyrightText: Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
2// SPDX-License-Identifier: BSD-3-Clause
19
20#ifndef vtkStreamingDemandDrivenPipeline_h
21#define vtkStreamingDemandDrivenPipeline_h
22
23#include "vtkCommonExecutionModelModule.h" // For export macro
25#include "vtkWrappingHints.h" // For VTK_MARSHALAUTO
26
27#define VTK_UPDATE_EXTENT_COMBINE 1
28#define VTK_UPDATE_EXTENT_REPLACE 2
29
30VTK_ABI_NAMESPACE_BEGIN
41
42class VTKCOMMONEXECUTIONMODEL_EXPORT VTK_MARSHALAUTO vtkStreamingDemandDrivenPipeline
44{
45public:
48 void PrintSelf(ostream& os, vtkIndent indent) override;
49
55 vtkInformation* request, vtkInformationVector** inInfo, vtkInformationVector* outInfo) override;
56
58
61 vtkTypeBool Update() override;
62 vtkTypeBool Update(int port) override;
65
88 virtual vtkTypeBool Update(int port, vtkInformationVector* requests);
89
95 int PropagateUpdateExtent(int outputPort);
96
98
102 int PropagateTime(int outputPort);
105
107
112 static int SetWholeExtent(vtkInformation*, int extent[6]);
113 static void GetWholeExtent(vtkInformation*, int extent[6]);
116
118
126 int SetRequestExactExtent(int port, int flag);
129
135
146
153
175
182
188
196
202
208
214
220
228
234
248
267
269
272 static void GetUpdateExtent(vtkInformation*, int extent[6]);
276
285
286protected:
289
301
302 // Does the time request correspond to what is in the data?
303 // Returns 0 if yes, 1 otherwise.
304 virtual int NeedToExecuteBasedOnTime(vtkInformation* outInfo, vtkDataObject* dataObject);
305
306 // Setup default information on the output after the algorithm
307 // executes information.
309 vtkInformationVector* outInfoVec) override;
310
311 // Copy information for the given request.
312 void CopyDefaultInformation(vtkInformation* request, int direction,
313 vtkInformationVector** inInfoVec, vtkInformationVector* outInfoVec) override;
314
315 // Helper to check output information before propagating it to inputs.
317 int outputPort, vtkInformationVector** inInfoVec, vtkInformationVector* outInfoVec);
318
319 // Override this check to account for update extent.
321 int outputPort, vtkInformationVector** inInfoVec, vtkInformationVector* outInfoVec) override;
322
323 // Override these to handle the continue-executing option.
325 vtkInformationVector* outInfoVec) override;
327 vtkInformationVector* outInfoVec) override;
328
329 // Override this to handle cropping and ghost levels.
331 vtkInformationVector* outInfoVec) override;
332
333 // Remove update/whole extent when resetting pipeline information.
334 void ResetPipelineInformation(int port, vtkInformation*) override;
335
336 // Flag for when an algorithm returns with CONTINUE_EXECUTING in the
337 // request.
339
344
345 // did the most recent PUE do anything ?
347
348private:
350 void operator=(const vtkStreamingDemandDrivenPipeline&) = delete;
351};
352
353VTK_ABI_NAMESPACE_END
354#endif
general representation of visualization data
a simple class to control print indentation
Definition vtkIndent.h:29
Key for double values in vtkInformation.
Key for vtkIdType values in vtkInformation.
Key for integer values in vtkInformation.
Iterates over keys of an information object.
Key for vtkObjectBase values.
Key for pointer to pointer.
Key for string values in vtkInformation.
Key for unsigned long values in vtkInformation.
Store zero or more vtkInformation instances.
Store vtkAlgorithm input/output information.
void MarkOutputsGenerated(vtkInformation *request, vtkInformationVector **inInfoVec, vtkInformationVector *outInfoVec) override
vtkTypeBool ProcessRequest(vtkInformation *request, vtkInformationVector **inInfo, vtkInformationVector *outInfo) override
Generalized interface for asking the executive to fulfill update requests.
static int GetUpdateGhostLevel(vtkInformation *)
Set/Get the update piece, update number of pieces, and update number of ghost levels for an output po...
virtual int NeedToExecuteBasedOnTime(vtkInformation *outInfo, vtkDataObject *dataObject)
int ExecuteInformation(vtkInformation *request, vtkInformationVector **inInfoVec, vtkInformationVector *outInfoVec) override
virtual vtkTypeBool Update(int port, vtkInformationVector *requests)
This method enables the passing of data requests to the algorithm to be used during execution (in add...
int PropagateTime(int outputPort)
Propagate time through the pipeline.
virtual vtkTypeBool UpdateWholeExtent()
Bring the outputs up-to-date.
vtkTypeBool Update(int port) override
Bring the outputs up-to-date.
virtual int VerifyOutputInformation(int outputPort, vtkInformationVector **inInfoVec, vtkInformationVector *outInfoVec)
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
static void GetUpdateExtent(vtkInformation *, int extent[6])
Get/Set the update extent for output ports that use 3D extents.
static int GetUpdatePiece(vtkInformation *)
Set/Get the update piece, update number of pieces, and update number of ghost levels for an output po...
void ResetPipelineInformation(int port, vtkInformation *) override
static vtkStreamingDemandDrivenPipeline * New()
int GetRequestExactExtent(int port)
This request flag indicates whether the requester can handle more data than requested for the given p...
static int * GetUpdateExtent(vtkInformation *)
Get/Set the update extent for output ports that use 3D extents.
NO_PRIOR_TEMPORAL_ACCESS_STATES
States that the information key NO_PRIOR_TEMPORAL_ACCESS can have.
@ NO_PRIOR_TEMPORAL_ACCESS_CONTINUE
Notifies that the current UPDATE_TIME_STEP() is to be integrated in the output of the current vtkAlgo...
@ NO_PRIOR_TEMPORAL_ACCESS_RESET
Notifies that the filter should reset its internal state.
int UpdateTimeDependentInformation(int outputPort)
Propagate time through the pipeline.
int PropagateUpdateExtent(int outputPort)
Propagate the update request from the given output port back through the pipeline.
void ExecuteDataEnd(vtkInformation *request, vtkInformationVector **inInfoVec, vtkInformationVector *outInfoVec) override
int NeedToExecuteData(int outputPort, vtkInformationVector **inInfoVec, vtkInformationVector *outInfoVec) override
void CopyDefaultInformation(vtkInformation *request, int direction, vtkInformationVector **inInfoVec, vtkInformationVector *outInfoVec) override
static void GetWholeExtent(vtkInformation *, int extent[6])
Set/Get the whole extent of an output port.
static int SetWholeExtent(vtkInformation *, int extent[6])
Set/Get the whole extent of an output port.
static int GetUpdateNumberOfPieces(vtkInformation *)
Set/Get the update piece, update number of pieces, and update number of ghost levels for an output po...
int SetRequestExactExtent(int port, int flag)
This request flag indicates whether the requester can handle more data than requested for the given p...
static int * GetWholeExtent(vtkInformation *)
Set/Get the whole extent of an output port.
static vtkInformationIntegerKey * NO_PRIOR_TEMPORAL_ACCESS()
Key to tell whether the data has all its time steps generated.
void ExecuteDataStart(vtkInformation *request, vtkInformationVector **inInfoVec, vtkInformationVector *outInfoVec) override
vtkTypeBool Update() override
Bring the outputs up-to-date.
static vtkInformationIntegerKey * UNRESTRICTED_UPDATE_EXTENT()
This is set if the update extent is not restricted to the whole extent, for sources that can generate...
static vtkInformationIntegerKey * UPDATE_PIECE_NUMBER()
static vtkInformationDoubleKey * UPDATE_TIME_STEP()
Update time steps requested by the pipeline.
static vtkInformationIntegerKey * TIME_DEPENDENT_INFORMATION()
Whether there are time dependent meta information if there is, the pipeline will perform two extra pa...
static vtkInformationRequestKey * REQUEST_TIME_DEPENDENT_INFORMATION()
Key defining a request to make sure the meta information is up to date.
static vtkInformationIntegerVectorKey * WHOLE_EXTENT()
Key to store the whole extent provided in pipeline information.
static vtkInformationIntegerVectorKey * UPDATE_EXTENT()
static vtkInformationIntegerKey * UPDATE_NUMBER_OF_PIECES()
static vtkInformationDoubleVectorKey * BOUNDS()
key to record the bounds of a dataset.
static vtkInformationDoubleVectorKey * TIME_RANGE()
Key to store available time range for continuous sources.
static vtkInformationIntegerKey * UPDATE_NUMBER_OF_GHOST_LEVELS()
static vtkInformationIntegerKey * UPDATE_EXTENT_INITIALIZED()
Keys to store an update request in pipeline information.
static vtkInformationIntegerVectorKey * COMBINED_UPDATE_EXTENT()
Key for combining the update extents requested by all consumers, so that the final extent that is pro...
static vtkInformationIntegerKey * CONTINUE_EXECUTING()
Key for an algorithm to store in a request to tell this executive to keep executing it.
static vtkInformationDoubleVectorKey * TIME_STEPS()
Key to store available time steps.
static vtkInformationRequestKey * REQUEST_UPDATE_EXTENT()
Key defining a request to propagate the update extent upstream.
static vtkInformationDoubleKey * PREVIOUS_UPDATE_TIME_STEP()
Keep track of the update time request corresponding to the previous executing.
static vtkInformationRequestKey * REQUEST_UPDATE_TIME()
Key defining a request to propagate the update extent upstream.
static vtkInformationIntegerKey * EXACT_EXTENT()
Key to specify the request for exact extent in pipeline information.
int vtkTypeBool
Definition vtkABI.h:64
#define VTK_SIZEHINT(...)
#define VTK_MARSHALAUTO