/*========================================================================= Program: Visualization Toolkit Module: vtkInformationIntegerRequestKey.h Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen All rights reserved. See Copyright.txt or http://www.kitware.com/Copyright.htm for details. This software is distributed WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the above copyright notice for more information. =========================================================================*/ /** * @class vtkInformationIntegerRequestKey * @brief key that can used to request integer values from the pipeline * vtkInformationIntegerRequestKey is a vtkInformationIntegerKey that can * used to request integer values from upstream. A good example of this is * UPDATE_NUMBER_OF_PIECES where downstream can request that upstream provides * data partitioned into a certain number of pieces. There are several components * that make this work. First, the key will copy itself upstream during * REQUEST_UPDATE_EXTENT. Second, after a successful execution, it will stor * its value into a data object's information using a specific key defined by * its data member DataKey. Third, before execution, it will check if the requested * value matched the value in the data object's information. If not, it will ask * the pipeline to execute. * * The best way to use this class is to subclass it to set the DataKey data member. * This is usually done in the subclass' constructor. */ #ifndef vtkInformationIntegerRequestKey_h #define vtkInformationIntegerRequestKey_h #include "vtkCommonExecutionModelModule.h" // For export macro #include "vtkInformationIntegerKey.h" #include "vtkCommonInformationKeyManager.h" // Manage instances of this type. class VTKCOMMONEXECUTIONMODEL_EXPORT vtkInformationIntegerRequestKey : public vtkInformationIntegerKey { public: vtkTypeMacro(vtkInformationIntegerRequestKey, vtkInformationIntegerKey); void PrintSelf(ostream& os, vtkIndent indent) override; vtkInformationIntegerRequestKey(const char* name, const char* location); ~vtkInformationIntegerRequestKey() override; /** * This method simply returns a new vtkInformationIntegerRequestKey, * given a name and a location. This method is provided for wrappers. Use * the constructor directly from C++ instead. */ static vtkInformationIntegerRequestKey* MakeKey(const char* name, const char* location) { return new vtkInformationIntegerRequestKey(name, location); } /** * Returns true if a value of type DataKey does not exist in dobjInfo * or if it is different that the value stored in pipelineInfo using * this key. */ bool NeedToExecute(vtkInformation* pipelineInfo, vtkInformation* dobjInfo) override; /** * Copies the value stored in pipelineInfo using this key into * dobjInfo. */ void StoreMetaData( vtkInformation* request, vtkInformation* pipelineInfo, vtkInformation* dobjInfo) override; /** * Copies the value stored in fromInfo using this key into toInfo * if request has the REQUEST_UPDATE_EXTENT key. */ void CopyDefaultInformation( vtkInformation* request, vtkInformation* fromInfo, vtkInformation* toInfo) override; protected: vtkInformationIntegerKey* DataKey; private: vtkInformationIntegerRequestKey(const vtkInformationIntegerRequestKey&) = delete; void operator=(const vtkInformationIntegerRequestKey&) = delete; }; #endif