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_ARRAY2D_H
00023 #define TNT_FORTRAN_ARRAY2D_H
00024
00025 #include <cstdlib>
00026 #include <iostream>
00027
00028 #ifdef TNT_BOUNDS_CHECK
00029 #include <assert.h>
00030 #endif
00031
00032 #include "tnt_array2d.h"
00033
00034 namespace TNT
00035 {
00036
00062 template <class T>
00063 class Fortran_Array2D
00064 {
00065
00066
00067
00068 public:
00069
00070 typedef T value_type;
00071
00072 Fortran_Array2D();
00073 Fortran_Array2D(int m, int n);
00074 Fortran_Array2D(int m, int n, T *a);
00075 Fortran_Array2D(int m, int n, const T &a);
00076 inline Fortran_Array2D(const Fortran_Array2D &A);
00077 inline Fortran_Array2D & operator=(const T &a);
00078 inline Fortran_Array2D & operator=(const Fortran_Array2D &A);
00079 inline Fortran_Array2D & ref(const Fortran_Array2D &A);
00080 Fortran_Array2D copy() const;
00081 Fortran_Array2D & inject(const Fortran_Array2D & A);
00082 inline T& operator()(int i, int j);
00083 inline const T& operator()(int i, int j) const ;
00084 inline int dim1() const;
00085 inline int dim2() const;
00086 inline int ref_count() const;
00087 ~Fortran_Array2D();
00088
00089
00090 };
00091
00095 template <class T>
00096 Fortran_Array2D<T>::Fortran_Array2D();
00097
00098
00105 template <class T>
00106 Fortran_Array2D<T>::Fortran_Array2D(const Fortran_Array2D<T> &A);
00107
00108
00109
00121 template <class T>
00122 Fortran_Array2D<T>::Fortran_Array2D(int m, int n);
00123
00124
00125
00135 template <class T>
00136 Fortran_Array2D<T>::Fortran_Array2D(int m, int n, const T &val);
00137
00138
00153 template <class T>
00154 Fortran_Array2D<T>::Fortran_Array2D(int m, int n, T *a);
00155
00156
00157
00158
00166 template <class T>
00167 inline T& Fortran_Array2D<T>::operator()(int i, int j) ;
00168
00176 template <class T>
00177 inline const T& Fortran_Array2D<T>::operator()(int i, int j) const;
00178
00179
00183 template <class T>
00184 Fortran_Array2D<T> & Fortran_Array2D<T>::operator=(const T &a);
00185
00186
00193 template <class T>
00194 Fortran_Array2D<T> Fortran_Array2D<T>::copy() const;
00195
00196
00220 template <class T>
00221 Fortran_Array2D<T> & Fortran_Array2D<T>::inject(const Fortran_Array2D &A);
00222
00223
00224
00225
00226
00237 template <class T>
00238 Fortran_Array2D<T> & Fortran_Array2D<T>::ref(const Fortran_Array2D<T> &A);
00239
00243 template <class T>
00244 Fortran_Array2D<T> & Fortran_Array2D<T>::operator=(const Fortran_Array2D<T> &A);
00245
00249 template <class T>
00250 inline int Fortran_Array2D<T>::dim1() const ;
00251
00255 template <class T>
00256 inline int Fortran_Array2D<T>::dim2() const ;
00257
00258
00259
00264 template <class T>
00265 inline int Fortran_Array2D<T>::ref_count() ;
00266
00267 template <class T>
00268 Fortran_Array2D<T>::~Fortran_Array2D();
00269
00270
00271
00272
00273 }
00274
00275 #endif
00276
00277