BALL
1.4.1
|
00001 // -*- Mode: C++; tab-width: 2; -*- 00002 // vi: set ts=2: 00003 // 00004 00005 #ifndef BALL_CONCEPT_COMPARATOR_H 00006 #define BALL_CONCEPT_COMPARATOR_H 00007 00008 #ifndef BALL_COMMON_H 00009 # include <BALL/common.h> 00010 #endif 00011 00012 namespace BALL 00013 { 00014 00020 template <typename T> 00021 class Comparator 00022 { 00023 public: 00024 00028 00031 Comparator() 00032 ; 00033 00036 virtual ~Comparator() 00037 ; 00038 00040 00043 00046 virtual bool isEqual(const T& a, const T& b) const 00047 ; 00048 00051 bool isNotEqual(const T& a, const T& b) const 00052 ; 00053 00056 virtual bool isLess(const T& a, const T& b) const 00057 ; 00058 00061 bool isLessOrEqual(const T& a, const T& b) const 00062 ; 00063 00066 bool isGreaterOrEqual(const T& a, const T& b) const 00067 ; 00068 00071 bool isGreater(const T& a, const T& b) const 00072 ; 00073 00079 int operator () (const T& a, const T& b) const 00080 ; 00081 00083 }; 00084 00085 template <typename T> 00086 inline Comparator<T>::Comparator() 00087 00088 { 00089 } 00090 00091 template <typename T> 00092 inline Comparator<T>::~Comparator() 00093 00094 { 00095 } 00096 00097 template <class T> 00098 inline bool Comparator<T>::isEqual(const T& a, const T& b) const 00099 00100 { 00101 return (a == b); 00102 } 00103 00104 template <class T> 00105 inline bool Comparator<T>::isNotEqual(const T& a, const T& b) const 00106 00107 { 00108 return !isEqual(a, b); 00109 } 00110 00111 template <class T> 00112 inline bool Comparator<T>::isLess(const T& a, const T& b) const 00113 00114 { 00115 return (a < b); 00116 } 00117 00118 template <class T> 00119 inline bool Comparator<T>::isLessOrEqual(const T& a, const T& b) const 00120 00121 { 00122 return !isLess(b, a); 00123 } 00124 00125 template <class T> 00126 inline bool Comparator<T>::isGreaterOrEqual(const T& a, const T& b) const 00127 00128 { 00129 return !isLess(a, b); 00130 } 00131 00132 template <class T> 00133 inline bool Comparator<T>::isGreater(const T& a, const T& b) const 00134 00135 { 00136 return isLess(b, a); 00137 } 00138 00139 template <class T> 00140 inline int Comparator<T>::operator () (const T& a,const T& b) const 00141 00142 { 00143 if (isEqual(a, b) == true) 00144 { 00145 return 0; 00146 } 00147 00148 if (isLess(a, b) == true) 00149 { 00150 return -1; 00151 } 00152 else 00153 { 00154 return 1; 00155 } 00156 } 00157 00158 } // namespace BALL 00159 00160 #endif // BALL_CONCEPT_COMPARATOR_H