VTK  9.3.20240329
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
129 #ifndef vtkStreamingDemandDrivenPipeline_h
130 #define vtkStreamingDemandDrivenPipeline_h
131 
132 #include "vtkCommonExecutionModelModule.h" // For export macro
133 #include "vtkDemandDrivenPipeline.h"
134 #include "vtkWrappingHints.h" // For VTK_MARSHALAUTO
135 
136 #define VTK_UPDATE_EXTENT_COMBINE 1
137 #define VTK_UPDATE_EXTENT_REPLACE 2
138 
139 VTK_ABI_NAMESPACE_BEGIN
150 
151 class VTKCOMMONEXECUTIONMODEL_EXPORT VTK_MARSHALAUTO vtkStreamingDemandDrivenPipeline
152  : public vtkDemandDrivenPipeline
153 {
154 public:
157  void PrintSelf(ostream& os, vtkIndent indent) override;
158 
164  vtkInformation* request, vtkInformationVector** inInfo, vtkInformationVector* outInfo) override;
165 
167 
170  vtkTypeBool Update() override;
171  vtkTypeBool Update(int port) override;
174 
197  virtual vtkTypeBool Update(int port, vtkInformationVector* requests);
198 
204  int PropagateUpdateExtent(int outputPort);
205 
207 
211  int PropagateTime(int outputPort);
212  int UpdateTimeDependentInformation(int outputPort);
214 
216 
221  static int SetWholeExtent(vtkInformation*, int extent[6]);
222  static void GetWholeExtent(vtkInformation*, int extent[6]);
225 
227 
235  int SetRequestExactExtent(int port, int flag);
238 
244 
255 
262 
284 
291 
297 
305 
311 
317 
323 
329 
337 
343 
357 
362  {
367  NO_PRIOR_TEMPORAL_ACCESS_CONTINUE = 1,
368 
374  NO_PRIOR_TEMPORAL_ACCESS_RESET = 2
375  };
376 
378 
381  static void GetUpdateExtent(vtkInformation*, int extent[6]);
385 
394 
395 protected:
398 
410 
411  // Does the time request correspond to what is in the data?
412  // Returns 0 if yes, 1 otherwise.
413  virtual int NeedToExecuteBasedOnTime(vtkInformation* outInfo, vtkDataObject* dataObject);
414 
415  // Setup default information on the output after the algorithm
416  // executes information.
418  vtkInformationVector* outInfoVec) override;
419 
420  // Copy information for the given request.
422  vtkInformationVector** inInfoVec, vtkInformationVector* outInfoVec) override;
423 
424  // Helper to check output information before propagating it to inputs.
426  int outputPort, vtkInformationVector** inInfoVec, vtkInformationVector* outInfoVec);
427 
428  // Override this check to account for update extent.
430  int outputPort, vtkInformationVector** inInfoVec, vtkInformationVector* outInfoVec) override;
431 
432  // Override these to handle the continue-executing option.
434  vtkInformationVector* outInfoVec) override;
436  vtkInformationVector* outInfoVec) override;
437 
438  // Override this to handle cropping and ghost levels.
440  vtkInformationVector* outInfoVec) override;
441 
442  // Remove update/whole extent when resetting pipeline information.
444 
445  // Flag for when an algorithm returns with CONTINUE_EXECUTING in the
446  // request.
448 
453 
454  // did the most recent PUE do anything ?
456 
457 private:
459  void operator=(const vtkStreamingDemandDrivenPipeline&) = delete;
460 };
461 
462 VTK_ABI_NAMESPACE_END
463 #endif
general representation of visualization data
Executive supporting on-demand execution.
a simple class to control print indentation
Definition: vtkIndent.h:108
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.
Executive supporting partial updates.
static vtkStreamingDemandDrivenPipeline * New()
void MarkOutputsGenerated(vtkInformation *request, vtkInformationVector **inInfoVec, vtkInformationVector *outInfoVec) override
static int * GetWholeExtent(vtkInformation *)
Set/Get the whole extent of an output port.
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
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.
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 vtkInformationIntegerKey * NO_PRIOR_TEMPORAL_ACCESS()
Key to tell whether the data has all its time steps generated.
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...
void ExecuteDataStart(vtkInformation *request, vtkInformationVector **inInfoVec, vtkInformationVector *outInfoVec) override
vtkTypeBool Update() override
Bring the outputs up-to-date.
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 * COMBINED_UPDATE_EXTENT()
Key for combining the update extents requested by all consumers, so that the final extent that is pro...
static vtkInformationDoubleVectorKey * TIME_RANGE()
Key to store available time range for continuous sources.
static vtkInformationIntegerKey * EXACT_EXTENT()
Key to specify the request for exact extent in pipeline information.
static vtkInformationIntegerKey * UPDATE_NUMBER_OF_GHOST_LEVELS()
static vtkInformationIntegerKey * UPDATE_PIECE_NUMBER()
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 vtkInformationRequestKey * REQUEST_UPDATE_TIME()
Key defining a request to propagate the update extent upstream.
static vtkInformationRequestKey * REQUEST_UPDATE_EXTENT()
Key defining a request to propagate the update extent upstream.
static vtkInformationDoubleKey * UPDATE_TIME_STEP()
Update time steps requested by the pipeline.
static vtkInformationDoubleVectorKey * BOUNDS()
key to record the bounds of a dataset.
static vtkInformationDoubleVectorKey * TIME_STEPS()
Key to store available time steps.
static vtkInformationIntegerKey * UPDATE_EXTENT_INITIALIZED()
Keys to store an update request in pipeline information.
static vtkInformationIntegerVectorKey * UPDATE_EXTENT()
static vtkInformationDoubleKey * PREVIOUS_UPDATE_TIME_STEP()
Keep track of the update time request corresponding to the previous executing.
static vtkInformationIntegerKey * TIME_DEPENDENT_INFORMATION()
Whether there are time dependent meta information if there is, the pipeline will perform two extra pa...
static vtkInformationIntegerKey * UPDATE_NUMBER_OF_PIECES()
static vtkInformationIntegerKey * CONTINUE_EXECUTING()
Key for an algorithm to store in a request to tell this executive to keep executing it.
@ direction
Definition: vtkX3D.h:260
@ port
Definition: vtkX3D.h:447
@ extent
Definition: vtkX3D.h:345
int vtkTypeBool
Definition: vtkABI.h:64
#define VTK_SIZEHINT(...)
#define VTK_MARSHALAUTO