summaryrefslogtreecommitdiffstats
path: root/src/corelib/tools/qmargins.h
diff options
context:
space:
mode:
authorMarc Mutz <marc.mutz@kdab.com>2012-02-17 12:02:14 +0100
committerQt by Nokia <qt-info@nokia.com>2012-02-22 00:07:31 +0100
commitf3141c58badbd2da9eb42021e9704742c3e52a9b (patch)
treeb8b45bc1639ddeceac9d2fb326944a895794bd6b /src/corelib/tools/qmargins.h
parent4c577aead97abb4e22fedcf57cb9aea6c5bfa623 (diff)
QtCore: add constexpr to geometric classes
This turns code like QPoint(12, 12) into a compile-time expression, under a C++11 compiler, and allows to define arrays of these types that end up in read-only memory, just like PODs would. Some constructors and QLine::pointAt() needed to be adjusted to fit into the empty-body/only-return-expression requirement for constexpr constructors/functions. Change-Id: Id11ee2752c948930c3e40a91d1f6d7c97db7a373 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Diffstat (limited to 'src/corelib/tools/qmargins.h')
-rw-r--r--src/corelib/tools/qmargins.h37
1 files changed, 18 insertions, 19 deletions
diff --git a/src/corelib/tools/qmargins.h b/src/corelib/tools/qmargins.h
index 7d9d07ed46..d3551fa195 100644
--- a/src/corelib/tools/qmargins.h
+++ b/src/corelib/tools/qmargins.h
@@ -52,15 +52,15 @@ QT_BEGIN_NAMESPACE
class QMargins
{
public:
- QMargins();
- QMargins(int left, int top, int right, int bottom);
+ Q_DECL_CONSTEXPR QMargins();
+ Q_DECL_CONSTEXPR QMargins(int left, int top, int right, int bottom);
- bool isNull() const;
+ Q_DECL_CONSTEXPR bool isNull() const;
- int left() const;
- int top() const;
- int right() const;
- int bottom() const;
+ Q_DECL_CONSTEXPR int left() const;
+ Q_DECL_CONSTEXPR int top() const;
+ Q_DECL_CONSTEXPR int right() const;
+ Q_DECL_CONSTEXPR int bottom() const;
void setLeft(int left);
void setTop(int top);
@@ -73,8 +73,8 @@ private:
int m_right;
int m_bottom;
- friend inline bool operator==(const QMargins &, const QMargins &);
- friend inline bool operator!=(const QMargins &, const QMargins &);
+ friend Q_DECL_CONSTEXPR inline bool operator==(const QMargins &, const QMargins &);
+ friend Q_DECL_CONSTEXPR inline bool operator!=(const QMargins &, const QMargins &);
};
Q_DECLARE_TYPEINFO(QMargins, Q_MOVABLE_TYPE);
@@ -91,25 +91,24 @@ Q_CORE_EXPORT QDataStream &operator>>(QDataStream &, QMargins &);
QMargins inline functions
*****************************************************************************/
-inline QMargins::QMargins()
-{ m_top = m_bottom = m_left = m_right = 0; }
+Q_DECL_CONSTEXPR inline QMargins::QMargins() : m_left(0), m_top(0), m_right(0), m_bottom(0) {}
-inline QMargins::QMargins(int aleft, int atop, int aright, int abottom)
+Q_DECL_CONSTEXPR inline QMargins::QMargins(int aleft, int atop, int aright, int abottom)
: m_left(aleft), m_top(atop), m_right(aright), m_bottom(abottom) {}
-inline bool QMargins::isNull() const
+Q_DECL_CONSTEXPR inline bool QMargins::isNull() const
{ return m_left==0 && m_top==0 && m_right==0 && m_bottom==0; }
-inline int QMargins::left() const
+Q_DECL_CONSTEXPR inline int QMargins::left() const
{ return m_left; }
-inline int QMargins::top() const
+Q_DECL_CONSTEXPR inline int QMargins::top() const
{ return m_top; }
-inline int QMargins::right() const
+Q_DECL_CONSTEXPR inline int QMargins::right() const
{ return m_right; }
-inline int QMargins::bottom() const
+Q_DECL_CONSTEXPR inline int QMargins::bottom() const
{ return m_bottom; }
@@ -125,7 +124,7 @@ inline void QMargins::setRight(int aright)
inline void QMargins::setBottom(int abottom)
{ m_bottom = abottom; }
-inline bool operator==(const QMargins &m1, const QMargins &m2)
+Q_DECL_CONSTEXPR inline bool operator==(const QMargins &m1, const QMargins &m2)
{
return
m1.m_left == m2.m_left &&
@@ -134,7 +133,7 @@ inline bool operator==(const QMargins &m1, const QMargins &m2)
m1.m_bottom == m2.m_bottom;
}
-inline bool operator!=(const QMargins &m1, const QMargins &m2)
+Q_DECL_CONSTEXPR inline bool operator!=(const QMargins &m1, const QMargins &m2)
{
return
m1.m_left != m2.m_left ||