Main Page | Class Hierarchy | Alphabetical List | Class List | File List | Class Members | File Members | Related Pages

dox/Common/vtkLongArray.h

Go to the documentation of this file.
00001 /*========================================================================= 00002 00003 Program: Visualization Toolkit 00004 Module: $RCSfile: vtkLongArray.h,v $ 00005 Language: C++ 00006 00007 Copyright (c) 1993-2002 Ken Martin, Will Schroeder, Bill Lorensen 00008 All rights reserved. 00009 See Copyright.txt or http://www.kitware.com/Copyright.htm for details. 00010 00011 This software is distributed WITHOUT ANY WARRANTY; without even 00012 the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 00013 PURPOSE. See the above copyright notice for more information. 00014 00015 =========================================================================*/ 00030 #ifndef __vtkLongArray_h 00031 #define __vtkLongArray_h 00032 00033 #include "vtkDataArray.h" 00034 00035 class VTK_COMMON_EXPORT vtkLongArray : public vtkDataArray 00036 { 00037 public: 00038 static vtkLongArray *New(); 00039 00040 vtkTypeRevisionMacro(vtkLongArray,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 void Squeeze() {this->ResizeAndExtend (this->MaxId+1);}; 00052 00054 virtual void Resize(vtkIdType numTuples); 00055 00057 int GetDataType() {return VTK_LONG;}; 00058 00060 int GetDataTypeSize() { return sizeof(long); } 00061 00063 void SetNumberOfTuples(const vtkIdType number); 00064 00067 float *GetTuple(const vtkIdType i); 00068 00070 00071 void GetTuple(const vtkIdType i, float * tuple); 00072 void GetTuple(const vtkIdType i, double * tuple); 00074 00076 00077 void SetTuple(const vtkIdType i, const float * tuple); 00078 void SetTuple(const vtkIdType i, const double * tuple); 00080 00082 00084 void InsertTuple(const vtkIdType i, const float * tuple); 00085 void InsertTuple(const vtkIdType i, const double * tuple); 00087 00089 00091 vtkIdType InsertNextTuple(const float * tuple); 00092 vtkIdType InsertNextTuple(const double * tuple); 00094 00096 long GetValue(const vtkIdType id) {return this->Array[id];}; 00097 00101 void SetNumberOfValues(const vtkIdType number); 00102 00104 00106 void SetValue(const vtkIdType id, const long value) 00107 { this->Array[id] = value;}; 00109 00111 void InsertValue(const vtkIdType id, const long i); 00112 00115 vtkIdType InsertNextValue(const long); 00116 00120 float GetComponent(const vtkIdType i, const int j); 00121 00126 void SetComponent(const vtkIdType i, const int j, float c); 00127 00131 virtual void InsertComponent(const vtkIdType i, const int j, float c); 00132 00134 00136 long *GetPointer(const vtkIdType id) {return this->Array + id;} 00137 void *GetVoidPointer(const vtkIdType id) 00138 {return (void *)this->GetPointer(id);}; 00140 00144 long *WritePointer(const vtkIdType id, const vtkIdType number); 00145 00147 void DeepCopy(vtkDataArray *da); 00148 00150 00156 void SetArray(long* array, vtkIdType size, int save); 00157 void SetVoidArray(void *array, vtkIdType size, int save) 00158 {this->SetArray((long*)array, size, save);}; 00160 00161 protected: 00162 vtkLongArray(vtkIdType numComp=1); 00163 ~vtkLongArray(); 00164 00165 long *Array; // pointer to data 00166 long *ResizeAndExtend(const vtkIdType sz); // function to resize data 00167 00168 int TupleSize; //used for data conversion 00169 float *Tuple; 00170 00171 int SaveUserArray; 00172 private: 00173 vtkLongArray(const vtkLongArray&); // Not implemented. 00174 void operator=(const vtkLongArray&); // Not implemented. 00175 }; 00176 00177 inline void vtkLongArray::SetNumberOfValues(const vtkIdType number) 00178 { 00179 this->Allocate(number); 00180 this->MaxId = number - 1; 00181 } 00182 00183 inline long *vtkLongArray::WritePointer(const vtkIdType id, 00184 const vtkIdType number) 00185 { 00186 vtkIdType newSize=id+number; 00187 if ( newSize > this->Size ) 00188 { 00189 this->ResizeAndExtend(newSize); 00190 } 00191 if ( (--newSize) > this->MaxId ) 00192 { 00193 this->MaxId = newSize; 00194 } 00195 return this->Array + id; 00196 } 00197 00198 inline void vtkLongArray::InsertValue(const vtkIdType id, const long i) 00199 { 00200 if ( id >= this->Size ) 00201 { 00202 this->ResizeAndExtend(id+1); 00203 } 00204 this->Array[id] = i; 00205 if ( id > this->MaxId ) 00206 { 00207 this->MaxId = id; 00208 } 00209 } 00210 00211 inline vtkIdType vtkLongArray::InsertNextValue(const long i) 00212 { 00213 this->InsertValue (++this->MaxId,i); 00214 return this->MaxId; 00215 } 00216 00217 00218 #endif