Q(Basic)Atomic: remove QT_BASIC_ATOMIC_HAS_CONSTRUCTORS

The define has always been set, so we can simplify all the code that
checked for it.

Change-Id: I9133ba95dbd6e1da465ade1d1306310bd3fb9a45
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
This commit is contained in:
Fabian Kosmale 2022-09-20 15:37:09 +02:00
parent c5b816393d
commit 77646f668d
2 changed files with 2 additions and 36 deletions

View File

@ -14,29 +14,16 @@ QT_BEGIN_NAMESPACE
QT_WARNING_PUSH QT_WARNING_PUSH
QT_WARNING_DISABLE_GCC("-Wextra") QT_WARNING_DISABLE_GCC("-Wextra")
#ifdef Q_CLANG_QDOC
# undef QT_BASIC_ATOMIC_HAS_CONSTRUCTORS
#endif
// High-level atomic integer operations // High-level atomic integer operations
template <typename T> template <typename T>
class QAtomicInteger : public QBasicAtomicInteger<T> class QAtomicInteger : public QBasicAtomicInteger<T>
{ {
public: public:
// Non-atomic API // Non-atomic API
#ifdef QT_BASIC_ATOMIC_HAS_CONSTRUCTORS
constexpr QAtomicInteger(T value = 0) noexcept : QBasicAtomicInteger<T>(value) {} constexpr QAtomicInteger(T value = 0) noexcept : QBasicAtomicInteger<T>(value) {}
#else
inline QAtomicInteger(T value = 0) noexcept
{
this->_q_value = value;
}
#endif
inline QAtomicInteger(const QAtomicInteger &other) noexcept inline QAtomicInteger(const QAtomicInteger &other) noexcept
#ifdef QT_BASIC_ATOMIC_HAS_CONSTRUCTORS
: QBasicAtomicInteger<T>() : QBasicAtomicInteger<T>()
#endif
{ {
this->storeRelease(other.loadAcquire()); this->storeRelease(other.loadAcquire());
} }
@ -129,10 +116,7 @@ public:
// Non-atomic API // Non-atomic API
// We could use QT_COMPILER_INHERITING_CONSTRUCTORS, but we need only one; // We could use QT_COMPILER_INHERITING_CONSTRUCTORS, but we need only one;
// the implicit definition for all the others is fine. // the implicit definition for all the others is fine.
#ifdef QT_BASIC_ATOMIC_HAS_CONSTRUCTORS constexpr QAtomicInt(int value = 0) noexcept : QAtomicInteger<int>(value) {}
constexpr
#endif
QAtomicInt(int value = 0) noexcept : QAtomicInteger<int>(value) {}
}; };
// High-level atomic pointer operations // High-level atomic pointer operations
@ -140,18 +124,10 @@ template <typename T>
class QAtomicPointer : public QBasicAtomicPointer<T> class QAtomicPointer : public QBasicAtomicPointer<T>
{ {
public: public:
#ifdef QT_BASIC_ATOMIC_HAS_CONSTRUCTORS
constexpr QAtomicPointer(T *value = nullptr) noexcept : QBasicAtomicPointer<T>(value) {} constexpr QAtomicPointer(T *value = nullptr) noexcept : QBasicAtomicPointer<T>(value) {}
#else
inline QAtomicPointer(T *value = nullptr) noexcept
{
this->storeRelaxed(value);
}
#endif
inline QAtomicPointer(const QAtomicPointer<T> &other) noexcept inline QAtomicPointer(const QAtomicPointer<T> &other) noexcept
#ifdef QT_BASIC_ATOMIC_HAS_CONSTRUCTORS
: QBasicAtomicPointer<T>() : QBasicAtomicPointer<T>()
#endif
{ {
this->storeRelease(other.loadAcquire()); this->storeRelease(other.loadAcquire());
} }
@ -196,10 +172,6 @@ public:
QT_WARNING_POP QT_WARNING_POP
#ifdef QT_BASIC_ATOMIC_HAS_CONSTRUCTORS
# undef QT_BASIC_ATOMIC_HAS_CONSTRUCTORS
#endif
/*! /*!
This is a helper for the assignment operators of implicitly This is a helper for the assignment operators of implicitly
shared classes. Your assignment operator should look like this: shared classes. Your assignment operator should look like this:

View File

@ -23,8 +23,6 @@ QT_END_NAMESPACE
// New atomics // New atomics
#define QT_BASIC_ATOMIC_HAS_CONSTRUCTORS
template <typename T> template <typename T>
class QBasicAtomicInteger class QBasicAtomicInteger
{ {
@ -155,13 +153,11 @@ public:
{ return fetchAndXorOrdered(v) ^ v; } { return fetchAndXorOrdered(v) ^ v; }
#ifdef QT_BASIC_ATOMIC_HAS_CONSTRUCTORS
QBasicAtomicInteger() = default; QBasicAtomicInteger() = default;
constexpr QBasicAtomicInteger(T value) noexcept : _q_value(value) {} constexpr QBasicAtomicInteger(T value) noexcept : _q_value(value) {}
QBasicAtomicInteger(const QBasicAtomicInteger &) = delete; QBasicAtomicInteger(const QBasicAtomicInteger &) = delete;
QBasicAtomicInteger &operator=(const QBasicAtomicInteger &) = delete; QBasicAtomicInteger &operator=(const QBasicAtomicInteger &) = delete;
QBasicAtomicInteger &operator=(const QBasicAtomicInteger &) volatile = delete; QBasicAtomicInteger &operator=(const QBasicAtomicInteger &) volatile = delete;
#endif
}; };
typedef QBasicAtomicInteger<int> QBasicAtomicInt; typedef QBasicAtomicInteger<int> QBasicAtomicInt;
@ -252,13 +248,11 @@ public:
Type operator-=(qptrdiff valueToSub) noexcept Type operator-=(qptrdiff valueToSub) noexcept
{ return fetchAndSubOrdered(valueToSub) - valueToSub; } { return fetchAndSubOrdered(valueToSub) - valueToSub; }
#ifdef QT_BASIC_ATOMIC_HAS_CONSTRUCTORS
QBasicAtomicPointer() = default; QBasicAtomicPointer() = default;
constexpr QBasicAtomicPointer(Type value) noexcept : _q_value(value) {} constexpr QBasicAtomicPointer(Type value) noexcept : _q_value(value) {}
QBasicAtomicPointer(const QBasicAtomicPointer &) = delete; QBasicAtomicPointer(const QBasicAtomicPointer &) = delete;
QBasicAtomicPointer &operator=(const QBasicAtomicPointer &) = delete; QBasicAtomicPointer &operator=(const QBasicAtomicPointer &) = delete;
QBasicAtomicPointer &operator=(const QBasicAtomicPointer &) volatile = delete; QBasicAtomicPointer &operator=(const QBasicAtomicPointer &) volatile = delete;
#endif
}; };
#ifndef Q_BASIC_ATOMIC_INITIALIZER #ifndef Q_BASIC_ATOMIC_INITIALIZER