acme
Foundational cross-platform layer of the ca2 framework
Loading...
Searching...
No Matches
trace.h
1// Created by Camilo on 2021-10-04 12:06 BRT <3ThomasBorregaardSorensen!!
2#pragma once
3
4
5
6
7
8// Declare a global instance of this class to automatically register a custom trace category at startup
9class CLASS_DECL_ACME trace_category
10{
11public:
12
13
14 enum_trace_category m_etracecategory;
15 const_char_pointer m_pszName;
16 enum_trace_level m_etracelevelMinimum;
17 bool m_bEnabled;
18
19
20 trace_category();
21 ~trace_category();
22
23
24 enum_trace_level get_trace_level() const { return m_etracelevelMinimum; }
25 void set_trace_level(enum_trace_level etracelevel) { m_etracelevelMinimum = etracelevel; }
26 bool is_enabled() const { return m_bEnabled; }
27 void enable(bool bEnable = true) { m_bEnabled = bEnable; }
28
29 operator enum_trace_category () const { return m_etracecategory; }
30
31
32};
33
34
35
36namespace platform
37{
38 class trace;
39
40
41
42 class CLASS_DECL_ACME trace :
43 virtual public ::particle
44 {
45 public:
46
47
48 ::trace_category m_tracecategorya[e_trace_category_count];
49
50
51 trace();
52 ~trace() override;
53
54
55 ::trace_category * operator[](enum_trace_category etracecategory)
56 {
57
58 if (etracecategory < e_trace_category_general || etracecategory >= e_trace_category_count)
59 {
60
61 return nullptr;
62
63 }
64
65 return &m_tracecategorya[etracecategory];
66
67 }
68
69
70 ::trace_category * enabled_get(enum_trace_category etracecategory, enum_trace_level etracelevel)
71 {
72
73 auto ptracecategory = operator[](etracecategory);
74
75 if (ptracecategory == nullptr)
76 {
77
78 return nullptr;
79
80 }
81
82 if (!ptracecategory->is_enabled() || etracelevel < ptracecategory->m_etracelevelMinimum)
83 {
84
85 return nullptr;
86
87 }
88
89 return ptracecategory;
90
91 }
92
93
94 //void print(enum_trace_level etracelevel, enum_trace_category etracecategory, const ::scoped_string & scopedstrFunction, const ::file::path & path, ::i32 nLine, const ::scoped_string & scopedstr) override;
95
96
97 };
98} // namespace platform
99
100
101CLASS_DECL_ACME const_char_pointer get_windows_message_name(::u32 nMsg);
102
103
104
105
106
107
108
109using trace_function = ::function < void(enum_trace_level, const ::scoped_string &, bool bCarriage) >;
110
111using memory_dump_function = ::function < void(enum_trace_level, const void * p, memsize s) >;
112
113
114
115
116CLASS_DECL_ACME trace_function std_inline_log(enum_trace_level etracelevelInformation = e_trace_level_information);
117CLASS_DECL_ACME trace_function std_get_output(::string* pstrOutput);
118
119CLASS_DECL_ACME memory_dump_function std_inline_memory_dump(enum_trace_level etracelevelInformation = e_trace_level_information);
120
121
122
123
124
Definition _template_forward_declaration.h:297
include "thread/AutoLock.h"
Definition _forward_declaration.h:877