00001 #ifdef CH_LANG_CC 00002 /* 00003 * _______ __ 00004 * / ___/ / ___ __ _ / / ___ 00005 * / /__/ _ \/ _ \/ V \/ _ \/ _ \ 00006 * \___/_//_/\___/_/_/_/_.__/\___/ 00007 * Please refer to Copyright.txt, in Chombo's root directory. 00008 */ 00009 #endif 00010 00011 #ifndef _LOHISIDE_H_ 00012 #define _LOHISIDE_H_ 00013 #include "BaseNamespaceHeader.H" 00014 00016 00019 class Side 00020 { 00021 public: 00023 00027 enum LoHiSide {Invalid=-1, Lo=0, Hi, NUMSIDES}; 00028 00032 Side() 00033 {} 00034 00038 ~Side() 00039 {} 00040 00042 00045 friend Side::LoHiSide flip(Side::LoHiSide a_side); 00046 00048 static Side::LoHiSide flip(Side::LoHiSide a_side); 00049 00051 00054 friend 00055 int sign(Side::LoHiSide a_side); 00056 }; 00057 00058 // needs a declaration outside the class (Stroustrup 11.5.1) 00059 int sign(Side::LoHiSide a_side); 00060 00062 00066 class SideIterator 00067 { 00068 public: 00070 00073 SideIterator(); 00074 00076 00079 ~SideIterator() 00080 {} 00081 00086 00088 00091 void begin(); 00092 00094 00097 void reset() 00098 { 00099 begin(); 00100 } 00101 00103 00106 void next(); 00107 00109 00112 void operator ++ (); 00113 00120 00122 00125 Side::LoHiSide operator () () const; 00126 00128 00131 bool ok() const; 00132 00133 00134 private: 00135 int m_current; 00136 }; 00137 00138 #include "BaseNamespaceFooter.H" 00139 #endif