#ifndef LOG_H__
#define LOG_H__
#include <stdio.h>
#define LOGD(fmt,...) fprintf(stderr,"\033[1;35m\033[0m\033[1;33m[DEBUG] %s(%d)-<%s()>: "fmt"\033[0m",__FILE__,__LINE__,__func__, ##__VA_ARGS__)
#define LOGI(fmt,...) fprintf(stderr,"\033[1;35m\033[0m\033[1;32m[INFO] %s(%d)-<%s()>: "fmt"\033[0m",__FILE__,__LINE__,__func__, ##__VA_ARGS__)
#define LOGE(fmt,...) fprintf(stderr,"\033[1;35m\033[0m\033[1;31m[ERROR] %s(%d)-<%s()>: "fmt"\033[0m",__FILE__,__LINE__,__func__, ##__VA_ARGS__)
#define debug_green(fmt,...) fprintf(stderr,"\033[1;32m[DEBUG] %s(%d)-<%s()>: "fmt"\033[0m",__FILE__,__LINE__,__func__, ##__VA_ARGS__)
#define debug_black(fmt,...) fprintf(stderr,"\033[1;30m[DEBUG] %s(%d)-<%s()>: "fmt"\033[0m",__FILE__,__LINE__,__func__, ##__VA_ARGS__)
#define debug_red(fmt,...) fprintf(stderr,"\033[1;31m[DEBUG] %s(%d)-<%s()>: "fmt"\033[0m",__FILE__,__LINE__,__func__, ##__VA_ARGS__)
#define debug_yellow(fmt,...) fprintf(stderr,"\033[1;33m[DEBUG] %s(%d)-<%s()>: "fmt"\033[0m",__FILE__,__LINE__,__func__, ##__VA_ARGS__)
#define debug_blue(fmt,...) fprintf(stderr,"\033[1;34m[DEBUG] %s(%d)-<%s()>: "fmt"\033[0m",__FILE__,__LINE__,__func__, ##__VA_ARGS__)
#define debug_purple(fmt,...) fprintf(stderr,"\033[1;35m[DEBUG] %s(%d)-<%s()>: "fmt"\033[0m",__FILE__,__LINE__,__func__, ##__VA_ARGS__)
#define debug_cyan(fmt,...) fprintf(stderr,"\033[1;36m[DEBUG] %s(%d)-<%s()>: "fmt"\033[0m",__FILE__,__LINE__,__func__, ##__VA_ARGS__)
#define debug_white(fmt,...) fprintf(stderr,"\033[1;37m[DEBUG] %s(%d)-<%s()>: "fmt"\033[0m",__FILE__,__LINE__,__func__, ##__VA_ARGS__)
#define debug_mark() debug_cyan("<<----- function = %s, line = %d, file = %s ----->>\n", __FUNCTION__, __LINE__, __FILE__)
#define LOGI_HEX(charbuf,intsize) do{ \
int i; \
fprintf(stderr, "\033[1;35m\033[0m\033[1;32m[INFO] %s(%d)-<%s()>:",__FILE__,__LINE__,__func__); \
for(i=0;i<intsize;i++) \
{fprintf(stderr, " %02x \033[0m",charbuf[i]); \
}}while(0)
#endif