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