summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/corelib/thread/qatomic.cpp27
-rw-r--r--src/corelib/thread/qatomic.h34
-rw-r--r--src/corelib/thread/qbasicatomic.h4
-rw-r--r--tests/auto/corelib/thread/qatomicint/tst_qatomicint.cpp25
-rw-r--r--tests/auto/corelib/thread/qatomicinteger/tst_qatomicinteger.cpp52
-rw-r--r--tests/auto/corelib/thread/qatomicpointer/tst_qatomicpointer.cpp22
6 files changed, 7 insertions, 157 deletions
diff --git a/src/corelib/thread/qatomic.cpp b/src/corelib/thread/qatomic.cpp
index 4843556eb50..948f30bb989 100644
--- a/src/corelib/thread/qatomic.cpp
+++ b/src/corelib/thread/qatomic.cpp
@@ -211,20 +211,6 @@
*/
/*!
- \fn template <typename T> QAtomicInteger<T>::QAtomicInteger(const QAtomicInteger &other)
-
- Constructs a copy of \a other.
-*/
-
-/*!
- \fn template <typename T> QAtomicInteger &QAtomicInteger<T>::operator=(const QAtomicInteger &other)
-
- Assigns \a other to this QAtomicInteger and returns a reference to
- this QAtomicInteger.
-*/
-
-
-/*!
\fn template <typename T> T QAtomicInteger<T>::loadRelaxed() const
\since 5.14
@@ -1369,19 +1355,6 @@
*/
/*!
- \fn template <typename T> QAtomicPointer<T>::QAtomicPointer(const QAtomicPointer<T> &other)
-
- Constructs a copy of \a other.
-*/
-
-/*!
- \fn template <typename T> QAtomicPointer &QAtomicPointer<T>::operator=(const QAtomicPointer &other)
-
- Assigns \a other to this QAtomicPointer and returns a reference to
- this QAtomicPointer.
-*/
-
-/*!
\fn template <typename T> T *QAtomicPointer<T>::loadRelaxed() const
\since 5.14
diff --git a/src/corelib/thread/qatomic.h b/src/corelib/thread/qatomic.h
index 7fe5ac69b9d..26369d28f8f 100644
--- a/src/corelib/thread/qatomic.h
+++ b/src/corelib/thread/qatomic.h
@@ -17,20 +17,8 @@ template <typename T>
class QAtomicInteger : public QBasicAtomicInteger<T>
{
public:
- // Non-atomic API
constexpr QAtomicInteger(T value = 0) noexcept : QBasicAtomicInteger<T>(value) {}
-
- inline QAtomicInteger(const QAtomicInteger &other) noexcept
- : QBasicAtomicInteger<T>()
- {
- this->storeRelease(other.loadAcquire());
- }
-
- inline QAtomicInteger &operator=(const QAtomicInteger &other) noexcept
- {
- this->storeRelease(other.loadAcquire());
- return *this;
- }
+ using QBasicAtomicInteger<T>::operator=;
#ifdef Q_QDOC
T loadRelaxed() const;
@@ -108,13 +96,12 @@ public:
#endif
};
+// ### Qt 7: make QAtomicInt a typedef
class QAtomicInt : public QAtomicInteger<int>
{
public:
- // Non-atomic API
- // We could use QT_COMPILER_INHERITING_CONSTRUCTORS, but we need only one;
- // the implicit definition for all the others is fine.
- constexpr QAtomicInt(int value = 0) noexcept : QAtomicInteger<int>(value) {}
+ using QAtomicInteger<int>::QAtomicInteger;
+ using QAtomicInteger<int>::operator=;
};
// High-level atomic pointer operations
@@ -123,18 +110,7 @@ class QAtomicPointer : public QBasicAtomicPointer<T>
{
public:
constexpr QAtomicPointer(T *value = nullptr) noexcept : QBasicAtomicPointer<T>(value) {}
-
- inline QAtomicPointer(const QAtomicPointer<T> &other) noexcept
- : QBasicAtomicPointer<T>()
- {
- this->storeRelease(other.loadAcquire());
- }
-
- inline QAtomicPointer<T> &operator=(const QAtomicPointer<T> &other) noexcept
- {
- this->storeRelease(other.loadAcquire());
- return *this;
- }
+ using QBasicAtomicPointer<T>::operator=;
#ifdef Q_QDOC
T *loadAcquire() const;
diff --git a/src/corelib/thread/qbasicatomic.h b/src/corelib/thread/qbasicatomic.h
index 6d061ea49a4..4dd67f57c3e 100644
--- a/src/corelib/thread/qbasicatomic.h
+++ b/src/corelib/thread/qbasicatomic.h
@@ -39,7 +39,7 @@ public:
T loadAcquire() const noexcept { return Ops::loadAcquire(_q_value); }
void storeRelease(T newValue) noexcept { Ops::storeRelease(_q_value, newValue); }
operator T() const noexcept { return loadAcquire(); }
- T operator=(T newValue) noexcept { storeRelease(newValue); return newValue; }
+ QBasicAtomicInteger &operator=(T newValue) noexcept { storeRelease(newValue); return *this; }
static constexpr bool isReferenceCountingNative() noexcept { return Ops::isReferenceCountingNative(); }
static constexpr bool isReferenceCountingWaitFree() noexcept { return Ops::isReferenceCountingWaitFree(); }
@@ -171,7 +171,7 @@ public:
void storeRelaxed(Type newValue) noexcept { Ops::storeRelaxed(_q_value, newValue); }
operator Type() const noexcept { return loadAcquire(); }
- Type operator=(Type newValue) noexcept { storeRelease(newValue); return newValue; }
+ QBasicAtomicPointer &operator=(Type newValue) noexcept { storeRelease(newValue); return *this; }
// Atomic API, implemented in qatomic_XXX.h
Type loadAcquire() const noexcept { return Ops::loadAcquire(_q_value); }
diff --git a/tests/auto/corelib/thread/qatomicint/tst_qatomicint.cpp b/tests/auto/corelib/thread/qatomicint/tst_qatomicint.cpp
index e8606b2568c..315256e471f 100644
--- a/tests/auto/corelib/thread/qatomicint/tst_qatomicint.cpp
+++ b/tests/auto/corelib/thread/qatomicint/tst_qatomicint.cpp
@@ -21,8 +21,6 @@ private slots:
// QAtomicInt members
void constructor_data();
void constructor();
- void copy_constructor_data();
- void copy_constructor();
void assignment_operator_data();
void assignment_operator();
@@ -236,25 +234,6 @@ void tst_QAtomicInt::constructor()
QCOMPARE(atomic2.loadRelaxed(), value);
}
-void tst_QAtomicInt::copy_constructor_data()
-{ constructor_data(); }
-
-void tst_QAtomicInt::copy_constructor()
-{
- QFETCH(int, value);
- QAtomicInt atomic1(value);
- QCOMPARE(atomic1.loadRelaxed(), value);
-
- QAtomicInt atomic2(atomic1);
- QCOMPARE(atomic2.loadRelaxed(), value);
- QAtomicInt atomic3 = atomic1;
- QCOMPARE(atomic3.loadRelaxed(), value);
- QAtomicInt atomic4(atomic2);
- QCOMPARE(atomic4.loadRelaxed(), value);
- QAtomicInt atomic5 = atomic2;
- QCOMPARE(atomic5.loadRelaxed(), value);
-}
-
void tst_QAtomicInt::assignment_operator_data()
{
QTest::addColumn<int>("value");
@@ -279,10 +258,6 @@ void tst_QAtomicInt::assignment_operator()
QCOMPARE(atomic1.loadRelaxed(), newval);
atomic1 = value;
QCOMPARE(atomic1.loadRelaxed(), value);
-
- QAtomicInt atomic2 = newval;
- atomic1 = atomic2;
- QCOMPARE(atomic1.loadRelaxed(), atomic2.loadRelaxed());
}
}
diff --git a/tests/auto/corelib/thread/qatomicinteger/tst_qatomicinteger.cpp b/tests/auto/corelib/thread/qatomicinteger/tst_qatomicinteger.cpp
index 4e3c93c4e99..1ac07de80f5 100644
--- a/tests/auto/corelib/thread/qatomicinteger/tst_qatomicinteger.cpp
+++ b/tests/auto/corelib/thread/qatomicinteger/tst_qatomicinteger.cpp
@@ -90,12 +90,6 @@ private Q_SLOTS:
void constructor_data() { addData(); }
void constructor();
- void copy_data() { addData(); }
- void copy();
-
- void assign_data() { addData(); }
- void assign();
-
void operatorInteger_data() { addData(); }
void operatorInteger();
@@ -219,52 +213,6 @@ void tst_QAtomicIntegerXX::constructor()
QVERIFY(atomic.loadRelaxed() <= std::numeric_limits<T>::max());
}
-void tst_QAtomicIntegerXX::copy()
-{
- QFETCH(LargeInt, value);
-
- QAtomicInteger<T> atomic(value);
- QAtomicInteger<T> copy(atomic);
- QCOMPARE(copy.loadRelaxed(), atomic.loadRelaxed());
-
- QAtomicInteger<T> copy2 = atomic;
- QCOMPARE(copy2.loadRelaxed(), atomic.loadRelaxed());
-
- // move
- QAtomicInteger<T> copy3(std::move(copy));
- QCOMPARE(copy3.loadRelaxed(), atomic.loadRelaxed());
-
- QAtomicInteger<T> copy4 = std::move(copy2);
- QCOMPARE(copy4.loadRelaxed(), atomic.loadRelaxed());
-}
-
-void tst_QAtomicIntegerXX::assign()
-{
- QFETCH(LargeInt, value);
-
- QAtomicInteger<T> atomic(value);
- QAtomicInteger<T> copy;
- copy = atomic;
- QCOMPARE(copy.loadRelaxed(), atomic.loadRelaxed());
-
- QAtomicInteger<T> copy2;
- copy2 = atomic; // operator=(const QAtomicInteger &)
- QCOMPARE(copy2.loadRelaxed(), atomic.loadRelaxed());
-
- QAtomicInteger<T> copy2bis;
- copy2bis = atomic.loadRelaxed(); // operator=(T)
- QCOMPARE(copy2bis.loadRelaxed(), atomic.loadRelaxed());
-
- // move
- QAtomicInteger<T> copy3;
- copy3 = std::move(copy);
- QCOMPARE(copy3.loadRelaxed(), atomic.loadRelaxed());
-
- QAtomicInteger<T> copy4;
- copy4 = std::move(copy2);
- QCOMPARE(copy4.loadRelaxed(), atomic.loadRelaxed());
-}
-
void tst_QAtomicIntegerXX::operatorInteger()
{
QFETCH(LargeInt, value);
diff --git a/tests/auto/corelib/thread/qatomicpointer/tst_qatomicpointer.cpp b/tests/auto/corelib/thread/qatomicpointer/tst_qatomicpointer.cpp
index c6bd784270e..1113e73b1b3 100644
--- a/tests/auto/corelib/thread/qatomicpointer/tst_qatomicpointer.cpp
+++ b/tests/auto/corelib/thread/qatomicpointer/tst_qatomicpointer.cpp
@@ -15,7 +15,6 @@ private slots:
void alignment();
void constructor();
- void copy_constructor();
void assignment_operator();
void isTestAndSetNative();
@@ -101,27 +100,6 @@ void tst_QAtomicPointer::constructor()
QCOMPARE(atomic3.loadRelaxed(), three);
}
-void tst_QAtomicPointer::copy_constructor()
-{
- void *one = this;
- QAtomicPointer<void> atomic1 = one;
- QAtomicPointer<void> atomic1_copy = atomic1;
- QCOMPARE(atomic1_copy.loadRelaxed(), one);
- QCOMPARE(atomic1_copy.loadRelaxed(), atomic1.loadRelaxed());
-
- void *two = &one;
- QAtomicPointer<void> atomic2 = two;
- QAtomicPointer<void> atomic2_copy = atomic2;
- QCOMPARE(atomic2_copy.loadRelaxed(), two);
- QCOMPARE(atomic2_copy.loadRelaxed(), atomic2.loadRelaxed());
-
- void *three = &two;
- QAtomicPointer<void> atomic3 = three;
- QAtomicPointer<void> atomic3_copy = atomic3;
- QCOMPARE(atomic3_copy.loadRelaxed(), three);
- QCOMPARE(atomic3_copy.loadRelaxed(), atomic3.loadRelaxed());
-}
-
void tst_QAtomicPointer::assignment_operator()
{
void *one = this;