VTK
|
00001 /*========================================================================= 00002 00003 Program: Visualization Toolkit 00004 Module: vtkTypedArray.h 00005 00006 ------------------------------------------------------------------------- 00007 Copyright 2008 Sandia Corporation. 00008 Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, 00009 the U.S. Government retains certain rights in this software. 00010 ------------------------------------------------------------------------- 00011 00012 Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen 00013 All rights reserved. 00014 See Copyright.txt or http://www.kitware.com/Copyright.htm for details. 00015 00016 This software is distributed WITHOUT ANY WARRANTY; without even 00017 the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 00018 PURPOSE. See the above copyright notice for more information. 00019 00020 =========================================================================*/ 00021 00049 #ifndef __vtkTypedArray_h 00050 #define __vtkTypedArray_h 00051 00052 #include "vtkArray.h" 00053 #include "vtkTypeTemplate.h" 00054 00055 class vtkArrayCoordinates; 00056 00057 template<typename T> 00058 class vtkTypedArray : public vtkTypeTemplate<vtkTypedArray<T>, vtkArray> 00059 { 00060 public: 00061 #if defined(_MSC_VER) && _MSC_VER < 1400 00062 vtkVariant GetVariantValue(vtkIdType i) { return this->vtkArray::GetVariantValue(i); } 00063 vtkVariant GetVariantValue(vtkIdType i, vtkIdType j) { return this->vtkArray::GetVariantValue(i,j); } 00064 vtkVariant GetVariantValue(vtkIdType i, vtkIdType j, vtkIdType k) { return this->vtkArray::GetVariantValue(i,j,k); } 00065 void SetVariantValue(vtkIdType i, const vtkVariant& value) { this->vtkArray::SetVariantValue(i, value); } 00066 void SetVariantValue(vtkIdType i, vtkIdType j, const vtkVariant& value) { this->vtkArray::SetVariantValue(i,j, value); } 00067 void SetVariantValue(vtkIdType i, vtkIdType j, vtkIdType k, const vtkVariant& value) { this->vtkArray::SetVariantValue(i,j,k, value); } 00068 #else 00069 using vtkTypeTemplate<vtkTypedArray<T>, vtkArray>::GetVariantValue; 00070 using vtkTypeTemplate<vtkTypedArray<T>, vtkArray>::SetVariantValue; 00071 #endif 00072 00073 void PrintSelf(ostream &os, vtkIndent indent); 00074 00075 // vtkArray API 00076 virtual vtkVariant GetVariantValue(const vtkArrayCoordinates& coordinates); 00077 virtual vtkVariant GetVariantValueN(const vtkIdType n); 00078 virtual void SetVariantValue(const vtkArrayCoordinates& coordinates, const vtkVariant& value); 00079 virtual void SetVariantValueN(const vtkIdType n, const vtkVariant& value); 00080 virtual void CopyValue(vtkArray* source, const vtkArrayCoordinates& source_coordinates, const vtkArrayCoordinates& target_coordinates); 00081 virtual void CopyValue(vtkArray* source, const vtkIdType source_index, const vtkArrayCoordinates& target_coordinates); 00082 virtual void CopyValue(vtkArray* source, const vtkArrayCoordinates& source_coordinates, const vtkIdType target_index); 00083 00085 00088 virtual const T& GetValue(vtkIdType i) = 0; 00089 virtual const T& GetValue(vtkIdType i, vtkIdType j) = 0; 00090 virtual const T& GetValue(vtkIdType i, vtkIdType j, vtkIdType k) = 0; 00091 virtual const T& GetValue(const vtkArrayCoordinates& coordinates) = 0; 00093 00099 virtual const T& GetValueN(const vtkIdType n) = 0; 00100 00102 00105 virtual void SetValue(vtkIdType i, const T& value) = 0; 00106 virtual void SetValue(vtkIdType i, vtkIdType j, const T& value) = 0; 00107 virtual void SetValue(vtkIdType i, vtkIdType j, vtkIdType k, const T& value) = 0; 00108 virtual void SetValue(const vtkArrayCoordinates& coordinates, const T& value) = 0; 00110 00116 virtual void SetValueN(const vtkIdType n, const T& value) = 0; 00117 00118 protected: 00119 vtkTypedArray() {} 00120 ~vtkTypedArray() {} 00121 00122 private: 00123 vtkTypedArray(const vtkTypedArray&); // Not implemented 00124 void operator=(const vtkTypedArray&); // Not implemented 00125 }; 00126 00127 #include "vtkTypedArray.txx" 00128 00129 #endif 00130