59 lines
1.5 KiB
C
59 lines
1.5 KiB
C
|
/************************************************************//**
|
||
|
*
|
||
|
* @file: platform_log.h
|
||
|
* @author: Martin Fouilleul
|
||
|
* @date: 18/04/2023
|
||
|
*
|
||
|
*****************************************************************/
|
||
|
#ifndef __PLATFORM_LOG_H_
|
||
|
#define __PLATFORM_LOG_H_
|
||
|
|
||
|
#include"platform.h"
|
||
|
#include"strings.h"
|
||
|
|
||
|
typedef enum { LOG_LEVEL_ERROR,
|
||
|
LOG_LEVEL_WARNING,
|
||
|
LOG_LEVEL_INFO,
|
||
|
LOG_LEVEL_COUNT } log_level;
|
||
|
|
||
|
typedef struct log_output log_output;
|
||
|
|
||
|
extern log_output* LOG_DEFAULT_OUTPUT;
|
||
|
|
||
|
MP_API void log_set_level(log_level level);
|
||
|
MP_API void log_set_output(log_output* output);
|
||
|
MP_API void log_entry(log_level level,
|
||
|
str8 function,
|
||
|
str8 file,
|
||
|
int line,
|
||
|
const char* fmt,
|
||
|
...);
|
||
|
|
||
|
#define log_generic(level, msg, ...) log_entry(level, STR8(__FUNCTION__), STR8(__FILE__), __LINE__, msg, ##__VA_ARGS__)
|
||
|
|
||
|
#define log_error(msg, ...) log_generic(LOG_LEVEL_ERROR, msg, ##__VA_ARGS__)
|
||
|
|
||
|
#ifndef LOG_COMPILE_WARNING
|
||
|
#define LOG_COMPILE_WARNING 1
|
||
|
#endif
|
||
|
|
||
|
#ifndef LOG_COMPILE_INFO
|
||
|
#define LOG_COMPILE_INFO 1
|
||
|
#endif
|
||
|
|
||
|
#if LOG_COMPILE_WARNING || LOG_COMPILE_INFO
|
||
|
#define log_warning(msg, ...) log_generic(LOG_LEVEL_WARNING, msg, ##__VA_ARGS__)
|
||
|
|
||
|
#if LOG_COMPILE_INFO
|
||
|
#define log_info(msg, ...) log_generic(LOG_LEVEL_INFO, msg, ##__VA_ARGS__ )
|
||
|
#else
|
||
|
#define log_info(msg, ...)
|
||
|
#endif
|
||
|
#else
|
||
|
#define log_warning(msg, ...)
|
||
|
#define log_info(msg, ...)
|
||
|
#endif
|
||
|
|
||
|
|
||
|
#endif //__PLATFORM_LOG_H_
|