diff options
author | Marc Mutz <marc.mutz@kdab.com> | 2015-07-05 22:29:55 +0200 |
---|---|---|
committer | Marc Mutz <marc.mutz@kdab.com> | 2016-02-09 18:19:55 +0000 |
commit | 3e63a58a96bc9d7fc6004f3a8eacc062bae953f9 (patch) | |
tree | 757459912b34663f42b2828d64acdc33c266cadd /src/corelib/global | |
parent | 488cf78e44947efffcf3ebde62d7fb2d4fbf4345 (diff) |
Mark QHash/QMap as relocatable and movable-come-Qt 6
They were forgotten from the movable containers for Qt 5.0.
Make sure we don't forget for 6.0, either.
Until then, mark with new Q_RELOCATABLE_TYPE.
Change-Id: I279a96c02a718a1432040303bb0d001739f59a17
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Diffstat (limited to 'src/corelib/global')
-rw-r--r-- | src/corelib/global/qtypeinfo.h | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/src/corelib/global/qtypeinfo.h b/src/corelib/global/qtypeinfo.h index 2b4f6ebab4..1200c3b5a5 100644 --- a/src/corelib/global/qtypeinfo.h +++ b/src/corelib/global/qtypeinfo.h @@ -194,6 +194,32 @@ Q_DECLARE_MOVABLE_CONTAINER(QSet); #undef Q_DECLARE_MOVABLE_CONTAINER +/* These cannot be movable before ### Qt 6, for BC reasons */ +#define Q_DECLARE_MOVABLE_CONTAINER(CONTAINER) \ +template <typename K, typename V> class CONTAINER; \ +template <typename K, typename V> \ +class QTypeInfo< CONTAINER<K, V> > \ +{ \ +public: \ + enum { \ + isPointer = false, \ + isIntegral = false, \ + isComplex = true, \ + isStatic = (QT_VERSION < QT_VERSION_CHECK(6, 0, 0)), \ + isRelocatable = true, \ + isLarge = (sizeof(CONTAINER<K, V>) > sizeof(void*)), \ + isDummy = false, \ + sizeOf = sizeof(CONTAINER<K, V>) \ + }; \ +} + +Q_DECLARE_MOVABLE_CONTAINER(QMap); +Q_DECLARE_MOVABLE_CONTAINER(QMultiMap); +Q_DECLARE_MOVABLE_CONTAINER(QHash); +Q_DECLARE_MOVABLE_CONTAINER(QMultiHash); + +#undef Q_DECLARE_MOVABLE_CONTAINER + /* Specialize a specific type with: |