VTK  9.7.20260805
vtkAlgorithm.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
28
29#ifndef vtkAlgorithm_h
30#define vtkAlgorithm_h
31
32#include "vtkArrayComponents.h" // For enum
33#include "vtkCommonExecutionModelModule.h" // For export macro
34#include "vtkObject.h"
35#include "vtkWrappingHints.h" // For VTK_MARSHALMANUAL
36
37VTK_ABI_NAMESPACE_BEGIN
39class vtkAlgorithmInternals;
41class vtkCollection;
42class vtkDataArray;
43class vtkDataObject;
44class vtkExecutive;
45class vtkInformation;
52
53class VTKCOMMONEXECUTIONMODEL_EXPORT VTK_MARSHALMANUAL vtkAlgorithm : public vtkObject
54{
55public:
56 static vtkAlgorithm* New();
57 vtkTypeMacro(vtkAlgorithm, vtkObject);
58 void PrintSelf(ostream& os, vtkIndent indent) override;
59
86
92
98
104 virtual void SetExecutive(vtkExecutive* executive);
105
130 vtkInformation* request, vtkInformationVector** inInfo, vtkInformationVector* outInfo);
131
137 vtkInformation* request, vtkCollection* inInfo, vtkInformationVector* outInfo);
138
145 vtkInformationVector* outInfoVec, int requestFromOutputPort, vtkMTimeType* mtime);
146
154 virtual int ModifyRequest(vtkInformation* request, int when);
155
163
171
173
176 vtkGetObjectMacro(Information, vtkInformation);
179
184
189
191
194 bool UsesGarbageCollector() const override { return true; }
196
201
203
207 vtkSetMacro(AbortExecute, vtkTypeBool);
208 vtkGetMacro(AbortExecute, vtkTypeBool);
209 vtkBooleanMacro(AbortExecute, vtkTypeBool);
211
213
216 vtkGetMacro(Progress, double);
218
224 void UpdateProgress(double amount);
225
230
232
238 {
239 this->ContainerAlgorithm = containerAlg;
240 }
241 vtkAlgorithm* GetContainerAlgorithm() { return this->ContainerAlgorithm; }
243
245
252 vtkSetMacro(AbortOutput, bool);
253 vtkGetMacro(AbortOutput, bool);
254 vtkBooleanMacro(AbortOutput, bool);
256
258
270 void SetProgressShiftScale(double shift, double scale);
271 vtkGetMacro(ProgressShift, double);
272 vtkGetMacro(ProgressScale, double);
274
276
283 void SetProgressText(const char* ptext);
284 vtkGetStringMacro(ProgressText);
286
288
292 vtkGetMacro(ErrorCode, unsigned long);
294
295 // left public for performance since it is used in inner loops
296 std::atomic<vtkTypeBool> AbortExecute;
297
327
337
351
357
359
377 const char* name, int fieldAssociation, int component = vtkArrayComponents::AllComponents);
380
403 int idx, int port, int connection, int fieldAssociation, const char* name);
419 int idx, int port, int connection, int fieldAssociation, const char* name, int component);
421
423
438 int idx, int port, int connection, int fieldAssociation, int fieldAttributeType);
455 int idx, int port, int connection, int fieldAssociation, int fieldAttributeType, int component);
457
462 virtual void SetInputArrayToProcess(int idx, vtkInformation* info);
463
465
495 virtual void SetInputArrayToProcess(int idx, int port, int connection,
496 const char* fieldAssociation, const char* attributeTypeorName);
497 virtual void SetInputArrayToProcess(int idx, int port, int connection,
498 const char* fieldAssociation, const char* attributeTypeorName, const char* component);
500
505
517
522
523 // from here down are convenience methods that really are executive methods
524
529
535
540 vtkDataObject* GetInputDataObject(int port, int connection);
541
543
556 virtual void SetInputConnection(int port, vtkAlgorithmOutput* input);
559
561
570 virtual void AddInputConnection(int port, vtkAlgorithmOutput* input);
573
583 virtual void RemoveInputConnection(int port, vtkAlgorithmOutput* input);
584
588 virtual void RemoveInputConnection(int port, int idx);
589
593 virtual void RemoveAllInputConnections(int port);
594
603 virtual void SetInputDataObject(int port, vtkDataObject* data);
604 virtual void SetInputDataObject(vtkDataObject* data) { this->SetInputDataObject(0, data); }
605
611 virtual void AddInputDataObject(int port, vtkDataObject* data);
612 virtual void AddInputDataObject(vtkDataObject* data) { this->AddInputDataObject(0, data); }
613
622
627
632
637
642 vtkAlgorithm* GetInputAlgorithm(int port, int index, int& algPort);
643
647 vtkAlgorithm* GetInputAlgorithm(int port, int index);
648
653
658 vtkExecutive* GetInputExecutive(int port, int index);
659
664
673 vtkInformation* GetInputInformation(int port, int index);
674
679
688
690
694 virtual bool Update(int port);
696 virtual bool Update();
698
721 virtual vtkTypeBool Update(int port, vtkInformationVector* requests);
722
729
736 virtual int UpdatePiece(
737 int piece, int numPieces, int ghostLevels, const int extents[6] = nullptr);
738
745 virtual int UpdateExtent(const int extents[6]);
746
754 virtual int UpdateTimeStep(double time, int piece = -1, int numPieces = 1, int ghostLevels = 0,
755 const int extents[6] = nullptr);
756
761 virtual bool UpdateInformation();
762
766 virtual bool UpdateDataObject();
767
771 virtual void PropagateUpdateExtent();
772
777 virtual bool UpdateWholeExtent();
778
783 void ConvertTotalInputToPortConnection(int ind, int& port, int& conn);
784
785 //======================================================================
786 // The following block of code is to support old style VTK applications. If
787 // you are using these calls there are better ways to do it in the new
788 // pipeline
789 //======================================================================
790
792
800
801 //========================================================================
802
804
811 int UpdateExtentIsEmpty(vtkInformation* pinfo, int extentType);
813
819
821
826 int* GetUpdateExtent() VTK_SIZEHINT(6) { return this->GetUpdateExtent(0); }
827 int* GetUpdateExtent(int port) VTK_SIZEHINT(6);
828 void GetUpdateExtent(int& x0, int& x1, int& y0, int& y1, int& z0, int& z1)
829 {
830 this->GetUpdateExtent(0, x0, x1, y0, y1, z0, z1);
831 }
832 void GetUpdateExtent(int port, int& x0, int& x1, int& y0, int& y1, int& z0, int& z1);
833 void GetUpdateExtent(int extent[6]) { this->GetUpdateExtent(0, extent); }
834 void GetUpdateExtent(int port, int extent[6]);
836
838
843 int GetUpdatePiece() { return this->GetUpdatePiece(0); }
844 int GetUpdatePiece(int port);
847 int GetUpdateGhostLevel() { return this->GetUpdateGhostLevel(0); }
848 int GetUpdateGhostLevel(int port);
850
852
862 vtkGetObjectMacro(ProgressObserver, vtkProgressObserver);
864
866
879
885
886protected:
888 ~vtkAlgorithm() override;
889
890 // Time stamp to store the last time any filter was aborted.
891 static vtkTimeStamp LastAbortTime;
892
893 // Time stamp to store the last time this filter checked for an
894 // abort.
896
897 // Keys used to indicate that input/output port information has been
898 // filled.
900
901 // Arbitrary extra information associated with this algorithm
903
909
915 virtual int FillInputPortInformation(int port, vtkInformation* info);
916
922 virtual int FillOutputPortInformation(int port, vtkInformation* info);
923
927 virtual void SetNumberOfInputPorts(int n);
928
932 virtual void SetNumberOfOutputPorts(int n);
933
934 // Helper methods to check input/output port index ranges.
935 int InputPortIndexInRange(int index, const char* action);
936 int OutputPortIndexInRange(int index, const char* action);
937
943
945
953 int GetInputArrayAssociation(int idx, int connection, vtkInformationVector** inputVector);
956
977
979
985 int idx, vtkInformationVector** inputVector, int& association);
987
989
997 vtkDataArray* GetInputArrayToProcess(int idx, int connection, vtkInformationVector** inputVector);
999 int idx, int connection, vtkInformationVector** inputVector, int& association);
1001 vtkDataArray* GetInputArrayToProcess(int idx, vtkDataObject* input, int& association);
1003
1005
1011 int idx, vtkInformationVector** inputVector, int& association);
1013
1015
1024 int idx, int connection, vtkInformationVector** inputVector);
1026 int idx, int connection, vtkInformationVector** inputVector, int& association);
1030
1032
1062 vtkInformationVector** inputVector, int& association,
1063 int requestedComponent = vtkArrayComponents::Requested);
1065 int requestedComponent = vtkArrayComponents::Requested);
1066 template <typename ArrayType, typename... Params>
1068 {
1069 auto abstractArray = this->GetInputArray(std::forward<Params>(params)...);
1070 auto* castArray = ArrayType::SafeDownCast(abstractArray.GetPointer());
1071 auto result = vtkSmartPointer<ArrayType>(castArray);
1072 return result;
1073 }
1074
1075
1084
1092
1094
1098 vtkSetMacro(ErrorCode, unsigned long);
1099 unsigned long ErrorCode;
1101
1102 // Progress/Update handling
1103 double Progress;
1105
1106 // Garbage collection support.
1108
1109 // executive methods below
1110
1117 virtual void SetNthInputConnection(int port, int index, vtkAlgorithmOutput* input);
1118
1125 virtual void SetNumberOfInputConnections(int port, int n);
1126
1127 static vtkExecutive* DefaultExecutivePrototype;
1128
1136 {
1137 this->SetInputDataObject(port, input);
1138 }
1140 {
1141 this->AddInputDataObject(port, input);
1142 }
1143
1144 vtkProgressObserver* ProgressObserver;
1145
1146private:
1147 vtkExecutive* Executive;
1148 vtkInformationVector* InputPortInformation;
1149 vtkInformationVector* OutputPortInformation;
1150 vtkAlgorithmInternals* AlgorithmInternal;
1151 static void ConnectionAdd(
1152 vtkAlgorithm* producer, int producerPort, vtkAlgorithm* consumer, int consumerPort);
1153 static void ConnectionRemove(
1154 vtkAlgorithm* producer, int producerPort, vtkAlgorithm* consumer, int consumerPort);
1155 static void ConnectionRemoveAllInput(vtkAlgorithm* consumer, int port);
1156 static void ConnectionRemoveAllOutput(vtkAlgorithm* producer, int port);
1157
1158 vtkAlgorithm(const vtkAlgorithm&) = delete;
1159 void operator=(const vtkAlgorithm&) = delete;
1160
1161 double ProgressShift;
1162 double ProgressScale;
1163 vtkAlgorithm* ContainerAlgorithm;
1164 bool AbortOutput;
1165};
1166
1167VTK_ABI_NAMESPACE_END
1168#endif
Abstract superclass for all arrays.
Proxy object to connect input/output ports.
vtkAlgorithmOutput * GetInputConnection(int port, int index)
Get the algorithm output port connected to an input port.
int GetUpdatePiece(int port)
These functions return the update extent for output ports that use piece extents.
void UpdateProgress(double amount)
Update the progress of the process object.
vtkInformation * GetInputArrayInformation(int idx)
Get the info object for the specified input array to this algorithm.
int GetInputArrayAssociation(int idx, vtkInformationVector **inputVector)
Get the association of the actual data array for the input array specified by idx,...
virtual void RemoveInputConnection(int port, vtkAlgorithmOutput *input)
Remove a connection from the given input port index.
vtkDataArray * GetInputArrayToProcess(int idx, int connection, vtkInformationVector **inputVector)
Filters that have multiple connections on one port can use this signature.
vtkAbstractArray * GetInputAbstractArrayToProcess(int idx, vtkInformationVector **inputVector)
Get the actual data array for the input array specified by idx, this is only reasonable during the RE...
virtual void SetNumberOfOutputPorts(int n)
Set the number of output ports provided by the algorithm.
virtual void SetInputArrayToProcess(int idx, int port, int connection, const char *fieldAssociation, const char *attributeTypeorName, const char *component)
Set the input data arrays that this algorithm will process.
virtual void SetNthInputConnection(int port, int index, vtkAlgorithmOutput *input)
Replace the Nth connection on the given input port.
int GetUpdateGhostLevel()
These functions return the update extent for output ports that use piece extents.
void GetUpdateExtent(int port, int &x0, int &x1, int &y0, int &y1, int &z0, int &z1)
These functions return the update extent for output ports that use 3D extents.
vtkInformation * GetOutputPortInformation(int port)
Get the information object associated with an output port.
int GetInputArrayAssociation(int idx, vtkDataObject *input)
Filters that have multiple connections on one port can use this signature.
virtual void AddInputDataObject(vtkDataObject *data)
vtkSmartPointer< vtkAbstractArray > GetInputArray(int idx, vtkDataObject *input, int &association, int requestedComponent=vtkArrayComponents::Requested)
Get an array from the input at index idx.
virtual void SetInputDataObject(vtkDataObject *data)
int UpdateExtentIsEmpty(vtkInformation *pinfo, int extentType)
This detects when the UpdateExtent will generate no data This condition is satisfied when the UpdateE...
int UpdateExtentIsEmpty(vtkInformation *pinfo, vtkDataObject *output)
This detects when the UpdateExtent will generate no data This condition is satisfied when the UpdateE...
virtual void SetInputArrayToProcess(int idx, int port, int connection, int fieldAssociation, const char *name, int component)
This method variant also accepts a component to consider rather than the entire tuple.
void GetUpdateExtent(int extent[6])
These functions return the update extent for output ports that use 3D extents.
vtkInformation * GetInputArrayFieldInformation(int idx, vtkInformationVector **inputVector)
This method takes in an index (as specified in SetInputArrayToProcess) and a pipeline information vec...
int GetUpdatePiece()
These functions return the update extent for output ports that use piece extents.
vtkInformation * Information
vtkAlgorithm * GetContainerAlgorithm()
Set/get a Container algorithm for this algorithm.
virtual vtkTypeBool Update(vtkInformation *requests)
Convenience method to update an algorithm after passing requests to its first output port.
virtual int FillOutputPortInformation(int port, vtkInformation *info)
Fill the output port information objects for this algorithm.
void SetContainerAlgorithm(vtkAlgorithm *containerAlg)
Set/get a Container algorithm for this algorithm.
vtkDataObject * GetOutputDataObject(int port)
Get the data object that will contain the algorithm output for the given port.
vtkExecutive * GetInputExecutive()
Equivalent to GetInputExecutive(0, 0)
void SetNoPriorTemporalAccessInformationKey()
Set to all output ports of this algorithm the information key vtkStreamingDemandDrivenPipeline::NO_PR...
vtkExecutive * GetInputExecutive(int port, int index)
Returns the executive associated with a particular input connection.
virtual void RemoveAllInputConnections(int port)
Removes all input connections.
virtual int ComputePipelineMTime(vtkInformation *request, vtkInformationVector **inInfoVec, vtkInformationVector *outInfoVec, int requestFromOutputPort, vtkMTimeType *mtime)
A special version of ProcessRequest meant specifically for the pipeline modified time request.
virtual void AddInputConnection(vtkAlgorithmOutput *input)
Add a connection to the given input port index.
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...
virtual int UpdatePiece(int piece, int numPieces, int ghostLevels, const int extents[6]=nullptr)
Convenience method to update an algorithm after passing requests to its first output port.
vtkAbstractArray * GetInputAbstractArrayToProcess(int idx, int connection, vtkInformationVector **inputVector, int &association)
Filters that have multiple connections on one port can use this signature.
vtkSmartPointer< vtkAbstractArray > GetInputArray(int idx, int connection, vtkInformationVector **inputVector, int &association, int requestedComponent=vtkArrayComponents::Requested)
Get an array from the input at index idx.
virtual void SetInputArrayToProcess(int idx, int port, int connection, const char *fieldAssociation, const char *attributeTypeorName)
Set the input data arrays that this algorithm will process.
static vtkInformationIntegerKey * PORT_REQUIREMENTS_FILLED()
virtual vtkTypeBool ProcessRequest(vtkInformation *request, vtkInformationVector **inInfo, vtkInformationVector *outInfo)
Upstream/Downstream requests form the generalized interface through which executives invoke a algorit...
int GetNumberOfOutputPorts()
Get the number of output ports provided by the algorithm.
virtual int ModifyRequest(vtkInformation *request, int when)
This method gives the algorithm a chance to modify the contents of a request before or after (specifi...
void ReleaseDataFlagOff()
Turn release data flag on or off for all output ports.
void SetInputDataInternal(int port, vtkDataObject *input)
These methods are used by subclasses to implement methods to set data objects directly as input.
int GetNumberOfInputPorts()
Get the number of input ports used by the algorithm.
int GetInputArrayAssociation(int idx, int connection, vtkInformationVector **inputVector)
Filters that have multiple connections on one port can use this signature.
void ReleaseDataFlagOn()
Turn release data flag on or off for all output ports.
bool CheckUpstreamAbort()
Checks to see if an upstream filter has been aborted.
void SetProgressShiftScale(double shift, double scale)
Specify the shift and scale values to use to apply to the progress amount when UpdateProgress is call...
vtkDataArray * GetInputArrayToProcess(int idx, int connection, vtkInformationVector **inputVector, int &association)
Filters that have multiple connections on one port can use this signature.
vtkDataArray * GetInputArrayToProcess(int idx, vtkInformationVector **inputVector, int &association)
Get the actual data array for the input array specified by idx, this is only reasonable during the RE...
vtkInformation * GetInputInformation()
Equivalent to GetInputInformation(0, 0)
unsigned long ErrorCode
The error code contains a possible error that occurred while reading or writing the file.
void GetUpdateExtent(int port, int extent[6])
These functions return the update extent for output ports that use 3D extents.
virtual void SetReleaseDataFlag(vtkTypeBool)
Turn release data flag on or off for all output ports.
vtkInformation * GetOutputInformation(int port)
Return the information object that is associated with a particular output port.
vtkInformation * GetInputPortInformation(int port)
Get the information object associated with an input port.
int GetUpdateGhostLevel(int port)
These functions return the update extent for output ports that use piece extents.
int * GetUpdateExtent(int port)
These functions return the update extent for output ports that use 3D extents.
void SetInputArrayToProcess(const char *name, int fieldAssociation, int component=vtkArrayComponents::AllComponents)
Set the input data arrays that this algorithm will process.
virtual void SetInputArrayToProcess(int idx, int port, int connection, int fieldAssociation, const char *name)
Set the input data arrays that this algorithm will process.
virtual bool UpdateInformation()
Bring the algorithm's information up-to-date.
vtkTypeBool HasExecutive()
Check whether this algorithm has an assigned executive.
virtual void SetInputArrayToProcess(int idx, int port, int connection, int fieldAssociation, int fieldAttributeType, int component)
This method variant also accepts a component to consider rather than the entire tuple.
virtual void AddInputDataObject(int port, vtkDataObject *data)
Add the data-object as an input to this given port.
virtual vtkExecutive * CreateDefaultExecutive()
Create a default executive.
vtkAlgorithmOutput * GetOutputPort()
int OutputPortIndexInRange(int index, const char *action)
static void SetDefaultExecutivePrototype(vtkExecutive *proto)
If the DefaultExecutivePrototype is set, a copy of it is created in CreateDefaultExecutive() using Ne...
virtual bool Update()
Bring this algorithm's outputs up-to-date.
vtkAlgorithm * GetInputAlgorithm()
Equivalent to GetInputAlgorithm(0, 0).
bool CheckAbort()
Checks to see if this filter should abort.
bool ResetInputArraySpecifications()
Clear all existing input array specifications (as if SetInputArrayToProcess had never been called).
void ReportReferences(vtkGarbageCollector *) override
virtual bool Update(int port)
Bring this algorithm's outputs up-to-date.
char * ProgressText
vtkAbstractArray * GetInputAbstractArrayToProcess(int idx, int connection, vtkInformationVector **inputVector)
Filters that have multiple connections on one port can use this signature.
vtkAlgorithm * GetInputAlgorithm(int port, int index)
Returns the algorithm connected to a port-index pair.
static vtkAlgorithm * New()
void SetProgressObserver(vtkProgressObserver *)
If an ProgressObserver is set, the algorithm will report progress through it rather than directly.
int GetInputArrayComponent(int idx)
Get the component to process of the actual data array for the input array specified by idx,...
void RemoveNoPriorTemporalAccessInformationKey()
Removes any information key vtkStreamingDemandDrivenPipeline::NO_PRIOR_TEMPORAL_ACCESS() to all outpu...
virtual void SetInputArrayToProcess(int idx, vtkInformation *info)
Set the input data arrays that this algorithm will process.
vtkDataArray * GetInputArrayToProcess(int idx, vtkInformationVector **inputVector)
Get the actual data array for the input array specified by idx, this is only reasonable during the RE...
void SetAbortExecuteAndUpdateTime()
Set AbortExecute Flag and update LastAbortTime.
virtual bool UpdateWholeExtent()
Bring this algorithm's outputs up-to-date.
virtual int FillInputPortInformation(int port, vtkInformation *info)
Fill the input port information objects for this algorithm.
virtual void SetNumberOfInputConnections(int port, int n)
Set the number of input connections on the given input port.
virtual void SetInputConnection(int port, vtkAlgorithmOutput *input)
Set the connection for the given input port index.
int GetTotalNumberOfInputConnections()
Get the total number of inputs for this algorithm.
vtkDataArray * GetInputArrayToProcess(int idx, vtkDataObject *input)
Filters that have multiple connections on one port can use this signature.
virtual void SetInputConnection(vtkAlgorithmOutput *input)
Set the connection for the given input port index.
void ConvertTotalInputToPortConnection(int ind, int &port, int &conn)
Convenience routine to convert from a linear ordering of input connections to a port/connection pair.
virtual void SetExecutive(vtkExecutive *executive)
Set this algorithm's executive.
bool UsesGarbageCollector() const override
Participate in garbage collection.
virtual vtkTypeBool GetReleaseDataFlag()
Turn release data flag on or off for all output ports.
int GetNumberOfInputConnections(int port)
Get the number of inputs currently connected to a port.
void SetProgressText(const char *ptext)
Set the current text message associated with the progress state.
virtual void PropagateUpdateExtent()
Propagate meta-data upstream.
vtkExecutive * GetExecutive()
Get this algorithm's executive.
virtual int UpdateExtent(const int extents[6])
Convenience method to update an algorithm after passing requests to its first output port.
int GetUpdateNumberOfPieces()
These functions return the update extent for output ports that use piece extents.
vtkTypeBool ProcessRequest(vtkInformation *request, vtkCollection *inInfo, vtkInformationVector *outInfo)
Version of ProcessRequest() that is wrapped.
DesiredOutputPrecision
Values used for setting the desired output precision for various algorithms.
virtual void SetInputDataObject(int port, vtkDataObject *data)
Sets the data-object as an input on the given port index.
vtkAbstractArray * GetInputAbstractArrayToProcess(int idx, vtkInformationVector **inputVector, int &association)
Get the actual data array for the input array specified by idx, this is only reasonable during the RE...
void GetUpdateExtent(int &x0, int &x1, int &y0, int &y1, int &z0, int &z1)
These functions return the update extent for output ports that use 3D extents.
vtkDataArray * GetInputArrayToProcess(int idx, vtkDataObject *input, int &association)
Filters that have multiple connections on one port can use this signature.
vtkTimeStamp LastAbortCheckTime
virtual void SetNumberOfInputPorts(int n)
Set the number of input ports used by the algorithm.
vtkAbstractArray * GetInputAbstractArrayToProcess(int idx, vtkDataObject *input, int &association)
Filters that have multiple connections on one port can use this signature.
virtual void RemoveInputConnection(int port, int idx)
Remove a connection given by index idx.
vtkSmartPointer< ArrayType > GetInputArrayAs(Params &&... params)
Get an array from the input at index idx.
virtual void SetInputArrayToProcess(int idx, int port, int connection, int fieldAssociation, int fieldAttributeType)
Set the input data arrays that this algorithm will process.
vtkAbstractArray * GetInputAbstractArrayToProcess(int idx, vtkDataObject *input)
Filters that have multiple connections on one port can use this signature.
int * GetUpdateExtent()
These functions return the update extent for output ports that use 3D extents.
void SetNoPriorTemporalAccessInformationKey(int key)
Set to all output ports of this algorithm the information key vtkStreamingDemandDrivenPipeline::NO_PR...
vtkDataObject * GetInputDataObject(int port, int connection)
Get the data object that will contain the algorithm input for the given port and given connection.
vtkAlgorithmOutput * GetOutputPort(int index)
Get a proxy object corresponding to the given output port of this algorithm.
virtual bool UpdateDataObject()
Create output object(s).
void AddInputDataInternal(int port, vtkDataObject *input)
~vtkAlgorithm() override
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
int GetUpdateNumberOfPieces(int port)
These functions return the update extent for output ports that use piece extents.
int InputPortIndexInRange(int index, const char *action)
int GetNumberOfInputArraySpecifications()
Get the number of input array indices that have already been set.
vtkInformation * GetInputInformation(int port, int index)
Return the information object that is associated with a particular input connection.
virtual int UpdateTimeStep(double time, int piece=-1, int numPieces=1, int ghostLevels=0, const int extents[6]=nullptr)
Convenience method to update an algorithm after passing requests to its first output port.
virtual void SetInformation(vtkInformation *)
Set/Get the information object associated with this algorithm.
virtual void AddInputConnection(int port, vtkAlgorithmOutput *input)
Add a connection to the given input port index.
void RemoveAllInputs()
Remove all the input data.
vtkAlgorithm * GetInputAlgorithm(int port, int index, int &algPort)
Returns the algorithm and the output port index of that algorithm connected to a port-index pair.
create and manipulate ordered lists of objects
general representation of visualization data
Superclass for all pipeline executives in VTK.
a simple class to control print indentation
Definition vtkIndent.h:29
Key for integer values in vtkInformation.
Key for string values in vtkInformation.
Store zero or more vtkInformation instances.
Store vtkAlgorithm input/output information.
friend class vtkGarbageCollector
Some classes need to clear the reference counts manually due to the way they work.
Basic class to optionally replace vtkAlgorithm progress functionality.
Hold a reference to a vtkObjectBase instance.
record modification and/or execution time
static vtkInformationStringVectorKey * INPUT_REQUIRED_DATA_TYPE()
static vtkInformationIntegerKey * INPUT_IS_OPTIONAL()
Keys used to specify input port requirements.
static vtkInformationIntegerKey * CAN_HANDLE_PIECE_REQUEST()
Key that tells the pipeline that a particular algorithm can or cannot handle piece request.
static vtkInformationIntegerKey * INPUT_PORT()
static vtkInformationInformationVectorKey * INPUT_REQUIRED_FIELDS()
static vtkInformationInformationVectorKey * INPUT_ARRAYS_TO_PROCESS()
static vtkInformationIntegerKey * INPUT_CONNECTION()
static vtkInformationIntegerKey * CAN_PRODUCE_SUB_EXTENT()
This key tells the executive that a particular output port is capable of producing an arbitrary subex...
static vtkInformationIntegerKey * ABORTED()
static vtkInformationIntegerKey * INPUT_IS_REPEATABLE()
int vtkTypeBool
Definition vtkABI.h:64
@ AllComponents
@ Requested
#define vtkDataArray
vtkTypeUInt32 vtkMTimeType
Definition vtkType.h:318
#define VTK_SIZEHINT(...)
#define VTK_UNBLOCKTHREADS
#define VTK_MARSHALMANUAL
#define vtkAlgorithm