CARMA C++
AxisRange.h
Go to the documentation of this file.
1 #ifndef SZA_UTIL_AXISRANGE_H
2 #define SZA_UTIL_AXISRANGE_H
3 
13 
14 #include "carma/szaarrayutils/szaregs.h"
15 
16 namespace sza {
17  namespace util {
18 
19  class AxisRange {
20  public:
21 
25  AxisRange(CoordAxes axes, CoordRange range);
26  AxisRange(CoordAxes& axes, CoordRange* range=0);
27  AxisRange(CoordAxes* axes, CoordRange* range=0);
28  AxisRange(RegMapBlock* block, CoordRange* range=0);
29 
34  AxisRange(unsigned nEl);
35  AxisRange();
36 
40  void setTo(CoordAxes* axes, CoordRange* range);
41  void setToDc(CoordAxes* axes, CoordRange* range);
42  void setTo(unsigned nEl);
43 
47  virtual ~AxisRange();
48 
52  inline unsigned currentElement() {
53  return iElCurrent_;
54  }
55 
59  inline unsigned currentIterator() {
60  return iter_;
61  }
62 
66  const AxisRange& operator++();
67 
71  void reset();
72 
76  bool isEnd();
77 
81  friend std::ostream& operator<<(std::ostream& os, AxisRange& range);
82 
86  Coord currentCoord();
87 
88  unsigned nEl();
89 
90  private:
91 
92  unsigned iter_;
93  unsigned iElCurrent_;
94  std::vector<Range<unsigned> > ranges_;
95  std::vector<Range<unsigned> >::iterator iRange_;
96  CoordAxes axes_;
97  unsigned nEl_;
98 
99  }; // End class AxisRange
100 
101  } // End namespace util
102 } // End namespace sza
103 
104 
105 
106 #endif // End #ifndef SZA_UTIL_AXISRANGE_H
Tagged: Thu Jun 24 17:19:46 UTC 2004.
Tagged: Fri Sep 17 15:51:07 PDT 2004.