forked from Kitware/VTK
-
Notifications
You must be signed in to change notification settings - Fork 0
/
vtkCompositeDataSet.h
151 lines (125 loc) · 4.67 KB
/
vtkCompositeDataSet.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
/*=========================================================================
Program: Visualization Toolkit
Module: vtkCompositeDataSet.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 vtkCompositeDataSet
* @brief abstract superclass for composite
* (multi-block or AMR) datasets
*
* vtkCompositeDataSet is an abstract class that represents a collection
* of datasets (including other composite datasets). It
* provides an interface to access the datasets through iterators.
* vtkCompositeDataSet provides methods that are used by subclasses to store the
* datasets.
* vtkCompositeDataSet provides the datastructure for a full tree
* representation. Subclasses provide the semantics for it and control how
* this tree is built.
*
* @sa
* vtkCompositeDataIterator
*/
#ifndef vtkCompositeDataSet_h
#define vtkCompositeDataSet_h
#include "vtkCommonDataModelModule.h" // For export macro
#include "vtkDataObject.h"
class vtkCompositeDataIterator;
class vtkCompositeDataSetInternals;
class vtkInformation;
class vtkInformationStringKey;
class vtkInformationIntegerKey;
class VTKCOMMONDATAMODEL_EXPORT vtkCompositeDataSet : public vtkDataObject
{
public:
vtkTypeMacro(vtkCompositeDataSet, vtkDataObject);
void PrintSelf(ostream& os, vtkIndent indent) override;
/**
* Return a new iterator (the iterator has to be deleted by user).
*/
virtual VTK_NEWINSTANCE vtkCompositeDataIterator* NewIterator() =0;
/**
* Return class name of data type (see vtkType.h for
* definitions).
*/
int GetDataObjectType() override {return VTK_COMPOSITE_DATA_SET;}
/**
* Copies the tree structure from the input. All pointers to non-composite
* data objects are initialized to nullptr. This also shallow copies the meta data
* associated with all the nodes.
*/
virtual void CopyStructure(vtkCompositeDataSet* input)=0;
/**
* Sets the data set at the location pointed by the iterator.
* The iterator does not need to be iterating over this dataset itself. It can
* be any composite datasite with similar structure (achieved by using
* CopyStructure).
*/
virtual void SetDataSet(vtkCompositeDataIterator* iter, vtkDataObject* dataObj)=0;
/**
* Returns the dataset located at the positiong pointed by the iterator.
* The iterator does not need to be iterating over this dataset itself. It can
* be an iterator for composite dataset with similar structure (achieved by
* using CopyStructure).
*/
virtual vtkDataObject* GetDataSet(vtkCompositeDataIterator* iter)=0;
/**
* Return the actual size of the data in kibibytes (1024 bytes). This number
* is valid only after the pipeline has updated.
*/
unsigned long GetActualMemorySize() override;
//@{
/**
* Retrieve an instance of this class from an information object.
*/
static vtkCompositeDataSet* GetData(vtkInformation* info);
static vtkCompositeDataSet* GetData(vtkInformationVector* v, int i=0);
//@}
/**
* Restore data object to initial state,
*/
void Initialize() override;
//@{
/**
* Shallow and Deep copy.
*/
void ShallowCopy(vtkDataObject *src) override;
void DeepCopy(vtkDataObject *src) override;
//@}
/**
* Returns the total number of points of all blocks. This will
* iterate over all blocks and call GetNumberOfPoints() so it
* might be expensive.
*/
virtual vtkIdType GetNumberOfPoints();
/**
* Returns the total number of cells of all blocks. This will
* iterate over all blocks and call GetNumberOfPoints() so it
* might be expensive.
*/
virtual vtkIdType GetNumberOfCells();
/**
* Key used to put node name in the meta-data associated with a node.
*/
static vtkInformationStringKey* NAME();
/**
* Key used to indicate that the current process can load the data
* in the node. Used for parallel readers where the nodes are assigned
* to the processes by the reader to indicate further down the pipeline
* which nodes will be on which processes.
* ***THIS IS AN EXPERIMENTAL KEY SUBJECT TO CHANGE WITHOUT NOTICE***
*/
static vtkInformationIntegerKey* CURRENT_PROCESS_CAN_LOAD_BLOCK();
protected:
vtkCompositeDataSet();
~vtkCompositeDataSet() override;
private:
vtkCompositeDataSet(const vtkCompositeDataSet&) = delete;
void operator=(const vtkCompositeDataSet&) = delete;
};
#endif