BALL  1.4.1
comparator.h
Go to the documentation of this file.
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
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Defines