#ifndef _IPC_I_LOG_H_ #define _IPC_I_LOG_H_ #include #include #ifdef __cplusplus extern "C" { #endif #define LogInfo(...) getInstance()->log_fmt(getInstance(), LOG_TYPE_INFO, __VA_ARGS__) #define LogDebug(...) getInstance()->log_fmt(getInstance(), LOG_TYPE_DEBUG, __VA_ARGS__) #define LogErr(...) getInstance()->log_fmt(getInstance(), LOG_TYPE_ERROR, __VA_ARGS__) #define LogWarr(...) getInstance()->log_fmt(getInstance(), LOG_TYPE_WARR, __VA_ARGS__) typedef enum LogLeveL { LOG_TYPE_INFO = 0, LOG_TYPE_DEBUG, LOG_TYPE_ERROR, LOG_TYPE_WARR, }LogLeveL; typedef enum LogMode { LOG_MODE_TERMINAL = 0, LOG_MODE_LOGFILE, LOG_MODE_BOTH, }LogMode; typedef struct iLog ILog; struct iLog { void (*init)(ILog *); void (*unInit)(ILog *); void (*log_fmt)(ILog *, const LogLeveL level, const char *fmt, ...); }; ILog* getInstance(void); void setILog(ILog *impl); ILog *new_Log_abs(void); void del_Log_abs(ILog *impl); static void f_init(ILog *impl) { getInstance()->init(getInstance()); } static void f_unInit(ILog *impl) { getInstance()->unInit(getInstance()); } #ifdef __cplusplus } #endif #endif //_IPC_I_LOG_H_