VTK  9.6.20260409
vtkDemandDrivenPipeline.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
46
47#ifndef vtkDemandDrivenPipeline_h
48#define vtkDemandDrivenPipeline_h
49
50#include "vtkCommonExecutionModelModule.h" // For export macro
51#include "vtkExecutive.h"
52#include "vtkWrappingHints.h" // For VTK_MARSHALAUTO
53
54VTK_ABI_NAMESPACE_BEGIN
56class vtkDataArray;
58class vtkDemandDrivenPipelineInternals;
59class vtkFieldData;
60class vtkInformation;
65
94
95class VTKCOMMONEXECUTIONMODEL_EXPORT VTK_MARSHALAUTO vtkDemandDrivenPipeline : public vtkExecutive
96{
97public:
100 void PrintSelf(ostream& os, vtkIndent indent) override;
101
107 vtkInformation* request, vtkInformationVector** inInfo, vtkInformationVector* outInfo) override;
108
113 vtkInformationVector* outInfoVec, int requestFromOutputPort, vtkMTimeType* mtime) override;
114
116
120 vtkTypeBool Update() override;
121 vtkTypeBool Update(int port) override;
123
125
130
135 virtual int SetReleaseDataFlag(int port, vtkTypeBool n);
136
141
145 virtual int UpdatePipelineMTime();
146
152 int UpdateDataObject() override;
153
157 int UpdateInformation() override;
158
164 virtual int UpdateData(int outputPort);
165
171
177
183
190
197
205
211 static vtkDataObject* NewDataObject(const char* type);
212
213protected:
216
217 // Helper methods to send requests to the algorithm.
218 virtual int ExecuteDataObject(
219 vtkInformation* request, vtkInformationVector** inInfo, vtkInformationVector* outInfo);
221 vtkInformation* request, vtkInformationVector** inInfo, vtkInformationVector* outInfo);
222 virtual int ExecuteData(
223 vtkInformation* request, vtkInformationVector** inInfo, vtkInformationVector* outInfo);
224
225 // Reset the pipeline update values in the given output information object.
227
228 // Check whether the data object in the pipeline information for an
229 // output port exists and has a valid type.
230 virtual int CheckDataObject(int port, vtkInformationVector* outInfo);
231
232 // Input connection validity checkers.
237 virtual int InputTypeIsValid(int port, int index, vtkInformationVector**);
240 virtual int InputFieldsAreValid(int port, int index, vtkInformationVector**);
241
242 // Field existence checkers.
246
247 // Input port information checkers.
248 int InputIsOptional(int port);
249 int InputIsRepeatable(int port);
250
251 // Decide whether the output data need to be generated.
252 virtual int NeedToExecuteData(
253 int outputPort, vtkInformationVector** inInfoVec, vtkInformationVector* outInfoVec);
254
255 // Handle before/after operations for ExecuteData method.
256 virtual void ExecuteDataStart(
257 vtkInformation* request, vtkInformationVector** inInfoVec, vtkInformationVector* outInfoVec);
258 virtual void ExecuteDataEnd(
259 vtkInformation* request, vtkInformationVector** inInfoVec, vtkInformationVector* outInfoVec);
261 vtkInformation* request, vtkInformationVector** inInfoVec, vtkInformationVector* outInfoVec);
262
263 // Largest MTime of any algorithm on this executive or preceding
264 // executives.
266
267 // Time when information or data were last generated.
271
273
277
278private:
280 void operator=(const vtkDemandDrivenPipeline&) = delete;
281};
282
283VTK_ABI_NAMESPACE_END
284#endif
Abstract superclass for all arrays.
general representation of visualization data
represent and manipulate attribute data in a dataset
void ResetPipelineInformation(int, vtkInformation *) override
int ComputePipelineMTime(vtkInformation *request, vtkInformationVector **inInfoVec, vtkInformationVector *outInfoVec, int requestFromOutputPort, vtkMTimeType *mtime) override
Implement the pipeline modified time request.
int UpdateInformation() override
Bring the output information up to date.
int InputIsOptional(int port)
virtual int UpdatePipelineMTime()
Bring the PipelineMTime up to date.
int InputCountIsValid(int port, vtkInformationVector **)
virtual void MarkOutputsGenerated(vtkInformation *request, vtkInformationVector **inInfoVec, vtkInformationVector *outInfoVec)
virtual int UpdateData(int outputPort)
Bring the output data up to date.
vtkTypeBool ProcessRequest(vtkInformation *request, vtkInformationVector **inInfo, vtkInformationVector *outInfo) override
Generalized interface for asking the executive to fulfill update requests.
virtual int ExecuteInformation(vtkInformation *request, vtkInformationVector **inInfo, vtkInformationVector *outInfo)
static vtkDataObject * NewDataObject(const char *type)
Create (New) and return a data object of the given type.
int InputTypeIsValid(vtkInformationVector **)
virtual int ExecuteData(vtkInformation *request, vtkInformationVector **inInfo, vtkInformationVector *outInfo)
int ArrayIsValid(vtkAbstractArray *array, vtkInformation *field)
int InputFieldsAreValid(vtkInformationVector **)
virtual int CheckDataObject(int port, vtkInformationVector *outInfo)
static vtkDemandDrivenPipeline * New()
virtual void ExecuteDataStart(vtkInformation *request, vtkInformationVector **inInfoVec, vtkInformationVector *outInfoVec)
virtual void ExecuteDataEnd(vtkInformation *request, vtkInformationVector **inInfoVec, vtkInformationVector *outInfoVec)
virtual vtkTypeBool GetReleaseDataFlag(int port)
Get whether the given output port releases data when it is consumed.
vtkTypeBool Update() override
Bring the algorithm's outputs up-to-date.
int InputCountIsValid(vtkInformationVector **)
int FieldArrayExists(vtkFieldData *data, vtkInformation *field)
virtual int SetReleaseDataFlag(int port, vtkTypeBool n)
Set whether the given output port releases data when it is consumed.
vtkTypeBool Update(int port) override
Bring the algorithm's outputs up-to-date.
virtual int InputTypeIsValid(int port, int index, vtkInformationVector **)
int InputTypeIsValid(int port, vtkInformationVector **)
virtual int NeedToExecuteData(int outputPort, vtkInformationVector **inInfoVec, vtkInformationVector *outInfoVec)
virtual int InputFieldsAreValid(int port, int index, vtkInformationVector **)
virtual int ExecuteDataObject(vtkInformation *request, vtkInformationVector **inInfo, vtkInformationVector *outInfo)
int UpdateDataObject() override
Bring the output data object's existence up to date.
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
int InputFieldsAreValid(int port, vtkInformationVector **)
~vtkDemandDrivenPipeline() override
int DataSetAttributeExists(vtkDataSetAttributes *dsa, vtkInformation *field)
int InputIsRepeatable(int port)
Represents and manipulates a collection of data arrays.
a simple class to control print indentation
Definition vtkIndent.h:108
Key for integer values in vtkInformation.
Key for vector-of-keys values.
Key for pointer to pointer.
Key for unsigned long values in vtkInformation.
Store zero or more vtkInformation instances.
Store vtkAlgorithm input/output information.
record modification and/or execution time
static vtkInformationRequestKey * REQUEST_DATA_NOT_GENERATED()
Key defining a request to mark outputs that will NOT be generated during a REQUEST_DATA.
static vtkInformationIntegerKey * RELEASE_DATA()
Key to specify in pipeline information the request that data be released after it is used.
static vtkInformationIntegerKey * DATA_NOT_GENERATED()
Key to store a mark for an output that will not be generated.
static vtkInformationRequestKey * REQUEST_DATA_OBJECT()
Key defining a request to make sure the output data objects exist.
static vtkInformationRequestKey * REQUEST_INFORMATION()
Key defining a request to make sure the output information is up to date.
static vtkInformationRequestKey * REQUEST_DATA()
Key defining a request to make sure the output data are up to date.
int vtkTypeBool
Definition vtkABI.h:64
#define vtkDataArray
vtkTypeUInt32 vtkMTimeType
Definition vtkType.h:318
#define VTK_MARSHALAUTO