diff options
Diffstat (limited to 'src/libs/utils/scopedtimer.h')
-rw-r--r-- | src/libs/utils/scopedtimer.h | 24 |
1 files changed, 19 insertions, 5 deletions
diff --git a/src/libs/utils/scopedtimer.h b/src/libs/utils/scopedtimer.h index e6ec42e6f4..d66ef15841 100644 --- a/src/libs/utils/scopedtimer.h +++ b/src/libs/utils/scopedtimer.h @@ -5,6 +5,8 @@ #include "utils_global.h" +#include <QString> + #include <atomic> #include <memory> @@ -12,10 +14,19 @@ namespace Utils { class ScopedTimerPrivate; +class QTCREATOR_UTILS_EXPORT ScopedTimerData +{ +public: + QString m_message; + const char *m_fileName = nullptr; + int m_line = 0; + std::atomic<int64_t> *m_cumulative = nullptr; +}; + class QTCREATOR_UTILS_EXPORT ScopedTimer { public: - ScopedTimer(const char *fileName, int line, std::atomic<int64_t> *cumulative = nullptr); + ScopedTimer(const ScopedTimerData &data); ~ScopedTimer(); private: @@ -24,15 +35,18 @@ private: } // Utils +// The "message" argument of QTC_SCOPED_TIMER() and QTC_STATIC_SCOPED_TIMER() macros is optional. +// When provided, it should evaluate to QString. + #define QTC_CONCAT_HELPER(x, y) x ## y #define QTC_CONCAT(x, y) QTC_CONCAT_HELPER(x, y) -#define QTC_SCOPED_TIMER() ::Utils::ScopedTimer QTC_CONCAT(_qtc_scoped_timer_, __LINE__)\ -(__FILE__, __LINE__) +#define QTC_SCOPED_TIMER(message) ::Utils::ScopedTimer QTC_CONCAT(_qtc_scoped_timer_, __LINE__)\ +({{message}, __FILE__, __LINE__}) // The macro below expands as follows (in one line): // static std::atomic<int64_t> _qtc_static_scoped_timer___LINE__ = 0; // ScopedTimer _qtc_scoped_timer___LINE__(__FILE__, __LINE__, &_qtc_static_scoped_timer___LINE__) -#define QTC_STATIC_SCOPED_TIMER() static std::atomic<int64_t> \ +#define QTC_STATIC_SCOPED_TIMER(message) static std::atomic<int64_t> \ QTC_CONCAT(_qtc_static_scoped_timer_, __LINE__) = 0; \ ::Utils::ScopedTimer QTC_CONCAT(_qtc_scoped_timer_, __LINE__)\ -(__FILE__, __LINE__, &QTC_CONCAT(_qtc_static_scoped_timer_, __LINE__)) +({{message}, __FILE__, __LINE__, &QTC_CONCAT(_qtc_static_scoped_timer_, __LINE__)}) |