summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMitch Curtis <mitch.curtis@nokia.com>2012-07-06 15:12:41 +0200
committerQt by Nokia <qt-info@nokia.com>2012-07-12 01:46:20 +0200
commit623bfe209371b6d35d030a66629b58f0f4f27b0d (patch)
treef4e710544947c86ad95df98101dce2411570f5f9
parent74b0206a714a32102a7ea5dcc6dad580bd4a600c (diff)
Add unary operator+ to QPoint and QPointF.
As requested by Winfried Schenke: "QPoint should have an unary operator+ (the unary operator- exists). Classes with arithmetic operators should provide a complete set of operators, because some template code relies on it." Task-number: QTBUG-22913 Change-Id: Ib0c5105975f56c15f00bb48d83c8d911f5a204ac Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
-rw-r--r--src/corelib/tools/qpoint.cpp16
-rw-r--r--src/corelib/tools/qpoint.h10
-rw-r--r--tests/auto/corelib/tools/qpoint/tst_qpoint.cpp15
-rw-r--r--tests/auto/corelib/tools/qpointf/tst_qpointf.cpp15
4 files changed, 56 insertions, 0 deletions
diff --git a/src/corelib/tools/qpoint.cpp b/src/corelib/tools/qpoint.cpp
index 368ef7d697..785e255db5 100644
--- a/src/corelib/tools/qpoint.cpp
+++ b/src/corelib/tools/qpoint.cpp
@@ -326,6 +326,14 @@ QT_BEGIN_NAMESPACE
*/
/*!
+ \fn const QPoint operator+(const QPoint &point)
+ \relates QPoint
+ \since 5.0
+
+ Returns \a point unmodified.
+*/
+
+/*!
\fn const QPoint operator-(const QPoint &point)
\overload
\relates QPoint
@@ -664,6 +672,14 @@ QDebug operator<<(QDebug d, const QPointF &p)
*/
/*!
+ \fn const QPointF operator+(const QPointF &point)
+ \relates QPointF
+ \since 5.0
+
+ Returns \a point unmodified.
+*/
+
+/*!
\fn const QPointF operator-(const QPointF &point)
\relates QPointF
\overload
diff --git a/src/corelib/tools/qpoint.h b/src/corelib/tools/qpoint.h
index be9567bc52..dc38ec622a 100644
--- a/src/corelib/tools/qpoint.h
+++ b/src/corelib/tools/qpoint.h
@@ -86,6 +86,7 @@ public:
friend Q_DECL_CONSTEXPR inline const QPoint operator*(double, const QPoint &);
friend Q_DECL_CONSTEXPR inline const QPoint operator*(const QPoint &, int);
friend Q_DECL_CONSTEXPR inline const QPoint operator*(int, const QPoint &);
+ friend Q_DECL_CONSTEXPR inline const QPoint operator+(const QPoint &);
friend Q_DECL_CONSTEXPR inline const QPoint operator-(const QPoint &);
friend Q_DECL_CONSTEXPR inline const QPoint operator/(const QPoint &, qreal);
@@ -182,6 +183,9 @@ Q_DECL_CONSTEXPR inline const QPoint operator*(double factor, const QPoint &p)
Q_DECL_CONSTEXPR inline const QPoint operator*(int factor, const QPoint &p)
{ return QPoint(p.xp*factor, p.yp*factor); }
+Q_DECL_CONSTEXPR inline const QPoint operator+(const QPoint &p)
+{ return p; }
+
Q_DECL_CONSTEXPR inline const QPoint operator-(const QPoint &p)
{ return QPoint(-p.xp, -p.yp); }
@@ -235,6 +239,7 @@ public:
friend Q_DECL_CONSTEXPR inline const QPointF operator-(const QPointF &, const QPointF &);
friend Q_DECL_CONSTEXPR inline const QPointF operator*(qreal, const QPointF &);
friend Q_DECL_CONSTEXPR inline const QPointF operator*(const QPointF &, qreal);
+ friend Q_DECL_CONSTEXPR inline const QPointF operator+(const QPointF &);
friend Q_DECL_CONSTEXPR inline const QPointF operator-(const QPointF &);
friend Q_DECL_CONSTEXPR inline const QPointF operator/(const QPointF &, qreal);
@@ -355,6 +360,11 @@ Q_DECL_CONSTEXPR inline const QPointF operator*(qreal c, const QPointF &p)
return QPointF(p.xp*c, p.yp*c);
}
+Q_DECL_CONSTEXPR inline const QPointF operator+(const QPointF &p)
+{
+ return p;
+}
+
Q_DECL_CONSTEXPR inline const QPointF operator-(const QPointF &p)
{
return QPointF(-p.xp, -p.yp);
diff --git a/tests/auto/corelib/tools/qpoint/tst_qpoint.cpp b/tests/auto/corelib/tools/qpoint/tst_qpoint.cpp
index 9f30fe6e4a..cb24325765 100644
--- a/tests/auto/corelib/tools/qpoint/tst_qpoint.cpp
+++ b/tests/auto/corelib/tools/qpoint/tst_qpoint.cpp
@@ -71,6 +71,9 @@ private slots:
void operator_divide_data();
void operator_divide();
+ void operator_unary_plus_data();
+ void operator_unary_plus();
+
void operator_unary_minus_data();
void operator_unary_minus();
@@ -269,6 +272,18 @@ void tst_QPoint::operator_divide()
QCOMPARE(point, expected);
}
+void tst_QPoint::operator_unary_plus_data()
+{
+ operator_unary_minus_data();
+}
+
+void tst_QPoint::operator_unary_plus()
+{
+ QFETCH(QPoint, point);
+ // Should be a NOOP.
+ QCOMPARE(+point, point);
+}
+
void tst_QPoint::operator_unary_minus_data()
{
QTest::addColumn<QPoint>("point");
diff --git a/tests/auto/corelib/tools/qpointf/tst_qpointf.cpp b/tests/auto/corelib/tools/qpointf/tst_qpointf.cpp
index 07564d60f0..df5efe88ca 100644
--- a/tests/auto/corelib/tools/qpointf/tst_qpointf.cpp
+++ b/tests/auto/corelib/tools/qpointf/tst_qpointf.cpp
@@ -76,6 +76,9 @@ private slots:
void operator_divide();
void division();
+ void operator_unary_plus_data();
+ void operator_unary_plus();
+
void operator_unary_minus_data();
void operator_unary_minus();
@@ -283,6 +286,18 @@ void tst_QPointF::division()
}
}
+void tst_QPointF::operator_unary_plus_data()
+{
+ operator_unary_minus_data();
+}
+
+void tst_QPointF::operator_unary_plus()
+{
+ QFETCH(QPointF, point);
+ // Should be a NOOP.
+ QCOMPARE(+point, point);
+}
+
void tst_QPointF::operator_unary_minus_data()
{
QTest::addColumn<QPointF>("point");