Add a QMutex::isRecursive() const noexcept

This is source- and binary-compatible, including the marking of the
existing function as noexcept.

[ChangeLog][QtCore][QMutex] Made the isRecursive() method be a const
function so that it can be called in const QMutex objects too.

Change-Id: Ifea6e497f11a461db432ffff1448bead97c08f92
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
This commit is contained in:
Thiago Macieira 2016-04-25 16:42:11 -07:00
parent 75d65600f9
commit 0b1b06ffc0
2 changed files with 18 additions and 12 deletions

View File

@ -282,18 +282,21 @@ void QMutex::unlock() Q_DECL_NOTHROW
unlockInternal();
}
/*!
\fn void QMutex::isRecursive()
\since 5.0
Returns \c true if the mutex is recursive
*/
bool QBasicMutex::isRecursive()
bool QBasicMutex::isRecursive() Q_DECL_NOTHROW
{
return QT_PREPEND_NAMESPACE(isRecursive)(d_ptr.loadAcquire());
}
/*!
\overload
\since 5.7
Returns \c true if the mutex is recursive
*/
bool QBasicMutex::isRecursive() const Q_DECL_NOTHROW
{
return QT_PREPEND_NAMESPACE(isRecursive)(d_ptr.loadAcquire());
}
/*!
\class QMutexLocker

View File

@ -75,7 +75,8 @@ public:
return fastTryLock();
}
bool isRecursive(); //### Qt6: mark const
bool isRecursive() Q_DECL_NOTHROW; //### Qt6: remove me
bool isRecursive() const Q_DECL_NOTHROW;
private:
inline bool fastTryLock() Q_DECL_NOTHROW {
@ -104,7 +105,8 @@ private:
friend class QMutexData;
};
class Q_CORE_EXPORT QMutex : public QBasicMutex {
class Q_CORE_EXPORT QMutex : public QBasicMutex
{
public:
enum RecursionMode { NonRecursive, Recursive };
explicit QMutex(RecursionMode mode = NonRecursive);
@ -114,7 +116,8 @@ public:
bool tryLock(int timeout = 0) QT_MUTEX_LOCK_NOEXCEPT;
void unlock() Q_DECL_NOTHROW;
using QBasicMutex::isRecursive;
bool isRecursive() const Q_DECL_NOTHROW
{ return QBasicMutex::isRecursive(); }
private:
Q_DISABLE_COPY(QMutex)
@ -187,7 +190,7 @@ public:
inline void lock() Q_DECL_NOTHROW {}
inline bool tryLock(int timeout = 0) Q_DECL_NOTHROW { Q_UNUSED(timeout); return true; }
inline void unlock() Q_DECL_NOTHROW {}
inline bool isRecursive() Q_DECL_NOTHROW { return true; }
inline bool isRecursive() const Q_DECL_NOTHROW { return true; }
private:
Q_DISABLE_COPY(QMutex)