22#ifndef TNT_FORTRAN_ARRAY2D_H
23#define TNT_FORTRAN_ARRAY2D_H
28#ifdef TNT_BOUNDS_CHECK
32#include "tnt_i_refvec.h"
49 void initialize_(
int n);
50 void copy_(T* p,
const T* q,
int len);
51 void set_(T* begin, T* end,
const T& val);
67 inline T& operator()(
int i,
int j);
68 inline const T& operator()(
int i,
int j)
const ;
69 inline int dim1()
const;
70 inline int dim2()
const;
75 inline int ref_count()
const;
84Fortran_Array2D<T>::Fortran_Array2D(
const Fortran_Array2D<T> &A) : v_(A.v_),
85 m_(A.m_), n_(A.n_), data_(A.data_) {}
90Fortran_Array2D<T>::Fortran_Array2D(
int m,
int n) : v_(m*n), m_(m), n_(n),
94Fortran_Array2D<T>::Fortran_Array2D(
int m,
int n,
const T &val) :
95 v_(m*n), m_(m), n_(n), data_(v_.begin())
97 set_(data_, data_+m*n, val);
102Fortran_Array2D<T>::Fortran_Array2D(
int m,
int n, T *a) : v_(a),
103 m_(m), n_(n), data_(v_.begin()) {}
109inline T& Fortran_Array2D<T>::operator()(
int i,
int j)
111#ifdef TNT_BOUNDS_CHECK
118 return v_[ (j-1)*m_ + (i-1) ];
123inline const T& Fortran_Array2D<T>::operator()(
int i,
int j)
const
125#ifdef TNT_BOUNDS_CHECK
132 return v_[ (j-1)*m_ + (i-1) ];
138Fortran_Array2D<T> & Fortran_Array2D<T>::operator=(
const T &a)
140 set_(data_, data_+m_*n_, a);
145Fortran_Array2D<T> Fortran_Array2D<T>::copy()
const
148 Fortran_Array2D B(m_,n_);
156Fortran_Array2D<T> & Fortran_Array2D<T>::inject(
const Fortran_Array2D &A)
158 if (m_ == A.m_ && n_ == A.n_)
159 copy_(data_, A.data_, m_*n_);
167Fortran_Array2D<T> & Fortran_Array2D<T>::ref(
const Fortran_Array2D<T> &A)
180Fortran_Array2D<T> & Fortran_Array2D<T>::operator=(
const Fortran_Array2D<T> &A)
186inline int Fortran_Array2D<T>::dim1()
const {
return m_; }
189inline int Fortran_Array2D<T>::dim2()
const {
return n_; }
193Fortran_Array2D<T>::~Fortran_Array2D()
198inline int Fortran_Array2D<T>::ref_count()
const {
return v_.ref_count(); }
204void Fortran_Array2D<T>::set_(T* begin, T* end,
const T& a)
206 for (T* p=begin; p<end; p++)
212void Fortran_Array2D<T>::copy_(T* p,
const T* q,
int len)
Definition tnt_fortran_array2d.h:39
Definition tnt_i_refvec.h:56
Definition tnt_array1d.h:36