doc: clangqdoc documents the threads case

qmutex.h is updated to let clangqdoc document the threads case,
because the no-threads case is not interesting, and clang can
handle everything declared in qmutex.h. This change required
that a few minor qdoc errors be corrected in qmutex.cpp as well.

Change-Id: Icb4122f2179d6aad39dc68376498364820143297
Reviewed-by: Martin Smith <martin.smith@qt.io>
This commit is contained in:
Martin Smith 2016-11-29 11:43:40 +01:00
parent 0e810e27a5
commit 9605f4f47b
2 changed files with 20 additions and 6 deletions

View File

@ -266,6 +266,9 @@ bool QMutex::tryLock(int timeout) QT_MUTEX_LOCK_NOEXCEPT
/*! \fn bool QMutex::try_lock() /*! \fn bool QMutex::try_lock()
\since 5.8 \since 5.8
Attempts to lock the mutex. This function returns \c true if the lock
was obtained; otherwise it returns \c false.
This function is provided for compatibility with the Standard Library This function is provided for compatibility with the Standard Library
concept \c Lockable. It is equivalent to tryLock(). concept \c Lockable. It is equivalent to tryLock().
*/ */
@ -336,16 +339,23 @@ void QMutex::unlock() Q_DECL_NOTHROW
unlockInternal(); unlockInternal();
} }
/*!
\fn bool QMutex::isRecursive() const
\since 5.7
Returns \c true if the mutex is recursive.
*/
bool QBasicMutex::isRecursive() Q_DECL_NOTHROW bool QBasicMutex::isRecursive() Q_DECL_NOTHROW
{ {
return QT_PREPEND_NAMESPACE(isRecursive)(d_ptr.loadAcquire()); return QT_PREPEND_NAMESPACE(isRecursive)(d_ptr.loadAcquire());
} }
/*! /*!
\overload
\since 5.7 \since 5.7
Returns \c true if the mutex is recursive Returns \c true if the mutex is recursive.
*/ */
bool QBasicMutex::isRecursive() const Q_DECL_NOTHROW bool QBasicMutex::isRecursive() const Q_DECL_NOTHROW
{ {

View File

@ -54,7 +54,7 @@ class tst_QMutex;
QT_BEGIN_NAMESPACE QT_BEGIN_NAMESPACE
#if !defined(QT_NO_THREAD) && !defined(Q_QDOC) #if !defined(QT_NO_THREAD) || defined(Q_CLANG_QDOC)
#ifdef Q_OS_LINUX #ifdef Q_OS_LINUX
# define QT_MUTEX_LOCK_NOEXCEPT Q_DECL_NOTHROW # define QT_MUTEX_LOCK_NOEXCEPT Q_DECL_NOTHROW
@ -189,6 +189,7 @@ private:
class Q_CORE_EXPORT QMutexLocker class Q_CORE_EXPORT QMutexLocker
{ {
public: public:
#ifndef Q_CLANG_QDOC
inline explicit QMutexLocker(QBasicMutex *m) QT_MUTEX_LOCK_NOEXCEPT inline explicit QMutexLocker(QBasicMutex *m) QT_MUTEX_LOCK_NOEXCEPT
{ {
Q_ASSERT_X((reinterpret_cast<quintptr>(m) & quintptr(1u)) == quintptr(0), Q_ASSERT_X((reinterpret_cast<quintptr>(m) & quintptr(1u)) == quintptr(0),
@ -200,6 +201,9 @@ public:
val |= 1; val |= 1;
} }
} }
#else
QMutexLocker(QMutex *) { }
#endif
inline ~QMutexLocker() { unlock(); } inline ~QMutexLocker() { unlock(); }
inline void unlock() Q_DECL_NOTHROW inline void unlock() Q_DECL_NOTHROW
@ -240,7 +244,7 @@ private:
quintptr val; quintptr val;
}; };
#else // QT_NO_THREAD or Q_QDOC #else // QT_NO_THREAD && !Q_CLANG_QDOC
class Q_CORE_EXPORT QMutex class Q_CORE_EXPORT QMutex
{ {
@ -255,7 +259,7 @@ public:
inline void unlock() Q_DECL_NOTHROW {} inline void unlock() Q_DECL_NOTHROW {}
inline bool isRecursive() const Q_DECL_NOTHROW { return true; } inline bool isRecursive() const Q_DECL_NOTHROW { return true; }
#if QT_HAS_INCLUDE(<chrono>) || defined(Q_QDOC) #if QT_HAS_INCLUDE(<chrono>)
template <class Rep, class Period> template <class Rep, class Period>
inline bool try_lock_for(std::chrono::duration<Rep, Period> duration) Q_DECL_NOTHROW inline bool try_lock_for(std::chrono::duration<Rep, Period> duration) Q_DECL_NOTHROW
{ {
@ -291,7 +295,7 @@ private:
typedef QMutex QBasicMutex; typedef QMutex QBasicMutex;
#endif // QT_NO_THREAD or Q_QDOC #endif // QT_NO_THREAD && !Q_CLANG_QDOC
QT_END_NAMESPACE QT_END_NAMESPACE