00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026 #ifndef LOGGER_H
00027 #define LOGGER_H
00028
00038 enum {
00039 HAL_LOGPRI_TRACE = (1 << 0),
00040 HAL_LOGPRI_DEBUG = (1 << 1),
00041 HAL_LOGPRI_INFO = (1 << 2),
00042 HAL_LOGPRI_WARNING = (1 << 3),
00043 HAL_LOGPRI_ERROR = (1 << 4)
00044 };
00045
00046 void logger_init ();
00047
00048 void logger_setup (int priority, const char *file, int line,
00049 const char *function);
00050
00051 void logger_emit (const char *format, ...);
00052
00053 #ifdef ENABLE_VERBOSE_MODE
00054
00055
00056
00058 #define HAL_TRACE(expr) do {logger_setup(HAL_LOGPRI_TRACE, __FILE__, __LINE__, __FUNCTION__); logger_emit expr; } while(0)
00059
00061 #define HAL_DEBUG(expr) do {logger_setup(HAL_LOGPRI_DEBUG, __FILE__, __LINE__, __FUNCTION__); logger_emit expr; } while(0)
00062
00064 #define HAL_INFO(expr) do {logger_setup(HAL_LOGPRI_INFO, __FILE__, __LINE__, __FUNCTION__); logger_emit expr; } while(0)
00065
00067 #define HAL_WARNING(expr) do {logger_setup(HAL_LOGPRI_WARNING, __FILE__, __LINE__, __FUNCTION__); logger_emit expr; } while(0)
00068
00070 #define HAL_ERROR(expr) do {logger_setup(HAL_LOGPRI_ERROR, __FILE__, __LINE__, __FUNCTION__); logger_emit expr; } while(0)
00071
00073 #define DIE(expr) do {printf("*** [DIE] %s:%s():%d : ", __FILE__, __FUNCTION__, __LINE__); printf expr; printf("\n"); exit(1); } while(0)
00074
00075 #else
00076
00077
00078
00079 #define HAL_TRACE(expr) do {;} while(0)
00080 #define HAL_DEBUG(expr) do {;} while(0)
00081 #define HAL_INFO(expr) do {;} while(0)
00082
00083 #define HAL_WARNING(expr) do {logger_setup(HAL_LOGPRI_WARNING, __FILE__, __LINE__, __FUNCTION__); logger_emit expr; } while(0)
00084
00085 #define HAL_ERROR(expr) do {logger_setup(HAL_LOGPRI_ERROR, __FILE__, __LINE__, __FUNCTION__); logger_emit expr; } while(0)
00086
00087 #define DIE(expr) do {printf("*** [DIE] %s:%s():%d : ", __FILE__, __FUNCTION__, __LINE__); printf expr; printf("\n"); exit(1); } while(0)
00088
00089
00090 #endif
00091
00094 #endif