Stroika Library 3.0d16
 
Loading...
Searching...
No Matches
TimingTrace.inl
1/*
2 * Copyright(c) Sophist Solutions, Inc. 1990-2025. All rights reserved
3 */
4
6#include "Trace.h"
7
8namespace Stroika::Foundation::Debug {
9
10 /*
11 ********************************************************************************
12 ***************************** Debug::TimingTrace *******************************
13 ********************************************************************************
14 */
15 inline TimingTrace::TimingTrace ([[maybe_unused]] Time::DurationSeconds warnIfLongerThan)
16#if qStroika_Foundation_Debug_DefaultTracingOn
17 : WhenTimeExceeded{warnIfLongerThan, [this] (Time::DurationSeconds timeTaken) noexcept {
18 if (fShowIfTimeExceeded_) {
19 DbgTrace (Characters::FormatString{"(timeTaken={})"}, timeTaken);
20 }
21 }}
22#endif
23 {
24 }
25 inline TimingTrace::TimingTrace ([[maybe_unused]] const char* label, [[maybe_unused]] Time::DurationSeconds warnIfLongerThan)
26#if qStroika_Foundation_Debug_DefaultTracingOn
27 : WhenTimeExceeded{warnIfLongerThan, [=, this] (Time::DurationSeconds timeTaken) noexcept {
28 if (fShowIfTimeExceeded_) {
29 DbgTrace (Characters::FormatString{"{} (timeTaken={})"}, Characters::String{label}, timeTaken);
30 }
31 }}
32#endif
33 {
34 }
35 inline TimingTrace::TimingTrace ([[maybe_unused]] const wchar_t* label, [[maybe_unused]] Time::DurationSeconds warnIfLongerThan)
36#if qStroika_Foundation_Debug_DefaultTracingOn
37 : WhenTimeExceeded{warnIfLongerThan, [=, this] (Time::DurationSeconds timeTaken) noexcept {
38 if (fShowIfTimeExceeded_) {
39 DbgTrace (Characters::FormatString{"{} (timeTaken={})"}, label, timeTaken);
40 }
41 }}
42#endif
43 {
44 }
45 inline TimingTrace::TimingTrace ([[maybe_unused]] const Characters::String& label, [[maybe_unused]] Time::DurationSeconds warnIfLongerThan)
46#if qStroika_Foundation_Debug_DefaultTracingOn
47 : WhenTimeExceeded{warnIfLongerThan, [=, this] (Time::DurationSeconds timeTaken) noexcept {
48 if (fShowIfTimeExceeded_) {
49 DbgTrace (Characters::FormatString{"{} (timeTaken={})"}, label, timeTaken);
50 }
51 }}
52#endif
53 {
54 }
55 inline void TimingTrace::Suppress ()
56 {
57#if qStroika_Foundation_Debug_DefaultTracingOn
58 fShowIfTimeExceeded_ = false;
59#endif
60 }
61
62}
#define DbgTrace
Definition Trace.h:309