forked from Kitware/VTK
-
Notifications
You must be signed in to change notification settings - Fork 0
/
vtkArrayIteratorTemplate.h
141 lines (115 loc) · 4.1 KB
/
vtkArrayIteratorTemplate.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
/*=========================================================================
Program: Visualization Toolkit
Module: vtkArrayIteratorTemplate.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 vtkArrayIteratorTemplate
* @brief Implementation template for a array
* iterator.
*
*
* This is implementation template for a array iterator. It only works
* with arrays that have a contiguous internal storage of values (as in
* vtkDataArray, vtkStringArray).
*/
#ifndef vtkArrayIteratorTemplate_h
#define vtkArrayIteratorTemplate_h
#include "vtkArrayIterator.h"
#include "vtkCommonCoreModule.h" // For export macro
#include "vtkCompiler.h" // for VTK_USE_EXTERN_TEMPLATE
#include "vtkStdString.h" // For template instantiation
#include "vtkUnicodeString.h" // For template instantiation
#include "vtkVariant.h" // For template instantiation
template <class T>
class VTKCOMMONCORE_EXPORT vtkArrayIteratorTemplate : public vtkArrayIterator
{
public:
static vtkArrayIteratorTemplate<T>* New();
vtkTemplateTypeMacro(vtkArrayIteratorTemplate<T>, vtkArrayIterator);
void PrintSelf(ostream& os, vtkIndent indent) override;
/**
* Set the array this iterator will iterate over.
* After Initialize() has been called, the iterator is valid
* so long as the Array has not been modified
* (except using the iterator itself).
* If the array is modified, the iterator must be re-initialized.
*/
void Initialize(vtkAbstractArray* array) override;
/**
* Get the array.
*/
vtkAbstractArray* GetArray() { return this->Array; }
/**
* Must be called only after Initialize.
*/
T* GetTuple(vtkIdType id);
/**
* Must be called only after Initialize.
*/
T& GetValue(vtkIdType id) { return this->Pointer[id]; }
/**
* Sets the value at the index. This does not verify if the index is
* valid. The caller must ensure that id is less than the maximum
* number of values.
*/
void SetValue(vtkIdType id, T value) { this->Pointer[id] = value; }
/**
* Must be called only after Initialize.
*/
vtkIdType GetNumberOfTuples() const;
/**
* Must be called only after Initialize.
*/
vtkIdType GetNumberOfValues() const;
/**
* Must be called only after Initialize.
*/
int GetNumberOfComponents() const;
/**
* Get the data type from the underlying array.
*/
int GetDataType() const override;
/**
* Get the data type size from the underlying array.
*/
int GetDataTypeSize() const;
/**
* This is the data type for the value.
*/
typedef T ValueType;
protected:
vtkArrayIteratorTemplate();
~vtkArrayIteratorTemplate() override;
T* Pointer;
private:
vtkArrayIteratorTemplate(const vtkArrayIteratorTemplate&) = delete;
void operator=(const vtkArrayIteratorTemplate&) = delete;
void SetArray(vtkAbstractArray*);
vtkAbstractArray* Array;
};
#ifdef VTK_USE_EXTERN_TEMPLATE
#ifndef vtkArrayIteratorTemplateInstantiate_cxx
#ifdef _MSC_VER
#pragma warning(push)
// The following is needed when the vtkArrayIteratorTemplate is declared
// dllexport and is used from another class in vtkCommonCore
#pragma warning(disable : 4910) // extern and dllexport incompatible
#endif
vtkInstantiateTemplateMacro(extern template class VTKCOMMONCORE_EXPORT vtkArrayIteratorTemplate);
extern template class VTKCOMMONCORE_EXPORT vtkArrayIteratorTemplate<vtkStdString>;
extern template class VTK_DEPRECATED_IN_9_1_0("Use vtkArrayIteratorTemplate<vtkStdString>")
VTKCOMMONCORE_EXPORT vtkArrayIteratorTemplate<vtkUnicodeString>;
extern template class VTKCOMMONCORE_EXPORT vtkArrayIteratorTemplate<vtkVariant>;
#ifdef _MSC_VER
#pragma warning(pop)
#endif
#endif
#endif // VTK_USE_EXTERN_TEMPLATE
#endif
// VTK-HeaderTest-Exclude: vtkArrayIteratorTemplate.h