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