UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
syms_dev.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2/* date = August 6th 2021 4:44 pm */
3
4#ifndef SYMS_DEV_H
5#define SYMS_DEV_H
6
8// NOTE(allen): Dev System Dependencies
9
10#if SYMS_ENABLE_DEV_LOG
11# undef SYMS_ENABLE_DEV_STRING
12# define SYMS_ENABLE_DEV_STRING 1
13#endif
14
16// NOTE(allen): Dev Logging Types
17
19enum{
29
30
31 // Dummy flag shouldn't be associated to anything.
32 // This gives us a way to disable all logging.
34};
35
37// NOTE(allen): Dev Profile Types
38
43
49
54
55typedef struct SYMS_ProfTreeNode{
56 // hash table
60
61 // local counts
64
65 // tree
70
71 // mutable space - not a fixed value for users to rely on
74
86
88// NOTE(allen): Dev String Functions
89
90#if SYMS_ENABLE_DEV_STRING
91
92// TODO(allen): way to override standard library's printf
93// (bundle in rad's format string function?)
94
95#include <stdio.h>
96#include <stdarg.h>
97
100
102 va_list args);
104
105#endif
106
108// NOTE(allen): Dev Logging Functions
109
110#if SYMS_ENABLE_DEV_LOG
111
112#if !defined(SYMS_LOG_RAW_APPEND)
113# include <stdio.h>
114# define SYMS_LOG_RAW_APPEND(s) fwrite((s).str, (s).size, 1, stderr)
115#endif
116#if !defined(SYMS_LOG_FILTER_FEATURES)
117# define SYMS_LOG_FILTER_FEATURES 0
118#endif
119#if !defined(SYMS_LOG_FILTER_UID)
120# define SYMS_LOG_FILTER_UID 0
121#endif
122
124
129
130SYMS_API void syms_logfv__dev(char *fmt, va_list args);
131SYMS_API void syms_logf__dev(char *fmt, ...);
132
133#endif
134
135#if SYMS_ENABLE_DEV_LOG
136# define SYMS_LogOpen(ftr,uid,block) SYMS_U32 syms_log_state__##block = syms_log_open_annotated__dev((ftr),(uid))
137# define SYMS_LogClose(block) syms_log_close__dev(syms_log_state__##block)
138# define SYMS_Log(...) syms_logf__dev(__VA_ARGS__)
139# define SYMS_LogIsEnabled() syms_log_is_enabled__dev()
140#else
141# define SYMS_LogOpen(ftr,uid,block) ((void)0)
142# define SYMS_LogClose(block) ((void)0)
143# define SYMS_Log(fmt,...) ((void)0)
144# define SYMS_LogIsEnabled() (0)
145#endif
146
148// NOTE(allen): Dev Profiling Functions
149
150#if SYMS_ENABLE_DEV_PROFILE
151
152// SYMS_PROF_TIME: () -> SYMS_U64
153#if !defined(SYMS_PROF_TIME)
154# error "SYMS_PROF_TIME not #define'd"
155#endif
156
157// SYMS_PROF_ALLOC: (SYMS_U64) -> void*
158#if !defined(SYMS_PROF_ALLOC)
159# error "SYMS_PROF_ALLOC not #define'd"
160#endif
161
162#if !defined(SYMS_PROF_BLOCK_SIZE)
163# define SYMS_PROF_BLOCK_SIZE (1 << 20)
164#endif
165
171
175
179
180#if SYMS_ENABLE_DEV_STRING
185 SYMS_U64 align, SYMS_U64 indent);
187#endif
188
189#endif
190
191#if SYMS_ENABLE_DEV_PROFILE
192
193# if !defined(SYMS_ProfBegin)
194# define SYMS_ProfBegin(str) do{ SYMS_U64 t = SYMS_PROF_TIME(); SYMS_U64 *v = syms_prof_push__dev(); \
195v[0] = (SYMS_U64)(SYMS_THIS_SRCLOC ": " str); v[1] = t; }while(0)
196# endif
197
198# if !defined(SYMS_ProfEnd)
199# define SYMS_ProfEnd() do{ SYMS_U64 *v = syms_prof_push__dev(); \
200v[0] = 0; v[1] = SYMS_PROF_TIME(); }while(0)
201# endif
202
203# if !defined(SYMS_ProfPasteSubChain)
204# define SYMS_ProfPasteSubChain(s) syms_prof_paste__dev(s)
205# endif
206
207#else
208# if !defined(SYMS_ProfBegin)
209# define SYMS_ProfBegin(str) ((void)0)
210# endif
211# if !defined(SYMS_ProfEnd)
212# define SYMS_ProfEnd() ((void)0)
213# endif
214# if !defined(SYMS_ProfPasteSubChain)
215# define SYMS_ProfPasteSubChain(s) ((void)0)
216# endif
217#endif
218
219
220#endif //SYMS_DEV_H
OODEFFUNC typedef const char int const char * fmt
Definition oodle2.h:678
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
Definition syms_dev.h:39
SYMS_U8 * ptr
Definition syms_dev.h:41
struct SYMS_ProfChain * next
Definition syms_dev.h:40
Definition syms_dev.h:50
SYMS_String8 data
Definition syms_dev.h:52
SYMS_ProfState * state
Definition syms_dev.h:51
Definition syms_dev.h:44
SYMS_ProfChain * current
Definition syms_dev.h:46
SYMS_ProfChain * free
Definition syms_dev.h:47
SYMS_ProfChain * first
Definition syms_dev.h:45
Definition syms_dev.h:55
SYMS_String8 key
Definition syms_dev.h:59
SYMS_U64 time_min
Definition syms_dev.h:72
struct SYMS_ProfTreeNode * tree_next
Definition syms_dev.h:68
struct SYMS_ProfTreeNode * next
Definition syms_dev.h:57
struct SYMS_ProfTreeNode * tree_first
Definition syms_dev.h:66
SYMS_U64 hash
Definition syms_dev.h:58
struct SYMS_ProfTreeNode * tree_parent
Definition syms_dev.h:69
struct SYMS_ProfTreeNode * tree_last
Definition syms_dev.h:67
SYMS_U64 total_time
Definition syms_dev.h:63
SYMS_U64 count
Definition syms_dev.h:62
Definition syms_dev.h:75
SYMS_U64 max_key_size
Definition syms_dev.h:80
SYMS_ProfTreeNode ** buckets
Definition syms_dev.h:77
SYMS_U64 count
Definition syms_dev.h:79
SYMS_ProfTreeNode * root
Definition syms_dev.h:83
SYMS_U64 height
Definition syms_dev.h:84
SYMS_U64 bucket_count
Definition syms_dev.h:78
Definition syms_base.h:306
Definition syms_base.h:296
#define SYMS_API
Definition syms_base.h:29
SYMS_S32 SYMS_B32
Definition syms_base.h:99
uint32_t SYMS_U32
Definition syms_crt_overrides.h:38
uint64_t SYMS_U64
Definition syms_crt_overrides.h:39
uint8_t SYMS_U8
Definition syms_crt_overrides.h:36
#define SYMS_Arena
Definition syms_default_arena.h:61
#define syms_log_set_filter__dev(...)
Definition syms_dev.c:157
#define syms_log_open_annotated__dev(...)
Definition syms_dev.c:160
#define syms_prof_tree_sort_in_place__dev(...)
Definition syms_dev.c:522
#define syms_prof_lock__dev(...)
Definition syms_dev.c:517
#define syms_prof_paste__dev(...)
Definition syms_dev.c:515
#define syms_prof_tree_sort_pointer_array__dev(...)
Definition syms_dev.c:523
#define syms_prof_equip_thread__dev(...)
Definition syms_dev.c:511
#define syms_prof_unlock__dev(l)
Definition syms_dev.c:519
#define syms_prof_unequip_thread__dev(...)
Definition syms_dev.c:513
#define syms_log_open__dev(...)
Definition syms_dev.c:158
#define syms_prof_tree__dev(...)
Definition syms_dev.c:521
#define syms_prof_equip_thread_auto__dev(...)
Definition syms_dev.c:512
#define syms_log_is_enabled__dev(...)
Definition syms_dev.c:159
#define syms_logfv__dev(...)
Definition syms_dev.c:161
#define syms_prof_clear__dev(...)
Definition syms_dev.c:518
#define syms_logf__dev(...)
Definition syms_dev.c:162
#define syms_prof_push__dev(...)
Definition syms_dev.c:514
SYMS_U32 SYMS_LogFeatures
Definition syms_dev.h:18
@ SYMS_LogFeature_DwarfCFIApply
Definition syms_dev.h:26
@ SYMS_LogFeature_DwarfTags
Definition syms_dev.h:22
@ SYMS_LogFeature_PEEpilog
Definition syms_dev.h:27
@ SYMS_LogFeature_Dummy
Definition syms_dev.h:33
@ SYMS_LogFeature_LineTable
Definition syms_dev.h:20
@ SYMS_LogFeature_DwarfUnwind
Definition syms_dev.h:23
@ SYMS_LogFeature_PeResParser
Definition syms_dev.h:28
@ SYMS_LogFeature_DwarfCFILookup
Definition syms_dev.h:24
@ SYMS_LogFeature_DwarfCFIDecode
Definition syms_dev.h:25
@ SYMS_LogFeature_DwarfUnitRanges
Definition syms_dev.h:21