00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifndef TNT_FORTRAN_ARRAY3D_H
00023 #define TNT_FORTRAN_ARRAY3D_H
00024
00025 #include <cstdlib>
00026 #include <iostream>
00027 #ifdef TNT_BOUNDS_CHECK
00028 #include <assert.h>
00029 #endif
00030 #include "tnt_array3d.h"
00031
00032 namespace TNT
00033 {
00034
00060 template <class T>
00061 class Fortran_Array3D
00062 {
00063
00064
00065 private:
00066
00067
00068
00069 public:
00070
00071 typedef T value_type;
00072
00073 Fortran_Array3D();
00074 Fortran_Array3D(int m, int n, int k);
00075 Fortran_Array3D(int m, int n, int k, T *a);
00076 Fortran_Array3D(int m, int n, int k, const T &a);
00077 inline Fortran_Array3D(const Fortran_Array3D &A);
00078 inline Fortran_Array3D & operator=(const T &a);
00079 inline Fortran_Array3D & operator=(const Fortran_Array3D &A);
00080 inline Fortran_Array3D & ref(const Fortran_Array3D &A);
00081 Fortran_Array3D copy() const;
00082 Fortran_Array3D & inject(const Fortran_Array3D & A);
00083 inline T& operator()(int i, int j, int k);
00084 inline const T& operator()(int i, int j, int k) const ;
00085 inline int dim1() const;
00086 inline int dim2() const;
00087 inline int dim3() const;
00088 inline int ref_count() const;
00089 ~Fortran_Array3D();
00090
00091
00092 };
00093
00097 template <class T>
00098 Fortran_Array3D<T>::Fortran_Array3D();
00099
00100
00107 template <class T>
00108 Fortran_Array3D<T>::Fortran_Array3D(const Fortran_Array3D<T> &A);
00109
00110
00111
00124 template <class T>
00125 Fortran_Array3D<T>::Fortran_Array3D(int m, int n, int k);
00126
00127
00128
00139 template <class T>
00140 Fortran_Array3D<T>::Fortran_Array3D(int m, int n, int k, const T &val) ;
00141
00142
00156 template <class T>
00157 Fortran_Array3D<T>::Fortran_Array3D(int m, int n, int k, T *a) ;
00158
00159
00160
00161
00169 template <class T>
00170 inline T& Fortran_Array3D<T>::operator()(int i, int j, int k) ;
00171
00179 template <class T>
00180 inline const T& Fortran_Array3D<T>::operator()(int i, int j, int k) const;
00181
00182
00186 template <class T>
00187 Fortran_Array3D<T> & Fortran_Array3D<T>::operator=(const T &a);
00188
00189
00196 template <class T>
00197 Fortran_Array3D<T> Fortran_Array3D<T>::copy() const;
00198
00222 template <class T>
00223 Fortran_Array3D<T> & Fortran_Array3D<T>::inject(const Fortran_Array3D &A);
00224
00225
00226
00227
00228
00239 template <class T>
00240 Fortran_Array3D<T> & Fortran_Array3D<T>::ref(const Fortran_Array3D<T> &A);
00241
00245 template <class T>
00246 Fortran_Array3D<T> & Fortran_Array3D<T>::operator=(const Fortran_Array3D<T> &A);
00247
00251 template <class T>
00252 inline int Fortran_Array3D<T>::dim1() const;
00253
00257 template <class T>
00258 inline int Fortran_Array3D<T>::dim2() const ;
00259
00263 template <class T>
00264 inline int Fortran_Array3D<T>::dim3() const ;
00265
00266
00271 template <class T>
00272 inline int Fortran_Array3D<T>::ref_count() const;
00273
00274 template <class T>
00275 Fortran_Array3D<T>::~Fortran_Array3D();
00276
00277
00278 }
00279
00280 #endif
00281
00282