00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 
00010 
00011 
00012 
00013 
00014 
00015 
00048 #ifndef __vtkStringArray_h
00049 #define __vtkStringArray_h
00050 
00051 #include "vtkAbstractArray.h"
00052 #include "vtkStdString.h" 
00053 
00054 class VTK_COMMON_EXPORT vtkStringArray : public vtkAbstractArray
00055 {
00056 public:
00057   static vtkStringArray* New();
00058   vtkTypeRevisionMacro(vtkStringArray,vtkAbstractArray);
00059   void PrintSelf(ostream& os, vtkIndent indent);
00060 
00061   
00062   
00063   
00064   
00065   
00066 
00068 
00069   int GetDataType()
00070     { return VTK_STRING; }
00072 
00073   bool IsNumeric() { return false; } 
00074 
00076   void Initialize();
00077 
00081   int GetDataTypeSize();
00082 
00085   void Squeeze() { this->ResizeAndExtend (this->MaxId+1); }
00086 
00088   int Resize(vtkIdType numTuples);
00089 
00094   void GetValues(vtkIdList *ptIds, vtkAbstractArray *output);
00095 
00100   void GetValues(vtkIdType p1, vtkIdType p2, vtkAbstractArray *output);
00101 
00103   void CopyValue(int toIndex, int fromIndex, vtkAbstractArray *sourceArray);
00104 
00107   int Allocate( vtkIdType sz, vtkIdType ext=1000 );
00108 
00110   vtkStdString &GetValue(vtkIdType id);
00111 
00113 
00116   void SetValue(vtkIdType id, vtkStdString value)
00117     { this->Array[id] = value; }
00119 
00120   void SetValue(vtkIdType id, const char *value);
00121 
00125   void SetNumberOfValues(vtkIdType number);
00126 
00127   int GetNumberOfValues() { return this->MaxId + 1; }
00128 
00129   int GetNumberOfElementComponents() { return 0; }
00130   int GetElementComponentSize() { return static_cast<int>(sizeof(vtkStdString::value_type)); }
00131 
00133   void InsertValue(vtkIdType id, vtkStdString f);
00134 
00135   void InsertValue(vtkIdType id, const char *val);
00136 
00139   vtkIdType InsertNextValue(vtkStdString f);
00140 
00141   vtkIdType InsertNextValue(const char *f);
00142 
00143 
00147   vtkStdString* WritePointer(vtkIdType id, vtkIdType number);
00148 
00149 
00150 
00152 
00154   vtkStdString* GetPointer(vtkIdType id) { return this->Array + id; }
00155   void* GetVoidPointer(vtkIdType id) { return this->GetPointer(id); }
00157 
00158 
00161   void DeepCopy( vtkAbstractArray* aa );
00162 
00163 
00164 
00166 
00172   void SetArray(vtkStdString* array, vtkIdType size, int save);
00173   void SetVoidArray(void* array, vtkIdType size, int save)
00174     { this->SetArray(static_cast<vtkStdString*>(array), size, save); }
00176 
00177 
00185   unsigned long GetActualMemorySize();
00186 
00187   void ConvertToContiguous(vtkDataArray **Data, vtkIdTypeArray **Offsets);
00188   void ConvertFromContiguous(vtkDataArray *Data, vtkIdTypeArray *Offsets);
00189 
00190 protected:
00191   vtkStringArray(vtkIdType numComp=1);
00192   ~vtkStringArray();
00193 
00194   vtkStdString* Array;   
00195   vtkStdString* ResizeAndExtend(vtkIdType sz);  
00196 
00197   int SaveUserArray;
00198 
00199 private:
00200   vtkStringArray(const vtkStringArray&);  
00201   void operator=(const vtkStringArray&);  
00202 };
00203 
00204 
00205 
00206 #endif