2016-09-15 21:31:02 +08:00
|
|
|
/*
|
|
|
|
* Copyright (c) 2014-2016 Cesanta Software Limited
|
|
|
|
* All rights reserved
|
|
|
|
*/
|
|
|
|
|
|
|
|
#ifndef CS_COMMON_CS_DBG_H_
|
|
|
|
#define CS_COMMON_CS_DBG_H_
|
|
|
|
|
Change from using #ifdef to #if for features tests
"#if FOO" still works with simple -DFOO, but gives more flexibility.
Specifically, if user expressed no preference (FOO is not defined),
we can apply reasonable defaults (this is the legitimate use of ifdef).
In short, from now on, please use
#if MG_ENABLE_FOO
instead of
#ifdef MG_ENABLE_FOO
Since we are all used to #ifdef, this change also adds a precommit check
to police this. Specifically, in *.h and *.c files that are Copyright Cesanta,
"ifdef" and "if defined()" are not allowed to be used with macros that contain
ENABLE or DISABLE, unless the like also contains "ifdef-ok".
Hence, if you are sure you want to use ifdef, use this:
#ifdef MG_ENABLE_FOO /* ifdef-ok */
PUBLISHED_FROM=9be829448f53cff575d6cae8b9945fb12531c15a
2016-10-14 01:55:08 +08:00
|
|
|
#if !CS_DISABLE_STDIO
|
2016-09-15 21:31:02 +08:00
|
|
|
#include <stdio.h>
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#ifdef __cplusplus
|
|
|
|
extern "C" {
|
|
|
|
#endif /* __cplusplus */
|
|
|
|
|
|
|
|
enum cs_log_level {
|
|
|
|
LL_NONE = -1,
|
|
|
|
LL_ERROR = 0,
|
|
|
|
LL_WARN = 1,
|
|
|
|
LL_INFO = 2,
|
|
|
|
LL_DEBUG = 3,
|
|
|
|
LL_VERBOSE_DEBUG = 4,
|
|
|
|
|
|
|
|
_LL_MIN = -2,
|
|
|
|
_LL_MAX = 5,
|
|
|
|
};
|
|
|
|
|
|
|
|
void cs_log_set_level(enum cs_log_level level);
|
|
|
|
|
Change from using #ifdef to #if for features tests
"#if FOO" still works with simple -DFOO, but gives more flexibility.
Specifically, if user expressed no preference (FOO is not defined),
we can apply reasonable defaults (this is the legitimate use of ifdef).
In short, from now on, please use
#if MG_ENABLE_FOO
instead of
#ifdef MG_ENABLE_FOO
Since we are all used to #ifdef, this change also adds a precommit check
to police this. Specifically, in *.h and *.c files that are Copyright Cesanta,
"ifdef" and "if defined()" are not allowed to be used with macros that contain
ENABLE or DISABLE, unless the like also contains "ifdef-ok".
Hence, if you are sure you want to use ifdef, use this:
#ifdef MG_ENABLE_FOO /* ifdef-ok */
PUBLISHED_FROM=9be829448f53cff575d6cae8b9945fb12531c15a
2016-10-14 01:55:08 +08:00
|
|
|
#if !CS_DISABLE_STDIO
|
2016-09-15 21:31:02 +08:00
|
|
|
|
|
|
|
void cs_log_set_file(FILE *file);
|
|
|
|
|
|
|
|
extern enum cs_log_level cs_log_level;
|
|
|
|
void cs_log_print_prefix(const char *func);
|
|
|
|
void cs_log_printf(const char *fmt, ...);
|
|
|
|
|
|
|
|
#define LOG(l, x) \
|
|
|
|
if (cs_log_level >= l) { \
|
|
|
|
cs_log_print_prefix(__func__); \
|
|
|
|
cs_log_printf x; \
|
|
|
|
}
|
|
|
|
|
|
|
|
#ifndef CS_NDEBUG
|
|
|
|
|
|
|
|
#define DBG(x) \
|
|
|
|
if (cs_log_level >= LL_VERBOSE_DEBUG) { \
|
|
|
|
cs_log_print_prefix(__func__); \
|
|
|
|
cs_log_printf x; \
|
|
|
|
}
|
|
|
|
|
|
|
|
#else /* NDEBUG */
|
|
|
|
|
|
|
|
#define DBG(x)
|
|
|
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#else /* CS_DISABLE_STDIO */
|
|
|
|
|
|
|
|
#define LOG(l, x)
|
|
|
|
#define DBG(x)
|
|
|
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#ifdef __cplusplus
|
|
|
|
}
|
|
|
|
#endif /* __cplusplus */
|
|
|
|
|
|
|
|
#endif /* CS_COMMON_CS_DBG_H_ */
|