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