SimpleAI
 All Classes Namespaces Files Functions Variables Typedefs Macros Groups Pages
Log.h
Go to the documentation of this file.
1 
4 #pragma once
5 
6 #ifndef SIMPLEAI_SKIP_LOG
7 
8 #include <stdio.h>
9 #include <stdarg.h>
10 #include <string.h>
11 
12 namespace ai {
13 namespace Log {
14 
15 #ifdef _MSC_VER
16 #define __attribute__(x)
17 #endif
18 
19 static constexpr int bufSize = 1024;
20 
21 static inline void trace(const char* msg, ...) __attribute__((format(printf, 1, 2)));
22 static inline void trace(const char* msg, ...) {
23  va_list args;
24  va_start(args, msg);
25  char buf[bufSize];
26  vsnprintf(buf, sizeof(buf), msg, args);
27  printf("TRACE: %s\n", buf);
28  va_end(args);
29 }
30 
31 static inline void debug(const char* msg, ...) __attribute__((format(printf, 1, 2)));
32 static inline void debug(const char* msg, ...) {
33  va_list args;
34  va_start(args, msg);
35  char buf[bufSize];
36  vsnprintf(buf, sizeof(buf), msg, args);
37  printf("DEBUG: %s\n", buf);
38  va_end(args);
39 }
40 
41 static inline void info(const char* msg, ...) __attribute__((format(printf, 1, 2)));
42 static inline void info(const char* msg, ...) {
43  va_list args;
44  va_start(args, msg);
45  char buf[bufSize];
46  vsnprintf(buf, sizeof(buf), msg, args);
47  printf("INFO: %s\n", buf);
48  va_end(args);
49 }
50 
51 static inline void warn(const char* msg, ...) __attribute__((format(printf, 1, 2)));
52 static inline void warn(const char* msg, ...) {
53  va_list args;
54  va_start(args, msg);
55  char buf[bufSize];
56  vsnprintf(buf, sizeof(buf), msg, args);
57  printf("WARN: %s\n", buf);
58  va_end(args);
59 }
60 
61 static inline void error(const char* msg, ...) __attribute__((format(printf, 1, 2)));
62 static inline void error(const char* msg, ...) {
63  va_list args;
64  va_start(args, msg);
65  char buf[bufSize];
66  vsnprintf(buf, sizeof(buf), msg, args);
67  printf("ERROR: %s\n", buf);
68  va_end(args);
69 }
70 
71 }
72 }
73 #endif