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_ARRAY1D_H
00023 #define TNT_FORTRAN_ARRAY1D_H
00024 
00025 #include <cstdlib>
00026 #include <iostream>
00027 #ifdef TNT_BOUNDS_CHECK
00028 #include <assert.h>
00029 #endif
00030 #include "tnt_array1d.h"
00031 
00032 namespace TNT
00033 {
00034 
00058 template <class T>
00059 class Fortran_Array1D 
00060 {
00061 
00062 
00063   public:
00064 
00065     typedef         T   value_type;
00066 
00067                Fortran_Array1D();
00068                Fortran_Array1D(int n);
00069                Fortran_Array1D(int n,  T *a);
00070                Fortran_Array1D(int n, const T &a);
00071     inline Fortran_Array1D(const Fortran_Array1D &A);
00072         inline Fortran_Array1D & operator=(const T &a);
00073         inline Fortran_Array1D & operator=(const Fortran_Array1D &A);
00074         inline Fortran_Array1D & ref(const Fortran_Array1D &A);
00075                Fortran_Array1D copy() const;
00076                    Fortran_Array1D & inject(const Fortran_Array1D & A);
00077         inline T& operator()(int i);
00078         inline const T& operator()(int i) const ;
00079         inline int dim() const;
00080         inline int dim1() const;
00081         inline int ref_count() const;
00082                ~Fortran_Array1D();
00083 
00084 
00085 };
00086 
00090 template <class T>
00091 Fortran_Array1D<T>::Fortran_Array1D();
00092 
00093 
00100 template <class T>
00101 Fortran_Array1D<T>::Fortran_Array1D(const Fortran_Array1D<T> &A);
00102 
00103 
00104 
00115 template <class T>
00116 Fortran_Array1D<T>::Fortran_Array1D(int n);
00117 
00118 
00119 
00128 template <class T>
00129 Fortran_Array1D<T>::Fortran_Array1D(int n, const T &val);
00130 
00131 
00142 template <class T>
00143 Fortran_Array1D<T>::Fortran_Array1D(int n, T *a);
00144 
00145 
00146 
00147 
00155 template <class T>
00156 inline T& Fortran_Array1D<T>::operator()(int i) ;
00157 
00165 template <class T>
00166 inline const T& Fortran_Array1D<T>::operator()(int i)  const;
00167 
00168 
00172 template <class T>
00173 Fortran_Array1D<T> & Fortran_Array1D<T>::operator=(const T &a);
00174 
00181 template <class T>
00182 Fortran_Array1D<T> Fortran_Array1D<T>::copy() const;
00183 
00207 template <class T>
00208 Fortran_Array1D<T> & Fortran_Array1D<T>::inject(const Fortran_Array1D &A);
00209 
00210 
00211 
00212 
00213 
00224 template <class T>
00225 Fortran_Array1D<T> & Fortran_Array1D<T>::ref(const Fortran_Array1D<T> &A);
00226 
00230 template <class T>
00231 Fortran_Array1D<T> & Fortran_Array1D<T>::operator=(const Fortran_Array1D<T> &A);
00232 
00236 template <class T>
00237 inline int Fortran_Array1D<T>::dim1() const ;
00238 
00239 
00243 template <class T>
00244 inline int Fortran_Array1D<T>::dim() const ; 
00245 
00246 
00247 
00248 
00249 template <class T>
00250 Fortran_Array1D<T>::~Fortran_Array1D();
00251 
00252 
00253 
00254 
00255 } 
00256 
00257 #endif
00258 
00259