#include "stop.hpp"
-Stop::Stop (int floor, enum direction mydirection)
- : Position(floor)
- , _direction(mydirection)
+Stop::Stop (const Position& position, const Direction& direction)
+ : position_(position)
+ , direction_(direction)
{
// Intentionally Left Empty
}
-bool Stop::operator== (Stop& rhs)
+bool Stop::operator== (const Stop& rhs) const
{
- return (Position::operator==(rhs)) && (_direction == rhs._direction);
+ if (rhs.position_ != position_)
+ return false;
+
+#if 0
+ if (direction_ == ALL || rhs.direction_ == ALL)
+ return true;
+#endif
+
+ return (rhs.direction_ == direction_);
+}
+
+bool Stop::operator< (const Stop& rhs) const
+{
+ /* If we do not use the direction to help differentiate, then it is
+ * possible that an object can be neither less, greater, or equal */
+ return (position_ < rhs.position_);
+}
+
+bool Stop::operator> (const Stop& rhs) const
+{
+ return (position_ > rhs.position_);
+}
+
+const Direction Stop::getDirection () const
+{
+ return direction_;
+}
+
+const Position Stop::getPosition () const
+{
+ return position_;
+}
+
+std::ostream& operator<< (std::ostream& os, const Stop& rhs)
+{
+ os << "Stop(" << rhs.position_ << ", "; // << rhs.direction_ << ")";
+
+ switch (rhs.direction_)
+ {
+ case IDLE:
+ os << "IDLE";
+ break;
+ case UP:
+ os << "UP";
+ break;
+ case DOWN:
+ os << "DOWN";
+ break;
+ case ALL:
+ os << "ALL";
+ break;
+ default:
+ os << "UNHANDLED";
+ break;
+ }
+
+ os << ")";
+ return os;
}
/* vim: set ts=4 sts=4 sw=4 noexpandtab textwidth=112: */