- #ifndef HARNESS_TRACE_H 
- #define HARNESS_TRACE_H 
-   
- #include "brender/br_types.h" 
- #include <stdlib.h> 
-   
- extern int harness_debug_level; 
-   
- void debug_printf(const char* fmt, const char* fn, const char* fmt2, ...); 
- void debug_print_vector3(const char* fmt, const char* fn, char* msg, br_vector3* v); 
- void debug_print_matrix34(const char* fmt, const char* fn, char* name, br_matrix34* m); 
- void debug_print_matrix4(const char* fmt, const char* fn, char* name, br_matrix4* m); 
-   
- #define BLUE 
-   
- #define LOG_TRACE(...)                                         \ 
-     if (harness_debug_level >= 5) {                            \ 
-         debug_printf("[TRACE] %s", __FUNCTION__, __VA_ARGS__); \ 
-     } 
-   
- #define LOG_TRACE10(...)                                       \ 
-     if (harness_debug_level >= 10) {                           \ 
-         debug_printf("[TRACE] %s", __FUNCTION__, __VA_ARGS__); \ 
-     } 
- #define LOG_TRACE9(...)                                        \ 
-     if (harness_debug_level >= 9) {                            \ 
-         debug_printf("[TRACE] %s", __FUNCTION__, __VA_ARGS__); \ 
-     } 
-   
- #define LOG_TRACE8(...)                                        \ 
-     if (harness_debug_level >= 8) {                            \ 
-         debug_printf("[TRACE] %s", __FUNCTION__, __VA_ARGS__); \ 
-     } 
-   
- #define LOG_DEBUG(...) debug_printf("\033[0;34m[DEBUG] %s ", __FUNCTION__, __VA_ARGS__) 
- #define LOG_VEC(msg, v) debug_print_vector3("\033[0;34m[DEBUG] %s ", __FUNCTION__, msg, v) 
- #define LOG_MATRIX(msg, m) debug_print_matrix34("\033[0;34m[DEBUG] %s ", __FUNCTION__, msg, m) 
- #define LOG_MATRIX4(msg, m) debug_print_matrix4("\033[0;34m[DEBUG] %s ", __FUNCTION__, msg, m) 
- #define LOG_INFO(...) debug_printf("[INFO] %s ", __FUNCTION__, __VA_ARGS__) 
- #define LOG_WARN(...) debug_printf("\033[0;33m[WARN] %s ", __FUNCTION__, __VA_ARGS__) 
- #define LOG_PANIC(...)                                                    \ 
-     do {                                                                  \ 
-         debug_printf("\033[0;31m[PANIC] %s ", __FUNCTION__, __VA_ARGS__); \ 
-         abort();                                                          \ 
-     } while (0) 
-   
- #define LOG_WARN_ONCE(...)                                               \ 
-     static int warn_printed = 0;                                         \ 
-     if (!warn_printed) {                                                 \ 
-         debug_printf("\033[0;33m[WARN] %s ", __FUNCTION__, __VA_ARGS__); \ 
-         warn_printed = 1;                                                \ 
-     } 
-   
- #define NOT_IMPLEMENTED() \ 
-     LOG_PANIC("not implemented") 
-   
- #define TELL_ME_IF_WE_PASS_THIS_WAY() \ 
-     LOG_PANIC("code path not expected") 
-   
- #define STUB() \ 
-     debug_printf("\033[0;31m[WARN] %s ", __FUNCTION__, "%s", "stubbed"); 
-   
- #define STUB_ONCE()                                                          \ 
-     static int stub_printed = 0;                                             \ 
-     if (!stub_printed) {                                                     \ 
-         debug_printf("\033[0;31m[WARN] %s ", __FUNCTION__, "%s", "stubbed"); \ 
-         stub_printed = 1;                                                    \ 
-     } 
-   
- // int count_open_fds(); 
-   
- #endif 
-