VTK  9.1.0
vtkDemandDrivenPipeline.h
Go to the documentation of this file.
1/*=========================================================================
2
3 Program: Visualization Toolkit
4 Module: vtkDemandDrivenPipeline.h
5
6 Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
7 All rights reserved.
8 See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
9
10 This software is distributed WITHOUT ANY WARRANTY; without even
11 the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
12 PURPOSE. See the above copyright notice for more information.
13
14=========================================================================*/
33#ifndef vtkDemandDrivenPipeline_h
34#define vtkDemandDrivenPipeline_h
35
36#include "vtkCommonExecutionModelModule.h" // For export macro
37#include "vtkExecutive.h"
38
40class vtkDataArray;
42class vtkDemandDrivenPipelineInternals;
43class vtkFieldData;
44class vtkInformation;
49
56
57class VTKCOMMONEXECUTIONMODEL_EXPORT vtkDemandDrivenPipeline : public vtkExecutive
58{
59public:
62 void PrintSelf(ostream& os, vtkIndent indent) override;
63
69 vtkInformation* request, vtkInformationVector** inInfo, vtkInformationVector* outInfo) override;
70
75 vtkInformationVector* outInfoVec, int requestFromOutputPort, vtkMTimeType* mtime) override;
76
78
82 vtkTypeBool Update() override;
83 vtkTypeBool Update(int port) override;
85
87
90 vtkGetMacro(PipelineMTime, vtkMTimeType);
92
97 virtual int SetReleaseDataFlag(int port, int n);
98
102 virtual int GetReleaseDataFlag(int port);
103
107 virtual int UpdatePipelineMTime();
108
114 int UpdateDataObject() override;
115
119 int UpdateInformation() override;
120
126 virtual int UpdateData(int outputPort);
127
133
139
145
152
159
167
173 static vtkDataObject* NewDataObject(const char* type);
174
175protected:
178
179 // Helper methods to send requests to the algorithm.
180 virtual int ExecuteDataObject(
181 vtkInformation* request, vtkInformationVector** inInfo, vtkInformationVector* outInfo);
183 vtkInformation* request, vtkInformationVector** inInfo, vtkInformationVector* outInfo);
184 virtual int ExecuteData(
185 vtkInformation* request, vtkInformationVector** inInfo, vtkInformationVector* outInfo);
186
187 // Reset the pipeline update values in the given output information object.
189
190 // Check whether the data object in the pipeline information for an
191 // output port exists and has a valid type.
192 virtual int CheckDataObject(int port, vtkInformationVector* outInfo);
193
194 // Input connection validity checkers.
203
204 // Field existence checkers.
208
209 // Input port information checkers.
212
213 // Decide whether the output data need to be generated.
214 virtual int NeedToExecuteData(
215 int outputPort, vtkInformationVector** inInfoVec, vtkInformationVector* outInfoVec);
216
217 // Handle before/after operations for ExecuteData method.
218 virtual void ExecuteDataStart(
219 vtkInformation* request, vtkInformationVector** inInfoVec, vtkInformationVector* outInfoVec);
220 virtual void ExecuteDataEnd(
221 vtkInformation* request, vtkInformationVector** inInfoVec, vtkInformationVector* outInfoVec);
223 vtkInformation* request, vtkInformationVector** inInfoVec, vtkInformationVector* outInfoVec);
224
225 // Largest MTime of any algorithm on this executive or preceding
226 // executives.
228
229 // Time when information or data were last generated.
233
235
239
240private:
242 void operator=(const vtkDemandDrivenPipeline&) = delete;
243};
244
245#endif
Abstract superclass for all arrays.
Executive supporting composite datasets.
abstract superclass for arrays of numeric data
Definition: vtkDataArray.h:59
general representation of visualization data
Definition: vtkDataObject.h:69
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 int GetReleaseDataFlag(int port)
Get whether the given output port releases data when it is consumed.
virtual void ExecuteDataStart(vtkInformation *request, vtkInformationVector **inInfoVec, vtkInformationVector *outInfoVec)
virtual int SetReleaseDataFlag(int port, int n)
Set whether the given output port releases data when it is consumed.
virtual void ExecuteDataEnd(vtkInformation *request, vtkInformationVector **inInfoVec, vtkInformationVector *outInfoVec)
vtkTypeBool Update() override
Bring the algorithm's outputs up-to-date.
int InputCountIsValid(vtkInformationVector **)
int FieldArrayExists(vtkFieldData *data, vtkInformation *field)
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.
Definition: vtkExecutive.h:56
represent and manipulate fields of data
Definition: vtkFieldData.h:64
a simple class to control print indentation
Definition: vtkIndent.h:43
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
Definition: vtkTimeStamp.h:42
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.
@ field
Definition: vtkX3D.h:183
@ port
Definition: vtkX3D.h:453
@ type
Definition: vtkX3D.h:522
@ index
Definition: vtkX3D.h:252
@ data
Definition: vtkX3D.h:321
int vtkTypeBool
Definition: vtkABI.h:69
vtkTypeUInt32 vtkMTimeType
Definition: vtkType.h:287