#if !defined(_XLOG_H) #define _XLOG_H #include #include #ifdef __cplusplus extern "C" { #endif int xlogf_java_tag_is_on(const char *name, int level); int xlogf_native_tag_is_on(const char *name, int level); int xlogf_java_xtag_is_on(const char *name, int level); int xlogf_native_xtag_is_on(const char *name, int level); #ifndef XLOG_TAG #define XLOG_TAG NULL #endif #ifndef SXLOGV #define SXLOGV(...) ((void)SXLOG_PRI(ANDROID_LOG_VERBOSE, LOG_TAG, __VA_ARGS__)) #endif #ifndef SXLOGD #define SXLOGD(...) ((void)SXLOG_PRI(ANDROID_LOG_DEBUG, LOG_TAG, __VA_ARGS__)) #endif #ifndef SXLOGI #define SXLOGI(...) ((void)SXLOG_PRI(ANDROID_LOG_INFO, LOG_TAG, __VA_ARGS__)) #endif #ifndef SXLOGW #define SXLOGW(...) ((void)SXLOG_PRI(ANDROID_LOG_WARN, LOG_TAG, __VA_ARGS__)) #endif #ifndef SXLOGE #define SXLOGE(...) ((void)SXLOG_PRI(ANDROID_LOG_ERROR, LOG_TAG, __VA_ARGS__)) #endif #ifndef SXLOGF #define SXLOGF(...) ((void)SXLOG_PRI(ANDROID_LOG_FATAL, LOG_TAG, __VA_ARGS__)) #endif #if LOG_NDEBUG #define SXLOG_ASSERT(cond, ...) \ ( (CONDITION(cond)) \ ? ((void)SXLOGF(LOG_TAG, __VA_ARGS__)) \ : (void)0 ) #else #define SXLOG_ASSERT(cond, ...) ((void)0) #endif #define SXLOG_ALWAYS_ASSERT(cond,...) \ ( (CONDITION(cond)) \ ? ((void)SXLOGF(LOG_TAG, __VA_ARGS__)) \ : (void)0 ) #ifndef XLOGV #define XLOGV(...) ((void)XLOG_PRI(ANDROID_LOG_VERBOSE, LOG_TAG, __VA_ARGS__)) #endif #ifndef XLOGD #define XLOGD(...) ((void)XLOG_PRI(ANDROID_LOG_DEBUG, LOG_TAG, __VA_ARGS__)) #endif #ifndef XLOGI #define XLOGI(...) ((void)XLOG_PRI(ANDROID_LOG_INFO, LOG_TAG, __VA_ARGS__)) #endif #ifndef XLOGW #define XLOGW(...) ((void)XLOG_PRI(ANDROID_LOG_WARN, LOG_TAG, __VA_ARGS__)) #endif #ifndef XLOGE #define XLOGE(...) ((void)XLOG_PRI(ANDROID_LOG_ERROR, LOG_TAG, __VA_ARGS__)) #endif #ifndef XLOGF #define XLOGF(...) ((void)XLOG_PRI(ANDROID_LOG_FATAL, LOG_TAG, __VA_ARGS__)) #endif #if LOG_NDEBUG #define XLOG_ASSERT(cond, ...) \ (!(cond) \ ? ((void)XLOGF(__VA_ARGS__)) \ : (void)0) #else #define XLOG_ASSERT(cond, ...) ((void)0) #endif #define XLOG_ALWAY_ASSERT(cond, ...) \ (!(cond) \ ? ((void)XLOGF(__VA_ARGS__)) \ : (void)0) #ifndef SXLOGV2 #define SXLOGV2(...) ((void)SXLOG_PRI(ANDROID_LOG_VERBOSE, XLOG_TAG, __VA_ARGS__)) #endif #ifndef SXLOGD2 #define SXLOGD2(...) ((void)SXLOG_PRI(ANDROID_LOG_DEBUG, XLOG_TAG, __VA_ARGS__)) #endif #ifndef SXLOGI2 #define SXLOGI2(...) ((void)SXLOG_PRI(ANDROID_LOG_INFO, XLOG_TAG, __VA_ARGS__)) #endif #ifndef SXLOGW2 #define SXLOGW2(...) ((void)SXLOG_PRI(ANDROID_LOG_WARN, XLOG_TAG, __VA_ARGS__)) #endif #ifndef SXLOGE2 #define SXLOGE2(...) ((void)SXLOG_PRI(ANDROID_LOG_ERROR, XLOG_TAG, __VA_ARGS__)) #endif #ifndef SXLOGF2 #define SXLOGF2(...) ((void)SXLOG_PRI(ANDROID_LOG_FATAL, XLOG_TAG, __VA_ARGS__)) #endif #ifndef XLOGV2 #define XLOGV2(...) ((void)XLOG_PRI(ANDROID_LOG_VERBOSE, XLOG_TAG, __VA_ARGS__)) #endif #ifndef XLOGD2 #define XLOGD2(...) ((void)XLOG_PRI(ANDROID_LOG_DEBUG, XLOG_TAG, __VA_ARGS__)) #endif #ifndef XLOGI2 #define XLOGI2(...) ((void)XLOG_PRI(ANDROID_LOG_INFO, XLOG_TAG, __VA_ARGS__)) #endif #ifndef XLOGW2 #define XLOGW2(...) ((void)XLOG_PRI(ANDROID_LOG_WARN, XLOG_TAG, __VA_ARGS__)) #endif #ifndef XLOGE2 #define XLOGE2(...) ((void)XLOG_PRI(ANDROID_LOG_ERROR, XLOG_TAG, __VA_ARGS__)) #endif #ifndef XLOGF2 #define XLOGF2(...) ((void)XLOG_PRI(ANDROID_LOG_FATAL, XLOG_TAG, __VA_ARGS__)) #endif struct xlog_record { const char *tag_str; const char *fmt_str; int prio; }; #if defined(__cplusplus) extern "C" { #endif int __xlog_buf_printf(int bufid, const struct xlog_record *rec, ...); #if defined(__cplusplus) } #endif #if !defined(HAVE_ALE_FEATURE) #define xlog_buf_printf(bufid, prio, tag, fmt, ...) \ ({ \ static const struct xlog_record _xlog_rec = \ {tag, fmt, prio}; \ __xlog_buf_printf(bufid, &_xlog_rec, ##__VA_ARGS__); \ }) #else #define xlog_buf_printf(bufid, prio, tag, fmt, ...) \ ({ \ static const struct ale_convert ____xlog_ale_rec____ = \ { tag, fmt, __FILE__, prio, 0, "" }; \ ale_log_output(bufid, prio, &____xlog_ale_rec____, \ ##__VA_ARGS__); \ }) #endif #ifdef HAVE_XLOG_FEATURE #define XLOG_PRI(priority, tag, ...) \ xlog_buf_printf(LOG_ID_MAIN, priority, tag, __VA_ARGS__) #define SXLOG_PRI(priority, tag, ...) \ xlog_buf_printf(LOG_ID_MAIN, priority, tag, __VA_ARGS__) #define xlog_printf(priority, tag, ...) \ xlog_buf_printf(LOG_ID_MAIN, priority, tag, __VA_ARGS__) #define sxlog_printf(priority, tag, ...) \ xlog_buf_printf(LOG_ID_SYSTEM, priority, tag, __VA_ARGS__) #else //HAVE_XLOG_FEATURE #define XLOG_PRI(priority, tag, ...) ((void)0) #define SXLOG_PRI(priority, tag, ...) ((void)0) #define xlog_printf(priority, tag, ...) ((void)0) #define sxlog_printf(priority, tag, ...) ((void)0) #endif //HAVE_XLOG_FEATURE #ifdef __cplusplus } #endif #endif