Go to the documentation of this file.00001 #ifndef QRK_POINT_H
00002 #define QRK_POINT_H
00003
00013 namespace qrk
00014 {
00018 template <typename T>
00019 class Point
00020 {
00021 public:
00022 T x;
00023 T y;
00024
00025
00026 Point(void) : x(0), y(0)
00027 {
00028 }
00029
00030
00031 Point(T x_, T y_) : x(x_), y(y_)
00032 {
00033 }
00034
00035
00036 bool operator == (const Point<T>& rhs) const
00037 {
00038 return ((this->x == rhs.x) && (this->y == rhs.y)) ? true : false;
00039 }
00040
00041
00042 bool operator < (const Point<T>& rhs) const
00043 {
00044 if (y < rhs.y) {
00045 return true;
00046
00047 } else if (x < rhs.x) {
00048 return true;
00049
00050 } else {
00051 return false;
00052 }
00053 }
00054
00055
00056 Point<T>& operator += (const Point<T>& rhs)
00057 {
00058 this->x += rhs.x;
00059 this->y += rhs.y;
00060
00061 return *this;
00062 }
00063
00064
00065 const Point<T> operator + (const Point<T>& rhs) const
00066 {
00067 return Point<T>(*this) += rhs;
00068 }
00069
00070
00071 Point<T>& operator -= (const Point<T>& rhs)
00072 {
00073 this->x -= rhs.x;
00074 this->y -= rhs.y;
00075
00076 return *this;
00077 }
00078
00079
00080 const Point<T> operator - (const Point<T>& rhs) const
00081 {
00082 return Point<T>(*this) -= rhs;
00083 }
00084 };
00085 }
00086
00087 #endif