forked from Kitware/VTK
-
Notifications
You must be signed in to change notification settings - Fork 0
/
vtkStaticCellLinks.h
111 lines (91 loc) · 3.49 KB
/
vtkStaticCellLinks.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
/*=========================================================================
Program: Visualization Toolkit
Module: vtkStaticCellLinks.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 vtkStaticCellLinks
* @brief object represents upward pointers from points
* to list of cells using each point
*
*
* vtkStaticCellLinks is a supplemental object to vtkCellArray and
* vtkCellTypes, enabling access from points to the cells using the
* points. vtkStaticCellLinks is an array of links, each link represents a
* list of cell ids using a particular point. The information provided by
* this object can be used to determine neighbors and construct other local
* topological information. This class is a faster implementation of
* vtkCellLinks. However, it cannot be incrementally constructed; it is meant
* to be constructed once (statically) and must be rebuilt if the cells
* change.
*
* @warning
* This is a drop-in replacement for vtkCellLinks using static link
* construction. It uses the templated vtkStaticCellLinksTemplate class,
* instantiating vtkStaticCellLinksTemplate with a vtkIdType template
* parameter. Note that for best performance, the vtkStaticCellLinksTemplate
* class may be used directly, instantiating it with the appropriate id
* type. This class is also wrappable and can be used from an interpreted
* language such as Python.
*
* @sa
* vtkCellLinks vtkStaticCellLinksTemplate
*/
#ifndef vtkStaticCellLinks_h
#define vtkStaticCellLinks_h
#include "vtkCommonDataModelModule.h" // For export macro
#include "vtkAbstractCellLinks.h"
#include "vtkStaticCellLinksTemplate.h" // For implementations
class vtkDataSet;
class vtkCellArray;
class VTKCOMMONDATAMODEL_EXPORT vtkStaticCellLinks : public vtkAbstractCellLinks
{
public:
//@{
/**
* Standard methods for instantiation, type manipulation and printing.
*/
static vtkStaticCellLinks *New();
vtkTypeMacro(vtkStaticCellLinks,vtkAbstractCellLinks);
void PrintSelf(ostream& os, vtkIndent indent) override;
//@}
/**
* Build the link list array. Satisfy the superclass API.
*/
void BuildLinks(vtkDataSet *ds) override
{this->Impl->BuildLinks(ds);}
/**
* Get the number of cells using the point specified by ptId.
*/
vtkIdType GetNumberOfCells(vtkIdType ptId)
{return this->Impl->GetNumberOfCells(ptId);}
/**
* Get the number of cells using the point specified by ptId. This is an
* alias for GetNumberOfCells(); consistent with the vtkCellLinks API.
*/
unsigned short GetNcells(vtkIdType ptId)
{ return static_cast<unsigned short>(this->GetNumberOfCells(ptId)); }
/**
* Return a list of cell ids using the specified point.
*/
const vtkIdType *GetCells(vtkIdType ptId)
{return this->Impl->GetCells(ptId);}
/**
* Make sure any previously created links are cleaned up.
*/
void Initialize()
{this->Impl->Initialize();}
protected:
vtkStaticCellLinks();
~vtkStaticCellLinks() override;
vtkStaticCellLinksTemplate<vtkIdType> *Impl;
private:
vtkStaticCellLinks(const vtkStaticCellLinks&) = delete;
void operator=(const vtkStaticCellLinks&) = delete;
};
#endif