From d7dbcb892c08c379194b512e2ced3cbccdd96855 Mon Sep 17 00:00:00 2001 From: Matt Broadstone Date: Thu, 11 Sep 2014 15:45:32 -0400 Subject: [PATCH] add swap and move support for QAMQP::Message - declared typeinfo as Q_MOVABLE_TYPE - declared message as shared --- src/qamqpmessage.cpp | 7 +++++++ src/qamqpmessage.h | 17 +++++++++++++++++ 2 files changed, 24 insertions(+) diff --git a/src/qamqpmessage.cpp b/src/qamqpmessage.cpp index 34d6a24..ac8d274 100644 --- a/src/qamqpmessage.cpp +++ b/src/qamqpmessage.cpp @@ -109,6 +109,13 @@ QVariant Message::header(const QString &header, const QVariant &defaultValue) co return d->headers.value(header, defaultValue); } +#if QT_VERSION < 0x050000 +bool Message::isDetached() const +{ + return d && d->ref == 1; +} +#endif + uint qHash(const QAMQP::Message &message, uint seed) { Q_UNUSED(seed); diff --git a/src/qamqpmessage.h b/src/qamqpmessage.h index e263e40..235b578 100644 --- a/src/qamqpmessage.h +++ b/src/qamqpmessage.h @@ -20,6 +20,10 @@ public: Message &operator=(const Message &other); ~Message(); +#if QT_VERSION >= 0x050000 + inline void swap(Message &other) { qSwap(d, other.d); } +#endif + bool operator==(const Message &message) const; inline bool operator!=(const Message &message) const { return !(operator==(message)); } @@ -62,12 +66,25 @@ private: friend class QueuePrivate; friend class Queue; +#if QT_VERSION < 0x050000 +public: + typedef QSharedDataPointer DataPtr; + inline DataPtr &data_ptr() { return d; } + + // internal + bool isDetached() const; +#endif }; } // namespace QAMQP Q_DECLARE_METATYPE(QAMQP::Message::PropertyHash) +#if QT_VERSION < 0x050000 +Q_DECLARE_TYPEINFO(QAMQP::Message, Q_MOVABLE_TYPE); +#endif +Q_DECLARE_SHARED(QAMQP::Message) + // NOTE: needed only for MSVC support, don't depend on this hash QAMQP_EXPORT uint qHash(const QAMQP::Message &key, uint seed = 0);