VTK
dox/Common/vtkTypedArray.h
Go to the documentation of this file.
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