23 #ifndef ARRAY3DBOXCONSTREF_H 24 #define ARRAY3DBOXCONSTREF_H 26 #include "Array3dBoxRefBase.h" 27 #include "Array3dRange.h" 33 template <
class ARRAY_3D>
38 typedef typename ARRAY_3D::const_reference const_reference;
40 explicit Array3dBoxConstRef(
const ARRAY_3D &t,
const size_t &iLayer=1,
const size_t &f= 1,
const size_t &c= 1);
50 inline virtual const_reference operator()(
size_t iLayer=1,
size_t iRow=1,
size_t iCol=1)
const 54 template<
class ARRAY_3D>
56 :
Array3dBoxRefBase(iLayer,f,c,t.getNumberOfLayers(),t.getNumberOfRows(),t.getNumberOfColumns()),ttz(t) {}
58 template<
class ARRAY_3D>
62 template<
class ARRAY_3D>
64 :
Array3dBoxRefBase(clip(layer_range,t.getNumberOfLayers()),clip(row_range,t.getNumberOfRows()),clip(column_range,t.getNumberOfColumns())),ttz(t) {}
66 template<
class ARRAY_3D>
68 :
Array3dBoxRefBase(iLayer,clip(row_range,t.getNumberOfRows()),clip(column_range,t.getNumberOfColumns())),ttz(t)
70 if(iLayer>t.getNumberOfLayers())
71 std::clog <<
"Aviso; layer index: " << iLayer
72 <<
" out of range in array with ranges: " 76 template<
class ARRAY_3D>
78 :
Array3dBoxRefBase(clip(layer_range,t.getNumberOfLayers()),iRow,clip(column_range,t.getNumberOfColumns())),ttz(t)
80 if(iRow>t.getNumberOfRows())
81 std::clog <<
"Aviso; row index: " << iRow
82 <<
" out of range in array with ranges: " 86 template<
class ARRAY_3D>
88 :
Array3dBoxRefBase(clip(layer_range,t.getNumberOfLayers()),clip(row_range,t.getNumberOfRows()),iCol),ttz(t)
90 if(iCol>t.getNumberOfColumns())
91 std::clog <<
"Aviso; column index: " << iCol
92 <<
" out of range in array with ranges: " 96 template<
class ARRAY_3D>
100 if(iLayer>t.getNumberOfLayers())
101 std::clog <<
"Aviso; layer index: " << iLayer
102 <<
" out of range in array with ranges: " 104 if(iRow>t.getNumberOfRows())
105 std::clog <<
"Aviso; row index: " << iRow
106 <<
" out of range in array with ranges: " 110 template<
class ARRAY_3D>
114 if(iLayer>t.getNumberOfLayers())
115 std::clog <<
"Aviso; layer index: " << iLayer
116 <<
" out of range in array with ranges: " 118 if(iCol>t.getNumberOfColumns())
119 std::clog <<
"Aviso; column index: " << iCol
120 <<
" out of range in array with ranges: " 124 template<
class ARRAY_3D>
128 if(iRow>t.getNumberOfRows())
129 std::clog <<
"Aviso; row index: " << iRow
130 <<
" out of range in array with ranges: " 132 if(iCol>t.getNumberOfColumns())
133 std::clog <<
"Aviso; column index: " << iCol
134 <<
" out of range in array with ranges: " 138 template <
class ARRAY_3D>
139 inline std::ostream &operator<<(std::ostream &os,const Array3dBoxConstRef<ARRAY_3D> &c)
145 template <
class ARRAY_3D,
class TRF>
150 const size_t n_layers= box.getNumberOfLayers();
151 const size_t n_rows= box.getNumberOfRows();
152 const size_t n_columns= box.getNumberOfColumns();
154 for(
size_t i=1;i<=
n_rows;i++)
156 retval(i,j,k)= Transform(box(i,j,k));
size_t offset_cp
Offset layer.
Definition: Array3dBoxRefBase.h:40
size_t n_layers
number of layers.
Definition: Array3dBoxRefBase.h:37
size_t offset_c
Offset column.
Definition: Array3dBoxRefBase.h:42
size_t offset_f
Offset row.
Definition: Array3dBoxRefBase.h:41
Referencia a una "sub array 3D".
Definition: Array3dBoxConstRef.h:34
Indices that define a block of an array.
Definition: Array3dBoxRefBase.h:34
size_t n_columns
number of columns.
Definition: Array3dBoxRefBase.h:39
size_t n_rows
number of rows.
Definition: Array3dBoxRefBase.h:38
Rangos de variación de tres índices, se emplea en BoxConstRef.
Definition: Array3dRange.h:32
Rango de variación de un índice, se emplea en BoxConstRef.
Definition: RangoIndice.h:30