acme
Foundational cross-platform layer of the ca2 framework
Toggle main menu visibility
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
9
class
CLASS_DECL_ACME trace_category
10
{
11
public
:
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
36
namespace
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
101
CLASS_DECL_ACME const_char_pointer get_windows_message_name(::u32 nMsg);
102
103
104
105
106
107
108
109
using
trace_function =
::function
< void(enum_trace_level, const ::scoped_string &,
bool
bCarriage) >;
110
111
using
memory_dump_function =
::function
< void(enum_trace_level,
const
void
* p, memsize s) >;
112
113
114
115
116
CLASS_DECL_ACME trace_function std_inline_log(enum_trace_level etracelevelInformation = e_trace_level_information);
117
CLASS_DECL_ACME trace_function std_get_output(::string* pstrOutput);
118
119
CLASS_DECL_ACME memory_dump_function std_inline_memory_dump(enum_trace_level etracelevelInformation = e_trace_level_information);
120
121
122
123
124
function
Definition
_template_forward_declaration.h:297
platform
include "thread/AutoLock.h"
Definition
_forward_declaration.h:877
platform
trace.h
Generated by
1.17.0