#ifndef _LOG_H_
#define _LOG_H_

#include <stdio.h>
#include <stdlib.h>
#include <android/log.h>
#define SOEXPORT __attribute__((visibility("default")))
//-------------------------------------------------------------------------------------------------

#define DEBLOG  //log output flag sync_log_file
#define UNCOMP  //未完成函数
//-------------------------------------------------------------------------------------------------
static const char* kTAG = "sh_log";
static const char* kTAGUN = "sh_xxx";

#ifdef DEBLOG
#define LOGI(...) ((void)__android_log_print(ANDROID_LOG_INFO, kTAG, __VA_ARGS__))
#define LOGW(...) ((void)__android_log_print(ANDROID_LOG_WARN, kTAG, __VA_ARGS__))
#define LOGE(...) ((void)__android_log_print(ANDROID_LOG_ERROR, kTAG, __VA_ARGS__))
#else
#define LOGI(...)
#define LOGW(...)
#define LOGE(...)
#endif

#define LOGX(...) ((void)__android_log_print(ANDROID_LOG_INFO, kTAGUN, __VA_ARGS__))
#define LOGD(...) ((void)__android_log_print(ANDROID_LOG_INFO, kTAG, __VA_ARGS__))

// LOGM 是为了打印一些暂没有完成的函数的参数，防止该函数被编译器优化掉，导致调用它的函数没有传入必要的参数导致单元测试崩溃
#define LOGM(...) ((void)__android_log_print(ANDROID_LOG_INFO, kTAG, __VA_ARGS__))

//-------------------------------------------------------------------------------------------------
#endif  //_LOG_H_