#include "oop.h"

int Magnitude::operator <(oop aMagnitude)
{
  subclassResponsibility(0);
}

int Magnitude::operator <=(oop aMagnitude)
{
  return !(*this > aMagnitude);
}

int Magnitude::operator ==(oop aMagnitude)
{
  subclassResponsibility(0);
}

int Magnitude::operator >(oop aMagnitude)
{
  return *aMagnitude < this;
}

int Magnitude::operator >=(oop aMagnitude)
{
  return !(*this < aMagnitude);
}

int Magnitude::between(oop min, oop max)
{
  return *this >= min && *this <= max;
}

unsigned Magnitude::hash(void)
{
  subclassResponsibility(0);
}

oop Magnitude::max(oop aMagnitude)
{
  return (*this > aMagnitude) ? this : aMagnitude;
}

oop Magnitude::min(oop aMagnitude)
{
  return (*this < aMagnitude) ? this : aMagnitude;
}

oop Magnitude::minMax(oop aMin, oop aMax)
{
  return min(aMin)->max(aMax);
}
