Proto
Proto_LoHiSide.H
1 #ifndef _Proto_LOHISIDE_H_
2 #define _Proto_LOHISIDE_H_
3 
4 namespace Proto
5 {
7 
10  class Side
11  {
12  public:
14 
18  enum LoHiSide
19  {
20  Invalid=-1,
21  Lo=0,
22  Hi,
23  NUMSIDES
24  };
25 
29  Side()
30  {
31  }
32 
37  {
38  }
39 
41  inline static Side::LoHiSide flip(const Side::LoHiSide& a_side)
42  {
43  return (a_side == Side::Lo) ? Side::Hi : Side::Lo;
44  }
45 
46  };
47 
49  inline int sign(const Side::LoHiSide& a_side)
50  {
51  return (a_side == Side::Lo) ? -1 : 1;
52  }
53 
55  inline Side::LoHiSide flip(const Side::LoHiSide& a_side)
56  {
57  //PR_assert((a_side == Side::Lo) || (a_side == Side::Hi));
58 
59  return (a_side == Side::Lo) ? Side::Hi : Side::Lo;
60  }
61 
63 
68  {
69  public:
71 
75  {
76  m_current = -1;
77  reset();
78  }
79 
81 
85  {}
86 
91 
93 
96  inline void begin()
97  {
98  m_current = 0;
99  }
100 
102 
105  inline void reset()
106  {
107  begin();
108  }
109 
111 
114  inline void next()
115  {
116  ++m_current;
117  }
118 
120 
123  inline void operator ++ ()
124  {
125  ++m_current;
126  }
127 
134 
136 
139  inline Side::LoHiSide operator () () const
140  {
141  switch (m_current)
142  {
143  case 0:
144  return Side::Lo;
145  //break;
146 
147  case 1:
148  return Side::Hi;
149  //break;
150 
151  default:
152  return Side::Invalid;
153  //break;
154  }
155  }
156 
157 
159 
162  inline bool ok() const
163  {
164  return ((m_current > -1) && (m_current < Side::NUMSIDES));
165  }
166 
167 
168  private:
169  int m_current;
170  };
171 
172 }
173 #endif
void begin()
Definition: Proto_LoHiSide.H:96
LoHiSide
Definition: Proto_LoHiSide.H:18
void reset()
Definition: Proto_LoHiSide.H:105
~SideIterator()
Definition: Proto_LoHiSide.H:84
~Side()
Definition: Proto_LoHiSide.H:36
void next()
Definition: Proto_LoHiSide.H:114
Definition: Proto_Box.H:11
Side()
Definition: Proto_LoHiSide.H:29
bool ok() const
Definition: Proto_LoHiSide.H:162
Encapsulation of high or low side.
Definition: Proto_LoHiSide.H:10
SideIterator()
Definition: Proto_LoHiSide.H:74
Iterator for low and high side.
Definition: Proto_LoHiSide.H:67