7#include "utility/module.hpp"
8#include "time_stamp_count.hpp"
14namespace hi::inline
v1 {
18 trace_base(trace_base
const &) =
delete;
19 trace_base(trace_base &&) =
delete;
20 trace_base &operator=(trace_base
const &) =
delete;
21 trace_base &operator=(trace_base &&) =
delete;
30 virtual void log()
const noexcept = 0;
33 inline static thread_local trace_base *_top =
nullptr;
36 trace_base *_next =
nullptr;
39template<fixed_
string Tag,
int NumItems = 0>
40class trace :
public trace_base {
42 trace() noexcept : trace_base(), items(), size(0) {}
44 virtual ~trace()
noexcept
46 if (std::uncaught_exceptions()) {
51 global_counter<Tag>.add_duration(current_time_stamp.count() - _time_stamp.count());
54 void log()
const noexcept override
62 void set(
char const *key, T &&value)
noexcept
76template<fixed_
string Tag>
77class trace<Tag, 0> :
public trace_base {
79 trace() noexcept : trace_base() {}
81 virtual ~trace()
noexcept
83 if (std::uncaught_exceptions()) {
88 global_counter<Tag>.add_duration(current_time_stamp.count() - _time_stamp.count());
91 void log()
const noexcept override
#define hi_axiom(expression,...)
Specify an axiom; an expression that is true.
Definition assert.hpp:253
DOXYGEN BUG.
Definition algorithm.hpp:13
A dynamic data type.
Definition datum.hpp:223
Since Window's 10 QueryPerformanceCounter() counts at only 10MHz which is too low to measure performa...
Definition time_stamp_count.hpp:28
Definition time_stamp_count.hpp:30