qdbusthreaddebug_p.h

来自「奇趣公司比较新的qt/emd版本」· C头文件 代码 · 共 202 行

H
202
字号
/******************************************************************************** Copyright (C) 1992-2007 Trolltech ASA. All rights reserved.**** This file is part of the tools applications of the Qt Toolkit.**** This file may be used under the terms of the GNU General Public** License version 2.0 as published by the Free Software Foundation** and appearing in the file LICENSE.GPL included in the packaging of** this file.  Please review the following information to ensure GNU** General Public Licensing requirements will be met:** http://trolltech.com/products/qt/licenses/licensing/opensource/**** If you are unsure which license is appropriate for your use, please** review the following information:** http://trolltech.com/products/qt/licenses/licensing/licensingoverview** or contact the sales department at sales@trolltech.com.**** In addition, as a special exception, Trolltech gives you certain** additional rights. These rights are described in the Trolltech GPL** Exception version 1.0, which can be found at** http://www.trolltech.com/products/qt/gplexception/ and in the file** GPL_EXCEPTION.txt in this package.**** In addition, as a special exception, Trolltech, as the sole copyright** holder for Qt Designer, grants users of the Qt/Eclipse Integration** plug-in the right for the Qt/Eclipse Integration to link to** functionality provided by Qt Designer and its related libraries.**** Trolltech reserves all rights not expressly granted herein.**** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.******************************************************************************/#ifndef QDBUSTHREADDEBUG_P_H#define QDBUSTHREADDEBUG_P_H////  W A R N I N G//  -------------//// This file is not part of the Qt API.  It exists purely as an// implementation detail.  This header file may change from version to// version without notice, or even be removed.//// We mean it.//#if !defined(QDBUS_THREAD_DEBUG) && defined(QT_BUILD_INTERNAL)# define QDBUS_THREAD_DEBUG 1#endif#if QDBUS_THREAD_DEBUGtypedef void (*qdbusThreadDebugFunc)(int, int, QDBusConnectionPrivate *);QDBUS_EXPORT void qdbusDefaultThreadDebug(int, int, QDBusConnectionPrivate *);extern QDBUS_EXPORT qdbusThreadDebugFunc qdbusThreadDebug;#endifenum ThreadAction {    ConnectAction = 0,    DisconnectAction = 1,    RegisterObjectAction = 2,    UnregisterObjectAction = 3,    ObjectRegisteredAtAction = 4,    CloseConnectionAction = 10,    ObjectDestroyedAction = 11,    RelaySignalAction = 12,    HandleObjectCallAction = 13,    HandleSignalAction = 14,    ConnectRelayAction = 15,    DisconnectRelayAction = 16,    FindMetaObject1Action = 17,    FindMetaObject2Action = 18,    RegisterServiceAction = 19,    UnregisterServiceAction = 20,    UpdateSignalHookOwnerAction = 21,    HandleObjectCallPostEventAction = 22,    HandleObjectCallSemaphoreAction = 23,    DoDispatchAction = 24,    SendWithReplyAsyncAction = 25,    MessageResultReceivedAction = 26,    ActivateSignalAction = 27,    AddTimeoutAction = 50,    RemoveTimeoutAction = 51,    AddWatchAction = 52,    RemoveWatchAction = 53,    ToggleWatchAction = 54};struct QDBusLockerBase{    enum Condition    {        BeforeLock,        AfterLock,        BeforeUnlock,        AfterUnlock,        BeforePost,        AfterPost,        BeforeDeliver,        AfterDeliver,        BeforeAcquire,        AfterAcquire,        BeforeRelease,        AfterRelease    };#if QDBUS_THREAD_DEBUG    static inline void reportThreadAction(int action, int condition, QDBusConnectionPrivate *ptr)    { if (qdbusThreadDebug) qdbusThreadDebug(action, condition, ptr); }#else    static inline void reportThreadAction(int, int, QDBusConnectionPrivate *) { }#endif};struct QDBusReadLocker: QDBusLockerBase{    QDBusConnectionPrivate *self;    ThreadAction action;    inline QDBusReadLocker(ThreadAction a, QDBusConnectionPrivate *s)        : self(s), action(a)    {        reportThreadAction(action, BeforeLock, self);        self->lock.lockForRead();        reportThreadAction(action, AfterLock, self);    }    inline ~QDBusReadLocker()    {        reportThreadAction(action, BeforeUnlock, self);        self->lock.unlock();        reportThreadAction(action, AfterUnlock, self);    }};struct QDBusWriteLocker: QDBusLockerBase{    QDBusConnectionPrivate *self;    ThreadAction action;    inline QDBusWriteLocker(ThreadAction a, QDBusConnectionPrivate *s)        : self(s), action(a)    {        reportThreadAction(action, BeforeLock, self);        self->lock.lockForWrite();        reportThreadAction(action, AfterLock, self);    }    inline ~QDBusWriteLocker()    {        reportThreadAction(action, BeforeUnlock, self);        self->lock.unlock();        reportThreadAction(action, AfterUnlock, self);    }};struct QDBusDispatchLocker: QDBusLockerBase{    QDBusConnectionPrivate *self;    ThreadAction action;    inline QDBusDispatchLocker(ThreadAction a, QDBusConnectionPrivate *s)        : self(s), action(a)    {        reportThreadAction(action, BeforeLock, self);        self->dispatchLock.lock();        reportThreadAction(action, AfterLock, self);    }    inline ~QDBusDispatchLocker()    {        reportThreadAction(action, BeforeUnlock, self);        self->dispatchLock.unlock();        reportThreadAction(action, AfterUnlock, self);    }};#if QDBUS_THREAD_DEBUG# define SEM_ACQUIRE(action, sem)                                       \    do {                                                                \    QDBusLockerBase::reportThreadAction(action, QDBusLockerBase::BeforeAcquire, this); \    sem.acquire();                                                      \    QDBusLockerBase::reportThreadAction(action, QDBusLockerBase::AfterAcquire, this); \    } while (0)# define SEM_RELEASE(action, sem)                                       \    do {                                                                \    QDBusLockerBase::reportThreadAction(action, QDBusLockerBase::BeforeRelease, that); \    sem.release();                                                      \    QDBusLockerBase::reportThreadAction(action, QDBusLockerBase::AfterRelease, that); \    } while (0)#else# define SEM_ACQUIRE(action, sem)       sem.acquire()# define SEM_RELEASE(action, sem)       sem.release()#endif#endif

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?