From 62c673ccc6f81cee09a25f5acceec2768cea4672 Mon Sep 17 00:00:00 2001 From: Thiago Macieira Date: Mon, 11 Jun 2012 19:42:05 +0200 Subject: Add reference-count manipulation functions to QArrayData and hide ref The next change will stop using some values in the reference counter as settings from the data. Change-Id: I94df1fe643896373fac2f000fff55bc7708fc807 Reviewed-by: Simon Hausmann --- .../corelib/text/qbytearray/tst_qbytearray.cpp | 6 +- tests/auto/corelib/text/qstring/tst_qstring.cpp | 6 +- tests/auto/corelib/tools/qarraydata/simplevector.h | 6 +- .../corelib/tools/qarraydata/tst_qarraydata.cpp | 67 +++++++++++----------- 4 files changed, 41 insertions(+), 44 deletions(-) (limited to 'tests/auto') diff --git a/tests/auto/corelib/text/qbytearray/tst_qbytearray.cpp b/tests/auto/corelib/text/qbytearray/tst_qbytearray.cpp index f5748ea060..00ca2d92a9 100644 --- a/tests/auto/corelib/text/qbytearray/tst_qbytearray.cpp +++ b/tests/auto/corelib/text/qbytearray/tst_qbytearray.cpp @@ -189,7 +189,7 @@ QByteArray verifyZeroTermination(const QByteArray &ba) QByteArray::DataPtr baDataPtr = const_cast(ba).data_ptr(); // Skip if isStatic() or fromRawData(), as those offer no guarantees - if (baDataPtr->ref.isStatic() + if (baDataPtr->isStatic() || baDataPtr->offset != QByteArray().data_ptr()->offset) return ba; @@ -201,7 +201,7 @@ QByteArray verifyZeroTermination(const QByteArray &ba) .arg(baTerminator, 2, 16, QChar('0')).toLatin1(); // Skip mutating checks on shared strings - if (baDataPtr->ref.isShared()) + if (baDataPtr->isShared()) return ba; const char *baData = ba.constData(); @@ -2198,7 +2198,7 @@ void tst_QByteArray::literals() QVERIFY(str.length() == 4); QVERIFY(str == "abcd"); - QVERIFY(str.data_ptr()->ref.isStatic()); + QVERIFY(str.data_ptr()->isStatic()); QVERIFY(str.data_ptr()->offset == sizeof(QByteArrayData)); const char *s = str.constData(); diff --git a/tests/auto/corelib/text/qstring/tst_qstring.cpp b/tests/auto/corelib/text/qstring/tst_qstring.cpp index 2108e99f20..01376036b7 100644 --- a/tests/auto/corelib/text/qstring/tst_qstring.cpp +++ b/tests/auto/corelib/text/qstring/tst_qstring.cpp @@ -608,7 +608,7 @@ QString verifyZeroTermination(const QString &str) QString::DataPtr strDataPtr = const_cast(str).data_ptr(); // Skip if isStatic() or fromRawData(), as those offer no guarantees - if (strDataPtr->ref.isStatic() + if (strDataPtr->isStatic() || strDataPtr->offset != QString().data_ptr()->offset) return str; @@ -620,7 +620,7 @@ QString verifyZeroTermination(const QString &str) .arg(strTerminator.unicode(), 4, 16, QChar('0')); // Skip mutating checks on shared strings - if (strDataPtr->ref.isShared()) + if (strDataPtr->isShared()) return str; const QChar *strData = str.constData(); @@ -6637,7 +6637,7 @@ void tst_QString::literals() QVERIFY(str.length() == 4); QVERIFY(str == QLatin1String("abcd")); - QVERIFY(str.data_ptr()->ref.isStatic()); + QVERIFY(str.data_ptr()->isStatic()); QVERIFY(str.data_ptr()->offset == sizeof(QStringData)); const QChar *s = str.constData(); diff --git a/tests/auto/corelib/tools/qarraydata/simplevector.h b/tests/auto/corelib/tools/qarraydata/simplevector.h index c9a77a6f42..aa791b600c 100644 --- a/tests/auto/corelib/tools/qarraydata/simplevector.h +++ b/tests/auto/corelib/tools/qarraydata/simplevector.h @@ -85,8 +85,8 @@ public: bool isNull() const { return d.isNull(); } bool isEmpty() const { return this->empty(); } - bool isStatic() const { return d->ref.isStatic(); } - bool isShared() const { return d->ref.isShared(); } + bool isStatic() const { return d->isStatic(); } + bool isShared() const { return d->isShared(); } bool isSharedWith(const SimpleVector &other) const { return d == other.d; } size_t size() const { return d->size; } @@ -141,7 +141,7 @@ public: if (n <= capacity()) { if (d->flags & Data::CapacityReserved) return; - if (!d->ref.isShared()) { + if (!d->isShared()) { d->flags |= Data::CapacityReserved; return; } diff --git a/tests/auto/corelib/tools/qarraydata/tst_qarraydata.cpp b/tests/auto/corelib/tools/qarraydata/tst_qarraydata.cpp index d86f9f25d3..b8bf9f4106 100644 --- a/tests/auto/corelib/tools/qarraydata/tst_qarraydata.cpp +++ b/tests/auto/corelib/tools/qarraydata/tst_qarraydata.cpp @@ -37,8 +37,8 @@ struct SharedNullVerifier { SharedNullVerifier() { - Q_ASSERT(QArrayData::shared_null[0].ref.isStatic()); - Q_ASSERT(QArrayData::shared_null[0].ref.isShared()); + Q_ASSERT(QArrayData::shared_null[0].isStatic()); + Q_ASSERT(QArrayData::shared_null[0].isShared()); } }; @@ -86,24 +86,24 @@ void tst_QArrayData::referenceCounting() // Reference counting initialized to 1 (owned) QArrayData array = { { Q_BASIC_ATOMIC_INITIALIZER(1) }, QArrayData::DefaultRawFlags, 0, 0, 0 }; - QCOMPARE(array.ref.atomic.loadRelaxed(), 1); + QCOMPARE(array.ref_.atomic.loadRelaxed(), 1); - QVERIFY(!array.ref.isStatic()); + QVERIFY(!array.isStatic()); - QVERIFY(array.ref.ref()); - QCOMPARE(array.ref.atomic.loadRelaxed(), 2); + QVERIFY(array.ref()); + QCOMPARE(array.ref_.atomic.loadRelaxed(), 2); - QVERIFY(array.ref.deref()); - QCOMPARE(array.ref.atomic.loadRelaxed(), 1); + QVERIFY(array.deref()); + QCOMPARE(array.ref_.atomic.loadRelaxed(), 1); - QVERIFY(array.ref.ref()); - QCOMPARE(array.ref.atomic.loadRelaxed(), 2); + QVERIFY(array.ref()); + QCOMPARE(array.ref_.atomic.loadRelaxed(), 2); - QVERIFY(array.ref.deref()); - QCOMPARE(array.ref.atomic.loadRelaxed(), 1); + QVERIFY(array.deref()); + QCOMPARE(array.ref_.atomic.loadRelaxed(), 1); - QVERIFY(!array.ref.deref()); - QCOMPARE(array.ref.atomic.loadRelaxed(), 0); + QVERIFY(!array.deref()); + QCOMPARE(array.ref_.atomic.loadRelaxed(), 0); // Now would be a good time to free/release allocated data } @@ -111,15 +111,15 @@ void tst_QArrayData::referenceCounting() // Reference counting initialized to -1 (static read-only data) QArrayData array = { Q_REFCOUNT_INITIALIZE_STATIC, QArrayData::StaticDataFlags, 0, 0, 0 }; - QCOMPARE(array.ref.atomic.loadRelaxed(), -1); + QCOMPARE(array.ref_.atomic.loadRelaxed(), -1); - QVERIFY(array.ref.isStatic()); + QVERIFY(array.isStatic()); - QVERIFY(array.ref.ref()); - QCOMPARE(array.ref.atomic.loadRelaxed(), -1); + QVERIFY(array.ref()); + QCOMPARE(array.ref_.atomic.loadRelaxed(), -1); - QVERIFY(array.ref.deref()); - QCOMPARE(array.ref.atomic.loadRelaxed(), -1); + QVERIFY(array.deref()); + QCOMPARE(array.ref_.atomic.loadRelaxed(), -1); } } @@ -129,26 +129,23 @@ void tst_QArrayData::sharedNullEmpty() QArrayData *null = const_cast(QArrayData::shared_null); QArrayData *empty = QArrayData::allocate(1, alignof(QArrayData), 0); - QVERIFY(null->ref.isStatic()); - QVERIFY(null->ref.isShared()); + QVERIFY(null->isStatic()); + QVERIFY(null->isShared()); - QVERIFY(empty->ref.isStatic()); - QVERIFY(empty->ref.isShared()); + QVERIFY(empty->isStatic()); + QVERIFY(empty->isShared()); - QCOMPARE(null->ref.atomic.loadRelaxed(), -1); - QCOMPARE(empty->ref.atomic.loadRelaxed(), -1); + QCOMPARE(null->ref_.atomic.loadRelaxed(), -1); + QCOMPARE(empty->ref_.atomic.loadRelaxed(), -1); - QVERIFY(null->ref.ref()); - QVERIFY(empty->ref.ref()); + QCOMPARE(null->ref_.atomic.loadRelaxed(), -1); + QCOMPARE(empty->ref_.atomic.loadRelaxed(), -1); - QCOMPARE(null->ref.atomic.loadRelaxed(), -1); - QCOMPARE(empty->ref.atomic.loadRelaxed(), -1); + QVERIFY(null->deref()); + QVERIFY(empty->deref()); - QVERIFY(null->ref.deref()); - QVERIFY(empty->ref.deref()); - - QCOMPARE(null->ref.atomic.loadRelaxed(), -1); - QCOMPARE(empty->ref.atomic.loadRelaxed(), -1); + QCOMPARE(null->ref_.atomic.loadRelaxed(), -1); + QCOMPARE(empty->ref_.atomic.loadRelaxed(), -1); QVERIFY(null != empty); -- cgit v1.2.3