23 #ifndef ARRAY3DBOXVARREF_H    24 #define ARRAY3DBOXVARREF_H    26 #include "Array3dBoxRefBase.h"    32 template <
class ARRAY_3D>
    37     typedef typename ARRAY_3D::const_reference const_reference;
    38     typedef typename ARRAY_3D::reference reference;
    40     explicit Array3dBoxVarRef(ARRAY_3D &m,
const size_t &iLayer=1,
const size_t &f= 1,
const size_t &c= 1);
    49     inline virtual const_reference operator()(
size_t iLayer=1,
size_t iRow=1,
size_t col=1)
 const    51     inline virtual reference operator()(
size_t iLayer=1,
size_t iRow=1,
size_t col=1)
    55 template<
class ARRAY_3D>
    57   : 
Array3dBoxRefBase(iLayer,f,c,t.getNumberOfLayers(),t.getNumberOfRows(),t.getNumberOfColumns()),ttz(t) {}
    59 template<
class ARRAY_3D>
    63 template<
class ARRAY_3D>
    65   : 
Array3dBoxRefBase(iLayer,clip(row_range,t.getNumberOfRows()),clip(column_range,t.getNumberOfColumns())),ttz(t) 
    67     if(iLayer>ttz.getNumberOfLayers())
    68       std::clog << 
"Aviso; layer index: " << iLayer << 
" out of range in array with ranges: " << 
Array3dRange(ttz) << std::endl;
    71 template<
class ARRAY_3D>
    73   : 
Array3dBoxRefBase(clip(layer_range,t.getNumberOfLayers()),iRow,clip(column_range,t.getNumberOfColumns())),ttz(t)
    75     if(iRow>ttz.getNumberOfRows())
    76       std::clog << 
"Aviso; row index: " << iRow
    77         << 
" out of range in array with ranges: "    81 template<
class ARRAY_3D>
    83   : 
Array3dBoxRefBase(clip(layer_range,t.getNumberOfLayers()),clip(row_range,t.getNumberOfRows()),col),ttz(t)
    85     if(col>ttz.getNumberOfColumns())
    86       std::clog << 
"Aviso; column index: " << col
    87         << 
" out of range in array with ranges: "    91 template<
class ARRAY_3D>
    95     if(iLayer>ttz.getNumberOfLayers())
    96       std::clog << 
"Aviso; layer index: " << iLayer
    97         << 
" out of range in array with ranges: "    99     if(iRow>ttz.getNumberOfRows())
   100       std::clog << 
"Aviso; row index: " << iRow
   101         << 
" out of range in array with ranges: "   105 template<
class ARRAY_3D>
   109     if(iLayer>ttz.getNumberOfLayers())
   110       std::clog << 
"Aviso; layer index: " << iLayer
   111         << 
" out of range in array with ranges: "   113     if(col>ttz.getNumberOfColumns())
   114       std::clog << 
"Aviso; column index: " << col
   115         << 
" out of range in array with ranges: "   119 template<
class ARRAY_3D>
   123     if(iRow>ttz.getNumberOfRows())
   124       std::clog << 
"Aviso; row index: " << iRow
   125         << 
" out of range in array with ranges: "   127     if(col>ttz.getNumberOfColumns())
   128       std::clog << 
"Aviso; column index: " << col
   129         << 
" out of range in array with ranges: "   133 template <
class ARRAY_3D>
   134 inline std::ostream &operator<<(std::ostream &os,const Array3dBoxVarRef<ARRAY_3D> &c)
   140 template <
class ARRAY_3D, 
class TRF>
   145     const size_t n_layers= box.getNumberOfLayers();
   146     const size_t n_rows= box.getNumberOfRows();
   147     const size_t n_columns= box.getNumberOfColumns();
   149       for(
size_t i=1;i<=
n_rows;i++) 
   151           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
Reference to a "sub-array". 
Definition: Array3dBoxVarRef.h:33
size_t offset_f
Offset row. 
Definition: Array3dBoxRefBase.h:41
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