VTK  9.2.6
vtkDataObject.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Program: Visualization Toolkit
4  Module: vtkDataObject.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 =========================================================================*/
40 #ifndef vtkDataObject_h
41 #define vtkDataObject_h
42 
43 #include "vtkCommonDataModelModule.h" // For export macro
44 #include "vtkObject.h"
45 
46 class vtkAbstractArray;
48 class vtkFieldData;
49 class vtkInformation;
60 
61 #define VTK_PIECES_EXTENT 0
62 #define VTK_3D_EXTENT 1
63 #define VTK_TIME_EXTENT 2
64 
65 class VTKCOMMONDATAMODEL_EXPORT vtkDataObject : public vtkObject
66 {
67 public:
68  static vtkDataObject* New();
69 
70  vtkTypeMacro(vtkDataObject, vtkObject);
71  void PrintSelf(ostream& os, vtkIndent indent) override;
72 
74 
77  vtkGetObjectMacro(Information, vtkInformation);
78  virtual void SetInformation(vtkInformation*);
80 
85  vtkMTimeType GetMTime() override;
86 
90  virtual void Initialize();
91 
97  void ReleaseData();
98 
100 
103  vtkGetMacro(DataReleased, int);
105 
107 
111  static void SetGlobalReleaseDataFlag(int val);
112  void GlobalReleaseDataFlagOn() { this->SetGlobalReleaseDataFlag(1); }
113  void GlobalReleaseDataFlagOff() { this->SetGlobalReleaseDataFlag(0); }
114  static int GetGlobalReleaseDataFlag();
116 
118 
121  virtual void SetFieldData(vtkFieldData*);
122  vtkGetObjectMacro(FieldData, vtkFieldData);
124 
131  virtual int GetDataObjectType() { return VTK_DATA_OBJECT; }
132 
137  vtkMTimeType GetUpdateTime();
138 
146  virtual unsigned long GetActualMemorySize();
147 
152  virtual void CopyInformationFromPipeline(vtkInformation* vtkNotUsed(info)) {}
153 
159  virtual void CopyInformationToPipeline(vtkInformation* vtkNotUsed(info)) {}
160 
167  static vtkInformation* GetActiveFieldInformation(
168  vtkInformation* info, int fieldAssociation, int attributeType);
169 
175  static vtkInformation* GetNamedFieldInformation(
176  vtkInformation* info, int fieldAssociation, const char* name);
177 
181  static void RemoveNamedFieldInformation(
182  vtkInformation* info, int fieldAssociation, const char* name);
183 
190  static vtkInformation* SetActiveAttribute(
191  vtkInformation* info, int fieldAssociation, const char* attributeName, int attributeType);
192 
202  static void SetActiveAttributeInfo(vtkInformation* info, int fieldAssociation, int attributeType,
203  const char* name, int arrayType, int numComponents, int numTuples);
204 
209  static void SetPointDataActiveScalarInfo(vtkInformation* info, int arrayType, int numComponents);
210 
216  void DataHasBeenGenerated();
217 
223  virtual void PrepareForNewData() { this->Initialize(); }
224 
226 
230  virtual void ShallowCopy(vtkDataObject* src);
231  virtual void DeepCopy(vtkDataObject* src);
233 
242  virtual int GetExtentType() { return VTK_PIECES_EXTENT; }
243 
248  virtual void Crop(const int* updateExtent);
249 
254  {
262  NUMBER_OF_ASSOCIATIONS
263  };
264 
270  {
278  NUMBER_OF_ATTRIBUTE_TYPES
279  };
280 
300  virtual vtkDataSetAttributes* GetAttributes(int type);
301 
313  virtual vtkUnsignedCharArray* GetGhostArray(int type);
314 
321  virtual vtkFieldData* GetAttributesAsFieldData(int type);
322 
328  virtual int GetAttributeTypeForArray(vtkAbstractArray* arr);
329 
333  virtual vtkIdType GetNumberOfElements(int type);
334 
339  {
343  FIELD_OPERATION_REMOVED
344  };
345 
350  static const char* GetAssociationTypeAsString(int associationType);
351 
356  static int GetAssociationTypeFromString(const char* associationName);
357 
358  // \ingroup InformationKeys
359  static vtkInformationStringKey* DATA_TYPE_NAME();
360  // \ingroup InformationKeys
361  static vtkInformationDataObjectKey* DATA_OBJECT();
362  // \ingroup InformationKeys
363  static vtkInformationIntegerKey* DATA_EXTENT_TYPE();
364  // \ingroup InformationKeys
365  static vtkInformationIntegerPointerKey* DATA_EXTENT();
366  // \ingroup InformationKeys
367  static vtkInformationIntegerVectorKey* ALL_PIECES_EXTENT();
368  // \ingroup InformationKeys
369  static vtkInformationIntegerKey* DATA_PIECE_NUMBER();
370  // \ingroup InformationKeys
371  static vtkInformationIntegerKey* DATA_NUMBER_OF_PIECES();
372  // \ingroup InformationKeys
373  static vtkInformationIntegerKey* DATA_NUMBER_OF_GHOST_LEVELS();
374  // \ingroup InformationKeys
375  static vtkInformationDoubleKey* DATA_TIME_STEP();
376  // \ingroup InformationKeys
377  static vtkInformationInformationVectorKey* POINT_DATA_VECTOR();
378  // \ingroup InformationKeys
379  static vtkInformationInformationVectorKey* CELL_DATA_VECTOR();
380  // \ingroup InformationKeys
381  static vtkInformationInformationVectorKey* VERTEX_DATA_VECTOR();
382  // \ingroup InformationKeys
383  static vtkInformationInformationVectorKey* EDGE_DATA_VECTOR();
384  // \ingroup InformationKeys
385  static vtkInformationIntegerKey* FIELD_ARRAY_TYPE();
386  // \ingroup InformationKeys
387  static vtkInformationIntegerKey* FIELD_ASSOCIATION();
388  // \ingroup InformationKeys
389  static vtkInformationIntegerKey* FIELD_ATTRIBUTE_TYPE();
390  // \ingroup InformationKeys
391  static vtkInformationIntegerKey* FIELD_ACTIVE_ATTRIBUTE();
392  // \ingroup InformationKeys
393  static vtkInformationIntegerKey* FIELD_NUMBER_OF_COMPONENTS();
394  // \ingroup InformationKeys
395  static vtkInformationIntegerKey* FIELD_NUMBER_OF_TUPLES();
396  // \ingroup InformationKeys
397  static vtkInformationIntegerKey* FIELD_OPERATION();
398  // \ingroup InformationKeys
399  static vtkInformationDoubleVectorKey* FIELD_RANGE();
400  // \ingroup InformationKeys
401  static vtkInformationIntegerVectorKey* PIECE_EXTENT();
402  // \ingroup InformationKeys
403  static vtkInformationStringKey* FIELD_NAME();
404  // \ingroup InformationKeys
405  static vtkInformationDoubleVectorKey* ORIGIN();
406  // \ingroup InformationKeys
407  static vtkInformationDoubleVectorKey* SPACING();
408  // \ingroup InformationKeys
409  static vtkInformationDoubleVectorKey* DIRECTION();
410  // \ingroup InformationKeys
411  static vtkInformationDoubleVectorKey* BOUNDING_BOX();
412 
413  // Key used to put SIL information in the output information by readers.
414  // \ingroup InformationKeys
415  static vtkInformationDataObjectKey* SIL();
416 
418 
422  static vtkDataObject* GetData(vtkInformationVector* v, int i = 0);
424 
425 protected:
426  vtkDataObject();
427  ~vtkDataObject() override;
428 
429  // General field data associated with data object
431 
432  // Keep track of data release during network execution
434 
435  // When was this data last generated?
437 
438  // Arbitrary extra information associated with this data object.
440 
441 private:
442  // Helper method for the ShallowCopy and DeepCopy methods.
443  void InternalDataObjectCopy(vtkDataObject* src);
444 
445 private:
446  vtkDataObject(const vtkDataObject&) = delete;
447  void operator=(const vtkDataObject&) = delete;
448 };
449 
450 #endif
vtkFieldData * FieldData
void GlobalReleaseDataFlagOn()
Turn on/off flag to control whether every object releases its data after being used by a filter...
abstract base class for most VTK objects
Definition: vtkObject.h:62
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
Store vtkAlgorithm input/output information.
vtkTypeUInt32 vtkMTimeType
Definition: vtkType.h:287
Key for vtkDataObject values.
Abstract superclass for all arrays.
record modification and/or execution time
Definition: vtkTimeStamp.h:35
virtual void PrepareForNewData()
make the output data ready for new data to be inserted.
FieldAssociations
Possible values for the FIELD_ASSOCIATION information entry.
void GlobalReleaseDataFlagOff()
Turn on/off flag to control whether every object releases its data after being used by a filter...
int vtkIdType
Definition: vtkType.h:332
virtual int GetExtentType()
The ExtentType will be left as VTK_PIECES_EXTENT for data objects such as vtkPolyData and vtkUnstruct...
Key for string values in vtkInformation.
Key for double vector values.
FieldOperations
Possible values for the FIELD_OPERATION information entry.
a simple class to control print indentation
Definition: vtkIndent.h:39
Key for integer values in vtkInformation.
virtual vtkMTimeType GetMTime()
Return this object's modified time.
virtual void CopyInformationFromPipeline(vtkInformation *vtkNotUsed(info))
Copy from the pipeline information to the data object's own information.
#define VTK_PIECES_EXTENT
Definition: vtkDataObject.h:61
represent and manipulate attribute data in a dataset
vtkSmartPointer< vtkDataArray > GetData(const Ioss::GroupingEntity *entity, const std::string &fieldname, Ioss::Transform *transform=nullptr, Cache *cache=nullptr, const std::string &cachekey=std::string())
Returns a VTK array for a given field (fieldname) on the chosen block (or set) entity.
dynamic, self-adjusting array of unsigned char
Key for double values in vtkInformation.
Store zero or more vtkInformation instances.
vtkTimeStamp UpdateTime
static vtkObject * New()
Create an object with Debug turned off, modified time initialized to zero, and reference counting on...
virtual int GetDataObjectType()
Return class name of data type.
general representation of visualization data
Definition: vtkDataObject.h:65
AttributeTypes
Possible attribute types.
virtual void CopyInformationToPipeline(vtkInformation *vtkNotUsed(info))
Copy information from this data object to the pipeline information.
vtkInformation * Information
represent and manipulate fields of data
Definition: vtkFieldData.h:62
#define VTK_DATA_OBJECT
Definition: vtkType.h:84