summaryrefslogtreecommitdiff
path: root/src/libs/utils/scopedtimer.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/libs/utils/scopedtimer.h')
-rw-r--r--src/libs/utils/scopedtimer.h24
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__)})