dox/Common/vtkIdTypeArray.h
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00030
#ifndef __vtkIdTypeArray_h
00031
#define __vtkIdTypeArray_h
00032
00033
#include "vtkDataArray.h"
00034
00035 class VTK_COMMON_EXPORT vtkIdTypeArray :
public vtkDataArray
00036 {
00037
public:
00038
static vtkIdTypeArray *
New();
00039
00040 vtkTypeRevisionMacro(vtkIdTypeArray,
vtkDataArray);
00041
void PrintSelf(ostream& os,
vtkIndent indent);
00042
00045
int Allocate(
const vtkIdType sz,
const vtkIdType ext=1000);
00046
00048
void Initialize();
00049
00051
00052 int GetDataType()
00053 {
return VTK_ID_TYPE;}
00055
00057 int GetDataTypeSize() {
return sizeof(
vtkIdType); }
00058
00060
00061 void Squeeze()
00062 {this->ResizeAndExtend (this->MaxId+1);}
00064
00066
virtual void Resize(
vtkIdType numTuples);
00067
00069
void SetNumberOfTuples(
const vtkIdType number);
00070
00073
float *
GetTuple(
const vtkIdType i);
00074
00076
00077
void GetTuple(
const vtkIdType i,
float * tuple);
00078
void GetTuple(
const vtkIdType i,
double * tuple);
00080
00082
00083
void SetTuple(
const vtkIdType i,
const float * tuple);
00084
void SetTuple(
const vtkIdType i,
const double * tuple);
00086
00088
00090
void InsertTuple(
const vtkIdType i,
const float * tuple);
00091
void InsertTuple(
const vtkIdType i,
const double * tuple);
00093
00095
00097
vtkIdType InsertNextTuple(
const float * tuple);
00098
vtkIdType InsertNextTuple(
const double * tuple);
00100
00102
00103 vtkIdType GetValue(
const vtkIdType id)
00104 {
return this->Array[
id];}
00106
00108
00110 void SetValue(
const vtkIdType id,
const vtkIdType value)
00111 {this->Array[
id] = value;}
00113
00117
void SetNumberOfValues(
const vtkIdType number);
00118
00120
void InsertValue(
const vtkIdType id,
const vtkIdType i);
00121
00124
vtkIdType InsertNextValue(
const vtkIdType i);
00125
00127
00129 vtkIdType *GetPointer(
const vtkIdType id)
00130 {
return this->Array +
id;}
00131 void *
GetVoidPointer(
const vtkIdType id)
00132 {
return (
void *)this->GetPointer(
id);}
00134
00138
vtkIdType *WritePointer(
const vtkIdType id,
const vtkIdType number);
00139
00141
void DeepCopy(
vtkDataArray *ia);
00142
00144
00150
void SetArray(
vtkIdType* array,
vtkIdType size,
int save);
00151 void SetVoidArray(
void *array,
vtkIdType size,
int save)
00152 {this->SetArray((
vtkIdType*)array, size, save);};
00154
00155
protected:
00156 vtkIdTypeArray(
vtkIdType numComp=1);
00157 ~vtkIdTypeArray();
00158
00159 vtkIdType *Array;
00160
vtkIdType *ResizeAndExtend(
const vtkIdType sz);
00161
00162 int TupleSize;
00163 float *Tuple;
00164
00165 int SaveUserArray;
00166
private:
00167 vtkIdTypeArray(
const vtkIdTypeArray&);
00168
void operator=(
const vtkIdTypeArray&);
00169 };
00170
00171
00172 inline void vtkIdTypeArray::SetNumberOfValues(
const vtkIdType number)
00173 {
00174 this->
Allocate(number);
00175 this->MaxId = number - 1;
00176 }
00177
00178 inline vtkIdType *
vtkIdTypeArray::WritePointer(
const vtkIdType id,
00179
const vtkIdType number)
00180 {
00181
vtkIdType newSize=
id+number;
00182
if ( newSize > this->Size )
00183 {
00184 this->
ResizeAndExtend(newSize);
00185 }
00186
if ( (--newSize) > this->MaxId )
00187 {
00188 this->MaxId = newSize;
00189 }
00190
return this->
Array +
id;
00191 }
00192
00193 inline void vtkIdTypeArray::InsertValue(
const vtkIdType id,
const vtkIdType i)
00194 {
00195
if (
id >= this->Size )
00196 {
00197 this->
ResizeAndExtend(
id+1);
00198 }
00199 this->
Array[
id] = i;
00200
if (
id > this->MaxId )
00201 {
00202 this->MaxId =
id;
00203 }
00204 }
00205
00206 inline vtkIdType vtkIdTypeArray::InsertNextValue(
const vtkIdType i)
00207 {
00208 this->
InsertValue (++this->MaxId,i);
00209
return this->MaxId;
00210 }
00211
00212
00213
#endif