VTK  9.0.1
vtkMappedUnstructuredGrid.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Program: Visualization Toolkit
4  Module: vtkMappedUnstructuredGrid.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 =========================================================================*/
139 #ifndef vtkMappedUnstructuredGrid_h
140 #define vtkMappedUnstructuredGrid_h
141 
142 #include "vtkUnstructuredGridBase.h"
143 
144 #include "vtkMappedUnstructuredGridCellIterator.h" // For default cell iterator
145 #include "vtkNew.h" // For vtkNew
146 #include "vtkSmartPointer.h" // For vtkSmartPointer
147 
148 template <class Implementation,
151 {
153 
154 public:
156  typedef Implementation ImplementationType;
157  typedef CellIterator CellIteratorType;
158 
159  // Virtuals from various base classes:
160  void PrintSelf(ostream& os, vtkIndent indent) override;
161  void CopyStructure(vtkDataSet* pd) override;
162  void ShallowCopy(vtkDataObject* src) override;
163  vtkIdType GetNumberOfCells() override;
164  using vtkDataSet::GetCell;
165  vtkCell* GetCell(vtkIdType cellId) override;
166  void GetCell(vtkIdType cellId, vtkGenericCell* cell) override;
167  int GetCellType(vtkIdType cellId) override;
168  void GetCellPoints(vtkIdType cellId, vtkIdList* ptIds) override;
169  vtkCellIterator* NewCellIterator() override;
170  void GetPointCells(vtkIdType ptId, vtkIdList* cellIds) override;
171  int GetMaxCellSize() override;
172  void GetIdsOfCellsOfType(int type, vtkIdTypeArray* array) override;
173  int IsHomogeneous() override;
174  void Allocate(vtkIdType numCells, int extSize = 1000) override;
175  vtkMTimeType GetMTime() override;
176 
179 
180 protected:
182  ~vtkMappedUnstructuredGrid() override;
183 
184  // For convenience...
186 
188 
189  vtkIdType InternalInsertNextCell(int type, vtkIdType npts, const vtkIdType ptIds[]) override;
190  vtkIdType InternalInsertNextCell(int type, vtkIdList* ptIds) override;
191  vtkIdType InternalInsertNextCell(int type, vtkIdType npts, const vtkIdType ptIds[],
192  vtkIdType nfaces, const vtkIdType faces[]) override;
193  void InternalReplaceCell(vtkIdType cellId, int npts, const vtkIdType pts[]) override;
194 
195 private:
197  void operator=(const vtkMappedUnstructuredGrid&) = delete;
198 
199  vtkNew<vtkGenericCell> TempCell;
200 };
201 
202 #include "vtkMappedUnstructuredGrid.txx"
203 
204 // We need to fake the superclass for the wrappers, otherwise they will choke on
205 // the template:
206 #ifndef __VTK_WRAP__
207 
208 #define vtkMakeExportedMappedUnstructuredGrid(_className, _impl, _exportDecl) \
209  class _exportDecl _className : public vtkMappedUnstructuredGrid<_impl> \
210  { \
211  public: \
212  vtkTypeMacro(_className, vtkMappedUnstructuredGrid<_impl>); \
213  static _className* New(); \
214  \
215  protected: \
216  _className() \
217  { \
218  _impl* i = _impl::New(); \
219  this->SetImplementation(i); \
220  i->Delete(); \
221  } \
222  ~_className() override {} \
223  \
224  private: \
225  _className(const _className&); \
226  void operator=(const _className&); \
227  }
228 
229 #define vtkMakeExportedMappedUnstructuredGridWithIter(_className, _impl, _cIter, _exportDecl) \
230  class _exportDecl _className : public vtkMappedUnstructuredGrid<_impl, _cIter> \
231  { \
232  public: \
233  vtkTypeMacro(_className, vtkMappedUnstructuredGrid<_impl, _cIter>); \
234  static _className* New(); \
235  \
236  protected: \
237  _className() \
238  { \
239  _impl* i = _impl::New(); \
240  this->SetImplementation(i); \
241  i->Delete(); \
242  } \
243  ~_className() override {} \
244  \
245  private: \
246  _className(const _className&); \
247  void operator=(const _className&); \
248  }
249 
250 #else // __VTK_WRAP__
251 
252 #define vtkMakeExportedMappedUnstructuredGrid(_className, _impl, _exportDecl) \
253  class _exportDecl _className : public vtkUnstructuredGridBase \
254  { \
255  public: \
256  vtkTypeMacro(_className, vtkUnstructuredGridBase); \
257  static _className* New(); \
258  \
259  protected: \
260  _className() {} \
261  ~_className() override {} \
262  \
263  private: \
264  _className(const _className&); \
265  void operator=(const _className&); \
266  }
267 
268 #define vtkMakeExportedMappedUnstructuredGridWithIter(_className, _impl, _cIter, _exportDecl) \
269  class _exportDecl _className : public vtkUnstructuredGridBase \
270  { \
271  public: \
272  vtkTypeMacro(_className, vtkUnstructuredGridBase); \
273  static _className* New(); \
274  \
275  protected: \
276  _className() {} \
277  ~_className() override {} \
278  \
279  private: \
280  _className(const _className&); \
281  void operator=(const _className&); \
282  }
283 
284 #endif // __VTK_WRAP__
285 
286 #define vtkMakeMappedUnstructuredGrid(_className, _impl) \
287  vtkMakeExportedMappedUnstructuredGrid(_className, _impl, )
288 
289 #define vtkMakeMappedUnstructuredGridWithIter(_className, _impl, _cIter, _exportDecl) \
290  vtkMakeExportedMappedUnstructuredGridWithIter(_className, _impl, _cIter, )
291 
292 #endif // vtkMappedUnstructuredGrid_h
293 
294 // VTK-HeaderTest-Exclude: vtkMappedUnstructuredGrid.h
vtkMappedUnstructuredGrid::InternalInsertNextCell
vtkIdType InternalInsertNextCell(int type, vtkIdType npts, const vtkIdType ptIds[]) override
vtkUnstructuredGridBase.h
vtkMappedUnstructuredGrid::NewCellIterator
vtkCellIterator * NewCellIterator() override
Return an iterator that traverses the cells in this data set.
vtkMappedUnstructuredGrid
Allows datasets with arbitrary storage layouts to be used with VTK.
Definition: vtkMappedUnstructuredGrid.h:150
vtkMappedUnstructuredGrid::CopyStructure
void CopyStructure(vtkDataSet *pd) override
Copy the geometric and topological structure of an object.
vtkMappedUnstructuredGrid::vtkTemplateTypeMacro
vtkTemplateTypeMacro(SelfType, vtkUnstructuredGridBase)
vtkX3D::type
@ type
Definition: vtkX3D.h:522
vtkIdType
int vtkIdType
Definition: vtkType.h:338
vtkMappedUnstructuredGrid::GetMTime
vtkMTimeType GetMTime() override
Datasets are composite objects and need to check each part for MTime THIS METHOD IS THREAD SAFE.
vtkMappedUnstructuredGrid::IsHomogeneous
int IsHomogeneous() override
Traverse cells and determine if cells are all of the same type.
vtkUnstructuredGridBase
dataset represents arbitrary combinations of all possible cell types. May be mapped onto a non-standa...
Definition: vtkUnstructuredGridBase.h:34
vtkSmartPointer< ImplementationType >
vtkMappedUnstructuredGrid::CellIteratorType
CellIterator CellIteratorType
Definition: vtkMappedUnstructuredGrid.h:157
vtkMappedUnstructuredGridCellIterator.h
vtkMappedUnstructuredGrid::SetImplementation
void SetImplementation(ImplementationType *impl)
vtkMappedUnstructuredGrid::ThisType
vtkMappedUnstructuredGrid< Implementation, CellIterator > ThisType
Definition: vtkMappedUnstructuredGrid.h:185
vtkMappedUnstructuredGrid::InternalReplaceCell
void InternalReplaceCell(vtkIdType cellId, int npts, const vtkIdType pts[]) override
vtkMappedUnstructuredGridCellIterator
Default cell iterator for vtkMappedUnstructuredGrid.
Definition: vtkMappedUnstructuredGridCellIterator.h:37
vtkMappedUnstructuredGrid::GetCellType
int GetCellType(vtkIdType cellId) override
Get type of cell with cellId such that: 0 <= cellId < NumberOfCells.
vtkMappedUnstructuredGrid::Impl
vtkSmartPointer< ImplementationType > Impl
Definition: vtkMappedUnstructuredGrid.h:187
vtkMappedUnstructuredGrid::GetCell
vtkCell * GetCell(vtkIdType cellId) override
Get cell with cellId such that: 0 <= cellId < NumberOfCells.
vtkMappedUnstructuredGrid::GetImplementation
ImplementationType * GetImplementation()
vtkCell
abstract class to specify cell behavior
Definition: vtkCell.h:56
vtkMappedUnstructuredGrid::GetMaxCellSize
int GetMaxCellSize() override
Convenience method returns largest cell size in dataset.
vtkIndent
a simple class to control print indentation
Definition: vtkIndent.h:33
vtkMappedUnstructuredGrid::vtkMappedUnstructuredGrid
vtkMappedUnstructuredGrid()
vtkSmartPointer.h
vtkIdList
list of point or cell ids
Definition: vtkIdList.h:30
vtkMappedUnstructuredGrid::~vtkMappedUnstructuredGrid
~vtkMappedUnstructuredGrid() override
vtkMappedUnstructuredGrid::GetNumberOfCells
vtkIdType GetNumberOfCells() override
Determine the number of cells composing the dataset.
vtkNew< vtkGenericCell >
vtkMappedUnstructuredGrid::GetIdsOfCellsOfType
void GetIdsOfCellsOfType(int type, vtkIdTypeArray *array) override
Fill vtkIdTypeArray container with list of cell Ids.
vtkMappedUnstructuredGrid::Allocate
void Allocate(vtkIdType numCells, int extSize=1000) override
Allocate memory for the number of cells indicated.
vtkMappedUnstructuredGrid::ShallowCopy
void ShallowCopy(vtkDataObject *src) override
Shallow and Deep copy.
vtkDataSet
abstract class to specify dataset behavior
Definition: vtkDataSet.h:56
vtkMappedUnstructuredGrid::ImplementationType
Implementation ImplementationType
Definition: vtkMappedUnstructuredGrid.h:156
vtkIdTypeArray
dynamic, self-adjusting array of vtkIdType
Definition: vtkIdTypeArray.h:35
vtkNew.h
impl
Definition: TestMotionFXCFGReaderCommon.h:36
vtkGenericCell
provides thread-safe access to cells
Definition: vtkGenericCell.h:36
vtkMappedUnstructuredGrid::GetCellPoints
void GetCellPoints(vtkIdType cellId, vtkIdList *ptIds) override
Topological inquiry to get points defining cell.
vtkCellIterator
Efficient cell iterator for vtkDataSet topologies.
Definition: vtkCellIterator.h:77
vtkDataObject
general representation of visualization data
Definition: vtkDataObject.h:59
vtkMappedUnstructuredGrid::PrintSelf
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
vtkMappedUnstructuredGrid::GetPointCells
void GetPointCells(vtkIdType ptId, vtkIdList *cellIds) override
Topological inquiry to get cells using point.
vtkDataSet::GetCell
virtual vtkCell * GetCell(vtkIdType cellId)=0
Get cell with cellId such that: 0 <= cellId < NumberOfCells.
vtkMTimeType
vtkTypeUInt32 vtkMTimeType
Definition: vtkType.h:293