VTK  9.3.0
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
15#ifndef vtkDemandDrivenPipeline_h
16#define vtkDemandDrivenPipeline_h
17
18#include "vtkCommonExecutionModelModule.h" // For export macro
19#include "vtkExecutive.h"
20
21VTK_ABI_NAMESPACE_BEGIN
23class vtkDataArray;
25class vtkDemandDrivenPipelineInternals;
26class vtkFieldData;
27class vtkInformation;
32
39
40class VTKCOMMONEXECUTIONMODEL_EXPORT vtkDemandDrivenPipeline : public vtkExecutive
41{
42public:
45 void PrintSelf(ostream& os, vtkIndent indent) override;
46
52 vtkInformation* request, vtkInformationVector** inInfo, vtkInformationVector* outInfo) override;
53
58 vtkInformationVector* outInfoVec, int requestFromOutputPort, vtkMTimeType* mtime) override;
59
61
65 vtkTypeBool Update() override;
66 vtkTypeBool Update(int port) override;
68
70
73 vtkGetMacro(PipelineMTime, vtkMTimeType);
75
80 virtual int SetReleaseDataFlag(int port, vtkTypeBool n);
81
86
90 virtual int UpdatePipelineMTime();
91
97 int UpdateDataObject() override;
98
102 int UpdateInformation() override;
103
109 virtual int UpdateData(int outputPort);
110
116
122
128
135
142
150
156 static vtkDataObject* NewDataObject(const char* type);
157
158protected:
161
162 // Helper methods to send requests to the algorithm.
163 virtual int ExecuteDataObject(
164 vtkInformation* request, vtkInformationVector** inInfo, vtkInformationVector* outInfo);
166 vtkInformation* request, vtkInformationVector** inInfo, vtkInformationVector* outInfo);
167 virtual int ExecuteData(
168 vtkInformation* request, vtkInformationVector** inInfo, vtkInformationVector* outInfo);
169
170 // Reset the pipeline update values in the given output information object.
172
173 // Check whether the data object in the pipeline information for an
174 // output port exists and has a valid type.
175 virtual int CheckDataObject(int port, vtkInformationVector* outInfo);
176
177 // Input connection validity checkers.
182 virtual int InputTypeIsValid(int port, int index, vtkInformationVector**);
185 virtual int InputFieldsAreValid(int port, int index, vtkInformationVector**);
186
187 // Field existence checkers.
191
192 // Input port information checkers.
193 int InputIsOptional(int port);
194 int InputIsRepeatable(int port);
195
196 // Decide whether the output data need to be generated.
197 virtual int NeedToExecuteData(
198 int outputPort, vtkInformationVector** inInfoVec, vtkInformationVector* outInfoVec);
199
200 // Handle before/after operations for ExecuteData method.
201 virtual void ExecuteDataStart(
202 vtkInformation* request, vtkInformationVector** inInfoVec, vtkInformationVector* outInfoVec);
203 virtual void ExecuteDataEnd(
204 vtkInformation* request, vtkInformationVector** inInfoVec, vtkInformationVector* outInfoVec);
206 vtkInformation* request, vtkInformationVector** inInfoVec, vtkInformationVector* outInfoVec);
207
208 // Largest MTime of any algorithm on this executive or preceding
209 // executives.
211
212 // Time when information or data were last generated.
216
218
222
223private:
225 void operator=(const vtkDemandDrivenPipeline&) = delete;
226};
227
228VTK_ABI_NAMESPACE_END
229#endif
Abstract superclass for all arrays.
Executive supporting composite datasets.
abstract superclass for arrays of numeric data
general representation of visualization data
represent and manipulate attribute data in a dataset
Executive supporting on-demand execution.
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)
Superclass for all pipeline executives in VTK.
represent and manipulate fields of data
a simple class to control print indentation
Definition vtkIndent.h:29
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
vtkTypeUInt32 vtkMTimeType
Definition vtkType.h:270