00001
00039 #ifndef INC_RVC_ELEMENT_H
00040 #define INC_RVC_ELEMENT_H
00041
00042 #ifndef INC_MI32_ELEMTYPE_H
00043 #include <mi32/elemtype.h>
00044 #endif
00045
00046
00047 namespace RVC {
00048
00050 class ELEMENT {
00051 public:
00052
00054 ELEMENT (
00055 ) : m_Number(ELEMENTNUM_None), m_Type(ELEMTYPE_Empty) {}
00056
00058 explicit ELEMENT (
00059 ELEMTYPE ElemType
00060 ) : m_Number(ELEMENTNUM_None), m_Type(ElemType) {}
00061
00063 explicit ELEMENT (
00064 ELEMNUM ElemNum,
00065 ELEMTYPE ElemType = ELEMTYPE_Empty
00066 ) : m_Number(ElemNum), m_Type(ElemType) {}
00067
00069 ELEMENT (
00070 const ELEMENT& rhs,
00071 ELEMTYPE ElemType
00072 ) : m_Number(rhs.m_Number), m_Type((rhs.m_Type == ELEMTYPE_Empty) ? ElemType : rhs.m_Type) {}
00073
00075 void Clear (
00076 ) { m_Number = ELEMENTNUM_None; m_Type = ELEMTYPE_Empty; }
00077
00079 ELEMNUM GetNumber (
00080 ) const { return (m_Number); }
00081
00083 ELEMTYPE GetType (
00084 ) const { return (m_Type); }
00085
00087 void SetNumber (
00088 ELEMNUM ElemNum
00089 ) { m_Number = ElemNum; }
00090
00092 void SetType (
00093 ELEMTYPE ElemType
00094 ) { m_Type = ElemType; }
00095
00096 private:
00097 #ifndef GENERATING_DOXYGEN_OUTPUT
00098 ELEMNUM m_Number;
00099 ELEMTYPE m_Type;
00100 #endif // GENERATING_DOXYGEN_OUTPUT
00101
00102 };
00103
00105 inline bool operator== (
00106 const ELEMENT& lhs,
00107 const ELEMENT& rhs
00108 ) { return (lhs.GetNumber() == rhs.GetNumber() && lhs.GetType() == rhs.GetType()); }
00109
00111 inline bool operator!= (
00112 const ELEMENT& lhs,
00113 const ELEMENT& rhs
00114 ) { return (!operator==(lhs,rhs)); }
00115
00119 inline bool operator< (
00120 const ELEMENT& lhs,
00121 const ELEMENT& rhs
00122 ) {
00123 if (lhs.GetType() == rhs.GetType()) return (lhs.GetNumber() < rhs.GetNumber());
00124 return (static_cast<int>(lhs.GetType()) < static_cast<int>(rhs.GetType()));
00125 }
00126
00127 }
00128
00129 #endif // INC_RVC_ELEMENT_H
00130