
#ifndef __LOG_H_INCLUDED__
#define __LOG_H_INCLUDED__

#include <stdio.h>
#include <android/log.h>

#define LOG_TAG "MLDAP"
#define PRINT_LEN 255
#define FILE_LEN 24

#if defined(NWD_DEBUG)
#define FORMAT_MESSAGE(BUF, FMT, ...) { \
	const char* file = __FILE__; \
	char trip_dot[4] = ""; \
	int fileOffset = 0; \
	if (strlen(file) > FILE_LEN) { \
		fileOffset = strlen(file) - FILE_LEN; \
		strncpy(trip_dot, "...", 4 ); \
	} \
	snprintf(BUF, PRINT_LEN, "%3s%24s:%4d: "FMT, trip_dot, file + fileOffset, __LINE__, ##__VA_ARGS__); \
}
#else
#define FORMAT_MESSAGE(BUF, FMT, ...) { \
	snprintf(BUF, PRINT_LEN, FMT, ##__VA_ARGS__); \
}

#endif

#define PRINT_MESSAGE(TAG, FMT, ...) { \
	char str[PRINT_LEN]; \
	FORMAT_MESSAGE(str, FMT, ##__VA_ARGS__); \
	__android_log_print(TAG, LOG_TAG, "%s", str); \
}

#if defined(NWD_DEBUG)
#define LOGE(fmt, ...) PRINT_MESSAGE(ANDROID_LOG_ERROR, fmt, ##__VA_ARGS__)
#define LOGD(fmt, ...) PRINT_MESSAGE(ANDROID_LOG_DEBUG, fmt, ##__VA_ARGS__)
#define LOGI(fmt, ...) PRINT_MESSAGE(ANDROID_LOG_INFO, fmt, ##__VA_ARGS__)
#else /* NWD_DEBUG */
#define LOGE(fmt, ...) PRINT_MESSAGE(ANDROID_LOG_ERROR, fmt, ##__VA_ARGS__)
#define LOGD( ... )
#define LOGI(fmt, ...) PRINT_MESSAGE(ANDROID_LOG_INFO, fmt, ##__VA_ARGS__)
#endif /* NWD_DEBUG */

#endif /* __LOG_H_INCLUDED__ */
