00001
00002
00003
00004
00005
00006
00007 #ifndef BALL_CONCEPT_COMPARATOR_H
00008 #define BALL_CONCEPT_COMPARATOR_H
00009
00010 #ifndef BALL_COMMON_H
00011 # include <BALL/common.h>
00012 #endif
00013
00014 namespace BALL
00015 {
00016
00022 template <typename T>
00023 class Comparator
00024 {
00025 public:
00026
00030
00033 Comparator()
00034 ;
00035
00038 virtual ~Comparator()
00039 ;
00040
00042
00045
00048 virtual bool isEqual(const T& a, const T& b) const
00049 ;
00050
00053 bool isNotEqual(const T& a, const T& b) const
00054 ;
00055
00058 virtual bool isLess(const T& a, const T& b) const
00059 ;
00060
00063 bool isLessOrEqual(const T& a, const T& b) const
00064 ;
00065
00068 bool isGreaterOrEqual(const T& a, const T& b) const
00069 ;
00070
00073 bool isGreater(const T& a, const T& b) const
00074 ;
00075
00081 int operator () (const T& a, const T& b) const
00082 ;
00083
00085 };
00086
00087 template <typename T>
00088 inline Comparator<T>::Comparator()
00089
00090 {
00091 }
00092
00093 template <typename T>
00094 inline Comparator<T>::~Comparator()
00095
00096 {
00097 }
00098
00099 template <class T>
00100 inline bool Comparator<T>::isEqual(const T& a, const T& b) const
00101
00102 {
00103 return (a == b);
00104 }
00105
00106 template <class T>
00107 inline bool Comparator<T>::isNotEqual(const T& a, const T& b) const
00108
00109 {
00110 return !isEqual(a, b);
00111 }
00112
00113 template <class T>
00114 inline bool Comparator<T>::isLess(const T& a, const T& b) const
00115
00116 {
00117 return (a < b);
00118 }
00119
00120 template <class T>
00121 inline bool Comparator<T>::isLessOrEqual(const T& a, const T& b) const
00122
00123 {
00124 return !isLess(b, a);
00125 }
00126
00127 template <class T>
00128 inline bool Comparator<T>::isGreaterOrEqual(const T& a, const T& b) const
00129
00130 {
00131 return !isLess(a, b);
00132 }
00133
00134 template <class T>
00135 inline bool Comparator<T>::isGreater(const T& a, const T& b) const
00136
00137 {
00138 return isLess(b, a);
00139 }
00140
00141 template <class T>
00142 inline int Comparator<T>::operator () (const T& a,const T& b) const
00143
00144 {
00145 if (isEqual(a, b) == true)
00146 {
00147 return 0;
00148 }
00149
00150 if (isLess(a, b) == true)
00151 {
00152 return -1;
00153 }
00154 else
00155 {
00156 return 1;
00157 }
00158 }
00159
00160 }
00161
00162 #endif // BALL_CONCEPT_COMPARATOR_H