Add unary operator+ to QPoint and QPointF.
authorMitch Curtis <mitch.curtis@nokia.com>
Fri, 6 Jul 2012 13:12:41 +0000 (15:12 +0200)
committerQt by Nokia <qt-info@nokia.com>
Wed, 11 Jul 2012 23:46:20 +0000 (01:46 +0200)
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>
src/corelib/tools/qpoint.cpp
src/corelib/tools/qpoint.h
tests/auto/corelib/tools/qpoint/tst_qpoint.cpp
tests/auto/corelib/tools/qpointf/tst_qpointf.cpp

index 368ef7d..785e255 100644 (file)
@@ -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
index be9567b..dc38ec6 100644 (file)
@@ -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);
index 9f30fe6..cb24325 100644 (file)
@@ -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");
index 07564d6..df5efe8 100644 (file)
@@ -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");