00001
00002
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 }
00159
00160 #endif // BALL_CONCEPT_COMPARATOR_H