From 84b114e4f310c787c7b1d2ac0edfbdb9d943fcc6 Mon Sep 17 00:00:00 2001 From: Marc Mutz Date: Tue, 4 Apr 2017 18:52:35 +0200 Subject: QVulkan{Layer,Extension}: various fixes - don't export simple structs - make op== non-member - add op!= (required by EqualityComparable) - add qHash() (should be defined by Qt for every EqualityComparable class) - add Q_DECLARE_TYPEINFO Change-Id: Ia14ac3fea48a6a0ad1d8993c9408afe77bbe6c1a Reviewed-by: Friedemann Kleint Reviewed-by: Laszlo Agocs --- src/gui/vulkan/qvulkaninstance.h | 44 ++++++++++++++++++++++++++++++++-------- 1 file changed, 36 insertions(+), 8 deletions(-) (limited to 'src/gui/vulkan/qvulkaninstance.h') diff --git a/src/gui/vulkan/qvulkaninstance.h b/src/gui/vulkan/qvulkaninstance.h index a373ceffde..ada297be43 100644 --- a/src/gui/vulkan/qvulkaninstance.h +++ b/src/gui/vulkan/qvulkaninstance.h @@ -56,6 +56,7 @@ typedef unsigned long VkImage; typedef unsigned long VkImageView; #endif +#include #include #include #include @@ -70,25 +71,52 @@ class QVulkanFunctions; class QVulkanDeviceFunctions; class QWindow; -struct Q_GUI_EXPORT QVulkanLayer +struct QVulkanLayer { QByteArray name; uint32_t version; QVersionNumber specVersion; QByteArray description; - bool operator==(const QVulkanLayer &other) const { - return name == other.name && version == other.version && specVersion == other.specVersion; - } }; +Q_DECLARE_TYPEINFO(QVulkanLayer, Q_MOVABLE_TYPE); + +inline bool operator==(const QVulkanLayer &lhs, const QVulkanLayer &rhs) Q_DECL_NOTHROW +{ + return lhs.name == rhs.name && lhs.version == rhs.version && lhs.specVersion == rhs.specVersion; +} +inline bool operator!=(const QVulkanLayer &lhs, const QVulkanLayer &rhs) Q_DECL_NOTHROW +{ return !(lhs == rhs); } -struct Q_GUI_EXPORT QVulkanExtension +inline uint qHash(const QVulkanLayer &key, uint seed = 0) Q_DECL_NOTHROW +{ + QtPrivate::QHashCombine hash; + seed = hash(seed, key.name); + seed = hash(seed, key.version); + seed = hash(seed, key.specVersion); + return seed; +} + +struct QVulkanExtension { QByteArray name; uint32_t version; - bool operator==(const QVulkanExtension &other) const { - return name == other.name && version == other.version; - } }; +Q_DECLARE_TYPEINFO(QVulkanExtension, Q_MOVABLE_TYPE); + +inline bool operator==(const QVulkanExtension &lhs, const QVulkanExtension &rhs) Q_DECL_NOTHROW +{ + return lhs.name == rhs.name && lhs.version == rhs.version; +} +inline bool operator!=(const QVulkanExtension &lhs, const QVulkanExtension &rhs) Q_DECL_NOTHROW +{ return !(lhs == rhs); } + +inline uint qHash(const QVulkanExtension &key, uint seed = 0) Q_DECL_NOTHROW +{ + QtPrivate::QHashCombine hash; + seed = hash(seed, key.name); + seed = hash(seed, key.version); + return seed; +} #ifndef QT_NO_DEBUG_STREAM Q_GUI_EXPORT QDebug operator<<(QDebug, const QVulkanLayer &); -- cgit v1.2.3