#ifndef _COMPARISONS_H
#define _COMPARISONS_H
// default comparison
template <typename T>
int Compare(T const & s, T const & t) {
  if (s > t) return 1;
  if (s < t) return -1;
  return 0;
}
// specialization for char *'s
template <>
int Compare(char * const & a, char * const & b) {
  char * s = a;
  char * t = b;
  while (1) {
    if (*s > *t) return 1;
    if (*s < *t) return -1;
    if (! (*s || *t)) return 0;
    ++s;  ++t;
  }
}
// default equality test
template <typename T>
int Equal(T const &s, T const &t) {
  return Compare(s, t) == 0;
}
#endif