xc
IRowConstRef.h
1 // -*-c++-*-
2 //----------------------------------------------------------------------------
3 // xc utils library; general purpose classes and functions.
4 //
5 // Copyright (C) Luis C. Pérez Tato
6 //
7 // XC utils is free software: you can redistribute it and/or modify
8 // it under the terms of the GNU General Public License as published by
9 // the Free Software Foundation, either version 3 of the License, or
10 // (at your option) any later version.
11 //
12 // This software is distributed in the hope that it will be useful, but
13 // WITHOUT ANY WARRANTY; without even the implied warranty of
14 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 // GNU General Public License for more details.
16 //
17 // You should have received a copy of the GNU General Public License
18 // along with this program.
19 // If not, see <http://www.gnu.org/licenses/>.
20 //----------------------------------------------------------------------------
21 //IRowConstRef.h
22 
23 #ifndef IROWCONSTREF_H
24 #define IROWCONSTREF_H
25 
26 
28 //
31 template <class ARRAY_3D>
32 class IRowConstRef: public Array3dBoxConstRef<ARRAY_3D>
33  {
34  public:
35  typedef typename Array3dBoxConstRef<ARRAY_3D>::const_reference const_reference;
36 
37  explicit IRowConstRef(const ARRAY_3D &m,const size_t &f= 1,const size_t &c= 1);
38  IRowConstRef(const ARRAY_3D &m,const size_t &,const size_t &,const size_t &,const size_t &);
39  IRowConstRef(const ARRAY_3D &t,const RangoIndice &layer_range,const size_t &f,const size_t &c);
40  inline virtual ~IRowConstRef(void) {}
41  virtual const_reference operator()(size_t iLayer=1) const
42  { return Array3dBoxConstRef<ARRAY_3D>::operator()(iLayer,1,1); }
43  inline virtual const_reference operator()(size_t iLayer,size_t iRow,size_t col) const
44  { return Array3dBoxConstRef<ARRAY_3D>::operator()(iLayer,iRow,col); }
45  };
46 
48 template<class ARRAY_3D>
49 IRowConstRef<ARRAY_3D>::IRowConstRef(const ARRAY_3D &t,const size_t &f,const size_t &c)
50  : Array3dBoxConstRef<ARRAY_3D>(t,RangoIndice(1,t.getNumberOfLayers()),f,c)
51  {}
52 
54 template<class ARRAY_3D>
55 IRowConstRef<ARRAY_3D>::IRowConstRef(const ARRAY_3D &t,const size_t &iLayer1,const size_t &iLayer2,const size_t &f,const size_t &c)
56  : Array3dBoxConstRef<ARRAY_3D>(t,RangoIndice(iLayer1,iLayer2),f,c)
57  {}
58 
60 template<class ARRAY_3D>
61 IRowConstRef<ARRAY_3D>::IRowConstRef(const ARRAY_3D &t,const RangoIndice &layer_range,const size_t &f,const size_t &c)
62  : Array3dBoxConstRef<ARRAY_3D>(t,layer_range,f,c)
63  {}
64 
65 #endif
Reference to a layer row from the array which points have constant J and K indices.
Definition: IRowConstRef.h:32
Referencia a una "sub array 3D".
Definition: Array3dBoxConstRef.h:34
Rango de variación de un índice, se emplea en BoxConstRef.
Definition: RangoIndice.h:30
IRowConstRef(const ARRAY_3D &m, const size_t &f=1, const size_t &c=1)
Default constructor.
Definition: IRowConstRef.h:49