22 #ifndef ELM_COMPARATOR_H_
23 #define ELM_COMPARATOR_H_
25 #include <elm/string.h>
26 #include <elm/type_info.h>
27 #include <elm/util/Pair.h>
28 #include <elm/util/Equiv.h>
36 static inline int compare(
const T& v1,
const T& v2)
37 {
if(v1 == v2)
return 0;
else if(v1 > v2)
return 1;
else return -1; }
42 template <
class T,
class C>
45 static inline int compare(
const T& v1,
const T& v2) {
return C::compare(v1, v2); }
53 static inline int compare(
const T& v1,
const T& v2) {
return v1.compare(v2); }
60 template <
class K,
class T,
class C = Comparator<K> >
65 {
return C::compare(v1.
fst, v2. fst); }
72 template <
class T,
class C>
75 static inline int compare(
const T& v1,
const T& v2)
76 {
return -C::compare(v1, v2); }
81 template <
class T,
class C = Comparator<T> >
84 static inline bool equals(
const T& v1,
const T& v2)
85 {
return C::compare(v1, v2) == 0; }
90 template <
class T>
inline const T&
min(
const T& x,
const T& y)
92 template <
class T>
inline const T&
max(
const T& x,
const T& y)
const T & max(const T &x, const T &y)
Definition: compare.h:92
static int compare(const T &v1, const T &v2)
Definition: compare.h:75
static int compare(const T &v1, const T &v2)
Definition: compare.h:53
static int compare(const pair_t &v1, const pair_t &v2)
Definition: compare.h:64
T1 fst
Definition: Pair.h:18
static int compare(const T &v1, const T &v2)
Definition: compare.h:45
static int compare(const T &v1, const T &v2)
Definition: compare.h:36
static bool equals(const T &v1, const T &v2)
Definition: compare.h:84
int doCompare(const T &v1, const T &v2) const
Definition: compare.h:38
int doCompare(const T &v1, const T &v2) const
Definition: compare.h:46
Pair< K, T > pair_t
Definition: compare.h:63
const T & min(const T &x, const T &y)
Definition: compare.h:90