From c7fa7475c9271965f8424ec7535a6828effc0c61 Mon Sep 17 00:00:00 2001 From: "Bradley T. Hughes" Date: Fri, 9 Sep 2011 12:45:18 +0200 Subject: Update QHash for Qt 5 Dealt with all necessary changes that are marked in the code: removing methods left only for binary compatibility with earlier Qt 4 versions and other methods marked for removal. Change-Id: I47109ccd9ed40addc345416be9e172570723955e Reviewed-on: http://codereview.qt-project.org/4534 Reviewed-by: Qt Sanity Bot Reviewed-by: Oswald Buddenhagen --- src/corelib/tools/qhash.cpp | 23 ++++------------------- src/corelib/tools/qhash.h | 32 +++++--------------------------- 2 files changed, 9 insertions(+), 46 deletions(-) diff --git a/src/corelib/tools/qhash.cpp b/src/corelib/tools/qhash.cpp index 2e60f40a9c..937225fe11 100644 --- a/src/corelib/tools/qhash.cpp +++ b/src/corelib/tools/qhash.cpp @@ -169,11 +169,6 @@ const QHashData QHashData::shared_null = { 0, 0, Q_REFCOUNT_INITIALIZER(-1), 0, 0, MinNumBits, 0, 0, true, false, 0 }; -void *QHashData::allocateNode() -{ - return allocateNode(0); -} - void *QHashData::allocateNode(int nodeAlign) { void *ptr = strictAlignment ? qMallocAligned(nodeSize, nodeAlign) : qMalloc(nodeSize); @@ -189,15 +184,10 @@ void QHashData::freeNode(void *node) qFree(node); } -QHashData *QHashData::detach_helper(void (*node_duplicate)(Node *, void *), int nodeSize) -{ - return detach_helper2( node_duplicate, 0, nodeSize, 0 ); -} - -QHashData *QHashData::detach_helper2(void (*node_duplicate)(Node *, void *), - void (*node_delete)(Node *), - int nodeSize, - int nodeAlign) +QHashData *QHashData::detach_helper(void (*node_duplicate)(Node *, void *), + void (*node_delete)(Node *), + int nodeSize, + int nodeAlign) { union { QHashData *d; @@ -392,11 +382,6 @@ void QHashData::rehash(int hint) } } -void QHashData::destroyAndFree() -{ - free_helper(0); -} - #ifdef QT_QHASH_DEBUG void QHashData::dump() diff --git a/src/corelib/tools/qhash.h b/src/corelib/tools/qhash.h index 40a58fdbf8..25cece4673 100644 --- a/src/corelib/tools/qhash.h +++ b/src/corelib/tools/qhash.h @@ -128,18 +128,14 @@ struct Q_CORE_EXPORT QHashData uint strictAlignment : 1; uint reserved : 30; - void *allocateNode(); // ### Qt5 remove me void *allocateNode(int nodeAlign); void freeNode(void *node); - QHashData *detach_helper(void (*node_duplicate)(Node *, void *), int nodeSize); // ### Qt5 remove me - QHashData *detach_helper2(void (*node_duplicate)(Node *, void *), void (*node_delete)(Node *), - int nodeSize, int nodeAlign); - void mightGrow(); + QHashData *detach_helper(void (*node_duplicate)(Node *, void *), void (*node_delete)(Node *), + int nodeSize, int nodeAlign); bool willGrow(); void hasShrunk(); void rehash(int hint); void free_helper(void (*node_delete)(Node *)); - void destroyAndFree(); // ### Qt5 remove me Node *firstNode(); #ifdef QT_QHASH_DEBUG void dump(); @@ -151,12 +147,6 @@ struct Q_CORE_EXPORT QHashData static const QHashData shared_null; }; -inline void QHashData::mightGrow() // ### Qt 5: eliminate -{ - if (size >= numBuckets) - rehash(numBits + 1); -} - inline bool QHashData::willGrow() { if (size >= numBuckets) { @@ -220,7 +210,6 @@ struct QHashNode Key key; T value; - inline QHashNode(const Key &key0) : key(key0) {} // ### remove in 5.0 inline QHashNode(const Key &key0, const T &value0) : key(key0), value(value0) {} inline bool same_key(uint h0, const Key &key0) { return h0 == h && key0 == key; } }; @@ -330,6 +319,7 @@ public: class iterator { friend class const_iterator; + friend class QHash; QHashData::Node *i; public: @@ -339,8 +329,6 @@ public: typedef T *pointer; typedef T &reference; - // ### Qt 5: get rid of 'operator Node *' - inline operator Node *() const { return concrete(i); } inline iterator() : i(0) { } explicit inline iterator(void *node) : i(reinterpret_cast(node)) { } @@ -385,10 +373,6 @@ public: { return i == o.i; } inline bool operator!=(const const_iterator &o) const { return i != o.i; } - - private: - // ### Qt 5: remove - inline operator bool() const { return false; } }; friend class iterator; @@ -404,8 +388,6 @@ public: typedef const T *pointer; typedef const T &reference; - // ### Qt 5: get rid of 'operator Node *' - inline operator Node *() const { return concrete(i); } inline const_iterator() : i(0) { } explicit inline const_iterator(void *node) : i(reinterpret_cast(node)) { } @@ -453,10 +435,6 @@ public: inline bool operator==(const iterator &o) const { return operator==(const_iterator(o)); } inline bool operator!=(const iterator &o) const { return operator!=(const_iterator(o)); } #endif - - private: - // ### Qt 5: remove - inline operator bool() const { return false; } }; friend class const_iterator; @@ -579,7 +557,7 @@ Q_INLINE_TEMPLATE void QHash::clear() template Q_OUTOFLINE_TEMPLATE void QHash::detach_helper() { - QHashData *x = d->detach_helper2(duplicateNode, deleteNode2, + QHashData *x = d->detach_helper(duplicateNode, deleteNode2, QTypeInfo::isDummy ? sizeof(DummyNode) : sizeof(Node), QTypeInfo::isDummy ? alignOfDummyNode() : alignOfNode()); if (!d->ref.deref()) @@ -832,7 +810,7 @@ Q_OUTOFLINE_TEMPLATE typename QHash::iterator QHash::erase(itera iterator ret = it; ++ret; - Node *node = it; + Node *node = concrete(it.i); Node **node_ptr = reinterpret_cast(&d->buckets[node->h % d->numBuckets]); while (*node_ptr != node) node_ptr = &(*node_ptr)->next; -- cgit v1.2.3