22#ifndef TNT_FORTRAN_ARRAY3D_H
23#define TNT_FORTRAN_ARRAY3D_H
27#ifdef TNT_BOUNDS_CHECK
30#include "tnt_i_refvec.h"
63 inline T& operator()(
int i,
int j,
int k);
64 inline const T& operator()(
int i,
int j,
int k)
const ;
65 inline int dim1()
const;
66 inline int dim2()
const;
67 inline int dim3()
const;
68 inline int ref_count()
const;
79Fortran_Array3D<T>::Fortran_Array3D(
const Fortran_Array3D<T> &A) :
80 v_(A.v_), m_(A.m_), n_(A.n_), k_(A.k_), data_(A.data_) {}
85Fortran_Array3D<T>::Fortran_Array3D(
int m,
int n,
int k) :
86 v_(m*n*k), m_(m), n_(n), k_(k), data_(v_.begin()) {}
91Fortran_Array3D<T>::Fortran_Array3D(
int m,
int n,
int k,
const T &val) :
92 v_(m*n*k), m_(m), n_(n), k_(k), data_(v_.begin())
94 for (T* p = data_; p < data_ + m*n*k; p++)
99Fortran_Array3D<T>::Fortran_Array3D(
int m,
int n,
int k, T *a) :
100 v_(a), m_(m), n_(n), k_(k), data_(v_.begin()) {}
106inline T& Fortran_Array3D<T>::operator()(
int i,
int j,
int k)
108#ifdef TNT_BOUNDS_CHECK
117 return data_[(k-1)*m_*n_ + (j-1) * m_ + i-1];
122inline const T& Fortran_Array3D<T>::operator()(
int i,
int j,
int k)
const
124#ifdef TNT_BOUNDS_CHECK
133 return data_[(k-1)*m_*n_ + (j-1) * m_ + i-1];
138Fortran_Array3D<T> & Fortran_Array3D<T>::operator=(
const T &a)
141 T *end = data_ + m_*n_*k_;
143 for (T *p=data_; p != end; *p++ = a);
149Fortran_Array3D<T> Fortran_Array3D<T>::copy()
const
152 Fortran_Array3D B(m_, n_, k_);
160Fortran_Array3D<T> & Fortran_Array3D<T>::inject(
const Fortran_Array3D &A)
163 if (m_ == A.m_ && n_ == A.n_ && k_ == A.k_)
166 T *end = data_ + m_*n_*k_;
167 const T* q = A.data_;
168 for (; p < end; *p++ = *q++);
177Fortran_Array3D<T> & Fortran_Array3D<T>::ref(
const Fortran_Array3D<T> &A)
192Fortran_Array3D<T> & Fortran_Array3D<T>::operator=(
const Fortran_Array3D<T> &A)
198inline int Fortran_Array3D<T>::dim1()
const {
return m_; }
201inline int Fortran_Array3D<T>::dim2()
const {
return n_; }
204inline int Fortran_Array3D<T>::dim3()
const {
return k_; }
208inline int Fortran_Array3D<T>::ref_count()
const
210 return v_.ref_count();
214Fortran_Array3D<T>::~Fortran_Array3D()
Definition tnt_fortran_array3d.h:37
Definition tnt_i_refvec.h:56
Definition tnt_array1d.h:36