1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
  | #ifndef OS_LOG_H 
 |  #define OS_LOG_H 
 |  #ifdef __cplusplus 
 |  extern "C" { 
 |  #endif 
 |    
 |  typedef enum { 
 |      OS_LOG_LEVEL_DEBUG, 
 |      OS_LOG_LEVEL_INFO, 
 |      OS_LOG_LEVEL_WARNING, 
 |      OS_LOG_LEVEL_ERROR, 
 |  }os_log_level_t; 
 |    
 |  typedef void (*print_module_log_t)(void *self, const char *func, int line, os_log_level_t level, const char *message, ...); 
 |    
 |  typedef struct { 
 |      const char *module; 
 |      os_log_level_t level; 
 |      print_module_log_t print; 
 |  } os_log_block_t; 
 |    
 |  __attribute ((visibility("default"))) void os_print_module_log(void *self, const char *func, int line, os_log_level_t level, const char *message, ...); 
 |    
 |  #ifdef OS_DEBUG_LEVEL_NONE 
 |  #define os_log_init(file) 
 |  #define os_log_deinit() 
 |  #define os_log_create_module(module, level) 
 |  #define OS_LOG_D(module, message, ...) 
 |  #define OS_LOG_I(module, message, ...) 
 |  #define OS_LOG_W(module, message, ...) 
 |  #define OS_LOG_E(module, message, ...) 
 |  #else 
 |  __attribute ((visibility("default"))) int os_log_init(const char *file); 
 |  __attribute ((visibility("default"))) void os_log_deinit(); 
 |  #define os_log_create_module(module, level) \ 
 |      os_log_block_t os_log_block_##module = \ 
 |      {   \ 
 |          #module,    \ 
 |          (level),    \ 
 |          os_print_module_log    \ 
 |      } 
 |    
 |  #define OS_LOG_D(module, message, ...)  \ 
 |      do {    \ 
 |          extern os_log_block_t os_log_block_##module; \ 
 |          os_log_block_##module.print(&os_log_block_##module,    \ 
 |                  __func__,   \ 
 |                  __LINE__,   \ 
 |                  OS_LOG_LEVEL_DEBUG, \ 
 |                  (message),  \ 
 |                  ##__VA_ARGS__); \ 
 |      } while (0) 
 |    
 |  #define OS_LOG_I(module, message, ...)  \ 
 |      do {    \ 
 |          extern os_log_block_t os_log_block_##module; \ 
 |          os_log_block_##module.print(&os_log_block_##module,    \ 
 |                  __func__,   \ 
 |                  __LINE__,   \ 
 |                  OS_LOG_LEVEL_INFO, \ 
 |                  (message),  \ 
 |                  ##__VA_ARGS__); \ 
 |      } while (0) 
 |    
 |  #define OS_LOG_W(module, message, ...)  \ 
 |      do {    \ 
 |          extern os_log_block_t os_log_block_##module; \ 
 |          os_log_block_##module.print(&os_log_block_##module,    \ 
 |                  __func__,   \ 
 |                  __LINE__,   \ 
 |                  OS_LOG_LEVEL_WARNING, \ 
 |                  (message),  \ 
 |                  ##__VA_ARGS__); \ 
 |      } while (0) 
 |    
 |  #define OS_LOG_E(module, message, ...)  \ 
 |      do {    \ 
 |          extern os_log_block_t os_log_block_##module; \ 
 |          os_log_block_##module.print(&os_log_block_##module,    \ 
 |                  __func__,   \ 
 |                  __LINE__,   \ 
 |                  OS_LOG_LEVEL_ERROR, \ 
 |                  (message),  \ 
 |                  ##__VA_ARGS__); \ 
 |      } while (0) 
 |  #endif 
 |    
 |    
 |  #ifdef __cplusplus 
 |  } 
 |  #endif 
 |  #endif 
 |  
  |