27#ifdef TNT_BOUNDS_CHECK
31#include "tnt_array1d.h"
157 inline operator T**();
166 inline operator const T**()
const;
189 inline T* operator[](
int i);
190 inline const T* operator[](
int i)
const;
191 inline int dim1()
const;
192 inline int dim2()
const;
198 inline int ref_count();
199 inline int ref_count_data();
200 inline int ref_count_dim1();
223 m_(A.m_), n_(A.n_) {}
234 for (
int i=0; i<m; i++)
252 for (
int i=0; i<m; i++)
267 for (
int i=0; i<m; i++)
279#ifdef TNT_BOUNDS_CHECK
290inline const T* Array2D<T>::operator[](
int i)
const
292#ifdef TNT_BOUNDS_CHECK
306 for (
int i=0; i<m_; i++)
307 for (
int j=0; j<n_; j++)
320 for (
int i=0; i<m_; i++)
321 for (
int j=0; j<n_; j++)
330Array2D<T> & Array2D<T>::inject(
const Array2D &A)
332 if (A.m_ == m_ && A.n_ == n_)
334 for (
int i=0; i<m_; i++)
335 for (
int j=0; j<n_; j++)
345Array2D<T> & Array2D<T>::ref(
const Array2D<T> &A)
370inline int Array2D<T>::dim2()
const {
return n_; }
374Array2D<T>::~Array2D() {}
387 return static_cast<const T**
>(&(v_[0]));
415 T* p = &(data_[0]) + i0 * n_ + j0;
416 for (
int i=0; i<m; i++)
427 return ref_count_data();
433inline int Array2D<T>::ref_count_data()
435 return data_.ref_count();
439inline int Array2D<T>::ref_count_dim1()
441 return v_.ref_count();
Definition tnt_array1d.h:40
Definition tnt_array2d.h:65
Array2D(const Array2D &A)
Definition tnt_array2d.h:222
T value_type
Definition tnt_array2d.h:94
Array2D & operator=(const Array2D &A)
Definition tnt_array2d.h:361
Array2D(int m, int n, T *a)
Definition tnt_array2d.h:261
Array2D(int m, int n)
Definition tnt_array2d.h:229
Array2D(int m, int n, const T &val)
Definition tnt_array2d.h:245
Array2D()
Definition tnt_array2d.h:218
Array2D & operator=(const T &val)
Definition tnt_array2d.h:302
Array2D subarray(int i0, int i1, int j0, int j1)
Definition tnt_array2d.h:399
Definition tnt_array1d.h:36