summaryrefslogtreecommitdiffstats
path: root/src/corelib/global
diff options
context:
space:
mode:
authorMarc Mutz <marc.mutz@kdab.com>2015-07-05 22:29:55 +0200
committerMarc Mutz <marc.mutz@kdab.com>2016-02-09 18:19:55 +0000
commit3e63a58a96bc9d7fc6004f3a8eacc062bae953f9 (patch)
tree757459912b34663f42b2828d64acdc33c266cadd /src/corelib/global
parent488cf78e44947efffcf3ebde62d7fb2d4fbf4345 (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.h26
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: