logger update
[vg.git] / vg_log.h
1 #ifndef VG_LOG_H
2 #define VG_LOG_H
3
4 #define VG_LOG_MCSTR(S) VG_LOG_MCSTR2(S)
5 #define VG_LOG_MCSTR2(S) #S
6 #define VG_LOG_WHERE "@"__FILE__":"VG_LOG_MCSTR(__LINE__)\
7 " "
8
9 #define vg_success( ... ) \
10 vg_logx(stdout,VG_LOG_WHERE,"success",KGRN,__VA_ARGS__)
11 #define vg_info( ... ) \
12 vg_logx(stdout,VG_LOG_WHERE,"info",KWHT,__VA_ARGS__)
13 #define vg_warn( ... ) \
14 vg_logx(stdout,VG_LOG_WHERE,"warn",KYEL,__VA_ARGS__ )
15 #define vg_error( ... ) \
16 vg_logx(stdout,VG_LOG_WHERE,"error",KRED,__VA_ARGS__)
17 #define vg_low( ... ) \
18 vg_logx(stdout,VG_LOG_WHERE,"log",KWHT,__VA_ARGS__)
19
20 #define KNRM "\x1B[0m"
21 #define KBLK "\x1B[30m"
22 #define KRED "\x1B[31m"
23 #define KGRN "\x1B[32m"
24 #define KYEL "\x1B[33m"
25 #define KBLU "\x1B[34m"
26 #define KMAG "\x1B[35m"
27 #define KCYN "\x1B[36m"
28 #define KWHT "\x1B[37m"
29
30 #define PRINTF_v2f( V2 ) "%.4f %.4f\n", V2[0], V2[1]
31 #define PRINTF_v3f( V3 ) "%.4f %.4f %.4f\n", V3[0], V3[1], V3[2]
32 #define PRINTF_v4f( V4 ) "%.4f %.4f %.4f %.4f\n", V4[0], V4[1], V4[2], V4[3]
33
34 #ifdef _WIN32
35 #define PRINTF_U64 "%llu"
36 #else
37 #define PRINTF_U64 "%lu"
38 #endif
39
40 #ifdef VG_GAME
41 #include "dep/sdl/include/SDL.h"
42 static SDL_SpinLock log_print_sl;
43 #endif
44
45 struct vg_log{
46 char log[64][96];
47 u32 log_line_count, log_line_current;
48 }
49 static vg_log;
50
51 static void vg_logx( FILE *file,
52 const char *location, const char *prefix,
53 const char *colour,
54 const char *fmt, ... );
55
56 static void _vg_logx_va( FILE *file,
57 const char *location, const char *prefix,
58 const char *colour,
59 const char *fmt, va_list args );
60
61 static void vg_print_backtrace(void);
62
63
64 #endif