00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00035 #ifndef __vtkStringArray_h
00036 #define __vtkStringArray_h
00037
00038 #include "vtkAbstractArray.h"
00039 #include "vtkStdString.h"
00040
00041 class vtkStringArrayLookup;
00042
00043 class VTK_COMMON_EXPORT vtkStringArray : public vtkAbstractArray
00044 {
00045 public:
00046 static vtkStringArray* New();
00047 vtkTypeMacro(vtkStringArray,vtkAbstractArray);
00048 void PrintSelf(ostream& os, vtkIndent indent);
00049
00050
00051
00052
00053
00054
00055
00057
00058 int GetDataType()
00059 { return VTK_STRING; }
00061
00062 int IsNumeric() { return 0; }
00063
00065 void Initialize();
00066
00070 int GetDataTypeSize();
00071
00074 void Squeeze() { this->ResizeAndExtend (this->MaxId+1); }
00075
00077 int Resize(vtkIdType numTuples);
00078
00084 virtual void SetTuple(vtkIdType i, vtkIdType j, vtkAbstractArray* source);
00085
00089 virtual void InsertTuple(vtkIdType i, vtkIdType j, vtkAbstractArray* source);
00090
00094 virtual vtkIdType InsertNextTuple(vtkIdType j, vtkAbstractArray* source);
00095
00097
00101 virtual void InterpolateTuple(vtkIdType i, vtkIdList *ptIndices,
00102 vtkAbstractArray* source, double* weights);
00104
00106
00111 virtual void InterpolateTuple(vtkIdType i,
00112 vtkIdType id1, vtkAbstractArray* source1,
00113 vtkIdType id2, vtkAbstractArray* source2, double t);
00115
00120 virtual void GetTuples(vtkIdList *ptIds, vtkAbstractArray *output);
00121
00126 virtual void GetTuples(vtkIdType p1, vtkIdType p2, vtkAbstractArray *output);
00127
00130 int Allocate( vtkIdType sz, vtkIdType ext=1000 );
00131
00133 vtkStdString &GetValue(vtkIdType id);
00134
00135
00137
00139 void SetValue(vtkIdType id, vtkStdString value)
00140 { this->Array[id] = value; this->DataChanged(); }
00141
00142 void SetValue(vtkIdType id, const char *value);
00144
00146
00148 virtual void SetNumberOfTuples(vtkIdType number)
00149 { this->SetNumberOfValues(this->NumberOfComponents* number); }
00151
00155 void SetNumberOfValues(vtkIdType number);
00156
00157 vtkIdType GetNumberOfValues() { return this->MaxId + 1; }
00158
00159 int GetNumberOfElementComponents() { return 0; }
00160 int GetElementComponentSize() { return static_cast<int>(sizeof(vtkStdString::value_type)); }
00161
00162
00164
00165 void InsertValue(vtkIdType id, vtkStdString f);
00166
00167 void InsertValue(vtkIdType id, const char *val);
00169
00172 void SetVariantValue(vtkIdType idx, vtkVariant value);
00173
00174
00176
00178 vtkIdType InsertNextValue(vtkStdString f);
00179
00180 vtkIdType InsertNextValue(const char *f);
00182
00183
00185
00188 vtkStdString* WritePointer(vtkIdType id, vtkIdType number);
00189
00191
00192
00194
00196 vtkStdString* GetPointer(vtkIdType id) { return this->Array + id; }
00197 void* GetVoidPointer(vtkIdType id) { return this->GetPointer(id); }
00198
00200
00203 void DeepCopy( vtkAbstractArray* aa );
00204
00205
00206
00208
00217 void SetArray(vtkStdString* array, vtkIdType size, int save);
00218 virtual void SetVoidArray(void* array, vtkIdType size, int save)
00219 { this->SetArray(static_cast<vtkStdString*>(array), size, save); }
00220
00222
00230 unsigned long GetActualMemorySize();
00231
00233 virtual vtkArrayIterator* NewIterator();
00234
00239 virtual vtkIdType GetDataSize();
00240
00242
00243 virtual vtkIdType LookupValue(vtkVariant value);
00244 virtual void LookupValue(vtkVariant value, vtkIdList* ids);
00245
00246 vtkIdType LookupValue(vtkStdString value);
00247 void LookupValue(vtkStdString value, vtkIdList* ids);
00248
00249 vtkIdType LookupValue(const char* value);
00250 void LookupValue(const char* value, vtkIdList* ids);
00252
00259 virtual void DataChanged();
00260
00264 virtual void DataElementChanged(vtkIdType id);
00265
00269 virtual void ClearLookup();
00270
00271 protected:
00272 vtkStringArray(vtkIdType numComp=1);
00273 ~vtkStringArray();
00274
00275 vtkStdString* Array;
00276 vtkStdString* ResizeAndExtend(vtkIdType sz);
00277
00278 int SaveUserArray;
00279
00280 private:
00281 vtkStringArray(const vtkStringArray&);
00282 void operator=(const vtkStringArray&);
00283
00284
00285 vtkStringArrayLookup* Lookup;
00286 void UpdateLookup();
00287
00288 };
00289
00290
00291
00292 #endif