#ifndef _PRINT_DEBUG_H_
#define _PRINT_DEBUG_H_
#ifdef DEBUG3
#ifndef DEBUG2
#define DEBUG2
#endif
#endif
#ifdef DEBUG2
#ifndef DEBUG1
#define DEBUG1
#endif
#endif
#ifdef DEBUG1
#ifndef DEBUG
#define DEBUG
#endif
#endif
#ifdef DEBUG
#ifndef DEBUG1
#define DEBUG1
#endif
#endif
#ifdef DEBUG1
#define debug1(...) printf(__VA_ARGS__)
#else
#define debug1(...)
#endif
#ifdef DEBUG
#define debug(...) printf(__VA_ARGS__)
#else
#define debug(...)
#endif
#ifdef DEBUG2
#define debug2(...) printf(__VA_ARGS__)
#else
#define debug2(...)
#endif
#ifdef DEBUG3
#define debug3(...) printf(__VA_ARGS__)
#else
#define debug3(...)
#endif
// debug with color
#define debug_black(...) debug("\33[1;30m");debug(__VA_ARGS__);debug("\033[0m");fflush(stdout)
#define debug_red(...) debug("\33[1;31m");debug(__VA_ARGS__);debug("\033[0m");fflush(stdout)
#define debug_green(...) debug("\33[1;32m");debug(__VA_ARGS__);debug("\033[0m");fflush(stdout)
#define debug_yellow(...) debug("\33[1;33m");debug(__VA_ARGS__);debug("\033[0m");fflush(stdout)
#define debug_blue(...) debug("\33[1;34m");debug(__VA_ARGS__);debug("\033[0m");fflush(stdout)
#define debug_purple(...) debug("\33[1;35m");debug(__VA_ARGS__);debug("\033[0m");fflush(stdout)
#define debug_cyan(...) debug("\33[1;36m");debug(__VA_ARGS__);debug("\033[0m");fflush(stdout)
#define debug_white(...) debug("\33[1;37m");debug(__VA_ARGS__);debug("\033[0m");fflush(stdout)
// print fuction name, line no, file name
#define debug_mark() debug_cyan("<<----- function = %s, line = %d, file = %s ----->>\n", __FUNCTION__, __LINE__, __FILE__)
#endif /* _PRINT_DEBUG_H_ */
#define _PRINT_DEBUG_H_
#ifdef DEBUG3
#ifndef DEBUG2
#define DEBUG2
#endif
#endif
#ifdef DEBUG2
#ifndef DEBUG1
#define DEBUG1
#endif
#endif
#ifdef DEBUG1
#ifndef DEBUG
#define DEBUG
#endif
#endif
#ifdef DEBUG
#ifndef DEBUG1
#define DEBUG1
#endif
#endif
#ifdef DEBUG1
#define debug1(...) printf(__VA_ARGS__)
#else
#define debug1(...)
#endif
#ifdef DEBUG
#define debug(...) printf(__VA_ARGS__)
#else
#define debug(...)
#endif
#ifdef DEBUG2
#define debug2(...) printf(__VA_ARGS__)
#else
#define debug2(...)
#endif
#ifdef DEBUG3
#define debug3(...) printf(__VA_ARGS__)
#else
#define debug3(...)
#endif
// debug with color
#define debug_black(...) debug("\33[1;30m");debug(__VA_ARGS__);debug("\033[0m");fflush(stdout)
#define debug_red(...) debug("\33[1;31m");debug(__VA_ARGS__);debug("\033[0m");fflush(stdout)
#define debug_green(...) debug("\33[1;32m");debug(__VA_ARGS__);debug("\033[0m");fflush(stdout)
#define debug_yellow(...) debug("\33[1;33m");debug(__VA_ARGS__);debug("\033[0m");fflush(stdout)
#define debug_blue(...) debug("\33[1;34m");debug(__VA_ARGS__);debug("\033[0m");fflush(stdout)
#define debug_purple(...) debug("\33[1;35m");debug(__VA_ARGS__);debug("\033[0m");fflush(stdout)
#define debug_cyan(...) debug("\33[1;36m");debug(__VA_ARGS__);debug("\033[0m");fflush(stdout)
#define debug_white(...) debug("\33[1;37m");debug(__VA_ARGS__);debug("\033[0m");fflush(stdout)
// print fuction name, line no, file name
#define debug_mark() debug_cyan("<<----- function = %s, line = %d, file = %s ----->>\n", __FUNCTION__, __LINE__, __FILE__)
#endif /* _PRINT_DEBUG_H_ */