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 _INTERVAL_H_ 00012 #define _INTERVAL_H_ 00013 #include "BaseNamespaceHeader.H" 00014 00015 // 00016 // Little struct for passing component ranges in code. 00017 // 00018 00020 00023 struct Interval 00024 { 00025 Interval() 00026 : 00027 m_begin(0), 00028 m_end(-1) 00029 {} 00030 00032 00035 Interval(int a_firstComp, int a_lastComp) 00036 : 00037 m_begin(a_firstComp), 00038 m_end(a_lastComp) 00039 {} 00040 00041 void define(int a_firstComp, 00042 int a_lastComp) 00043 { 00044 m_begin = a_firstComp; 00045 m_end = a_lastComp; 00046 } 00047 00049 00052 int begin() const; 00053 00055 00058 int end() const; 00059 00061 00064 int size() const 00065 { 00066 return m_end-m_begin+1; 00067 } 00068 00070 bool contains(int a_val) const 00071 { 00072 return a_val >= m_begin && a_val <= m_end; 00073 } 00074 00076 bool operator==(const Interval& p) const 00077 { 00078 return ( (m_begin == p.m_begin) && (m_end == p.m_end)); 00079 } 00080 00081 private: 00082 int m_begin, m_end; 00083 }; 00084 00085 #ifndef WRAPPER 00086 inline int Interval::begin() const 00087 { 00088 return m_begin; 00089 } 00090 00091 inline int Interval::end() const 00092 { 00093 return m_end; 00094 } 00095 #endif 00096 00097 #include "BaseNamespaceFooter.H" 00098 #endif