00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028 #ifndef _LOHISIDE_H_
00029 #define _LOHISIDE_H_
00030
00032
00035 class Side
00036 {
00037 public:
00039
00043 enum LoHiSide {Invalid=-1, Lo=0, Hi, NUMSIDES};
00044
00048 Side() {};
00049
00053 ~Side() {};
00055
00058 friend
00059 Side::LoHiSide
00060 flip(Side::LoHiSide side);
00061
00063 static
00064 Side::LoHiSide
00065 flip(Side::LoHiSide side);
00066
00068
00071 friend
00072 int
00073 sign(Side::LoHiSide side);
00074 };
00075
00076
00077
00079
00083 class SideIterator
00084 {
00085 public:
00086
00088
00091 SideIterator();
00092
00094
00097 ~SideIterator() {};
00098
00103
00105
00108 void begin();
00109
00111
00114 void reset()
00115 {begin();}
00116
00118
00121 void next();
00122
00124
00127 void operator++();
00128
00135
00137
00140 Side::LoHiSide operator() () const;
00141
00143
00146 bool ok() const;
00147
00148 private:
00149 int current;
00150 };
00151
00152 #endif