|
|
#ifndef DEBUG_H
|
|
|
#define DEBUG_H
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#define _DEBUG_MAX_INDENT_LEVEL 12
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#ifdef ENABLE_DEBUG
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#define DEBUG_VARS_PROTOTYPES() \
|
|
|
extern FILE *_debug_file; \
|
|
|
extern int _debug_indent_level, _debug_show_level
|
|
|
|
|
|
|
|
|
#define DEBUG_VARS() \
|
|
|
FILE *_debug_file = NULL; \
|
|
|
int _debug_indent_level = 0, _debug_show_level = 0
|
|
|
|
|
|
|
|
|
#define DSHOW( level ) \
|
|
|
_debug_show_level = (level)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#define DSTART( user__debug_show_level ) \
|
|
|
_debug_file = fopen( "debug.log", "w+"), _debug_indent_level = 0, _debug_show_level = user__debug_show_level , fprintf(_debug_file, "Start Debug!\n")
|
|
|
|
|
|
|
|
|
#define DSTOP() \
|
|
|
((_debug_file != NULL)?fprintf(_debug_file, "\nDebug has Ended!\n"), fflush(_debug_file), fclose(_debug_file), _debug_file = NULL:(0))
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#define DTAB(n) \
|
|
|
(((_debug_file != NULL) && (_debug_indent_level >= _debug_show_level))?(fprintf(_debug_file,"%.*s", n, "\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t")):(0));
|
|
|
|
|
|
|
|
|
#define DPRINT( ... ) \
|
|
|
(((_debug_file != NULL) && (_debug_indent_level >= _debug_show_level))?(fprintf(_debug_file,"%.*s", _debug_indent_level, "\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t"), fprintf(_debug_file, __VA_ARGS__ )):(0))
|
|
|
|
|
|
|
|
|
#define DPRINT_NOTAB( ... ) \
|
|
|
(((_debug_file != NULL) && (_debug_indent_level >= _debug_show_level))?(fprintf(_debug_file, __VA_ARGS__ )):(0))
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#define DENTER() \
|
|
|
DPRINT( "-->> \"%s\" |\n", __FUNCTION__), (_debug_indent_level<_DEBUG_MAX_INDENT_LEVEL)?(++_debug_indent_level):(_DEBUG_MAX_INDENT_LEVEL)
|
|
|
|
|
|
|
|
|
#define DRETURN() \
|
|
|
(_debug_indent_level>0)?(--_debug_indent_level):(0), DPRINT( "<<-- \"%s\" |\n", __FUNCTION__)
|
|
|
|
|
|
|
|
|
#define DENTER_ARG( ... ) \
|
|
|
DPRINT( "-->> \"%s\" | ", __FUNCTION__), DPRINT_NOTAB( __VA_ARGS__ ), (_debug_indent_level<_DEBUG_MAX_INDENT_LEVEL)?(++_debug_indent_level):(_DEBUG_MAX_INDENT_LEVEL)
|
|
|
|
|
|
|
|
|
#define DRETURN_ARG( ... ) \
|
|
|
(_debug_indent_level>0)?(--_debug_indent_level):(0), DPRINT( "<<-- \"%s\" | ", __FUNCTION__), DPRINT_NOTAB( __VA_ARGS__ )
|
|
|
|
|
|
#else
|
|
|
#define DEBUG_VARS_PROTOTYPES()
|
|
|
|
|
|
#define DEBUG_VARS()
|
|
|
|
|
|
#define DSHOW( ... )
|
|
|
|
|
|
#define DSTART( ... )
|
|
|
|
|
|
#define DSTOP()
|
|
|
|
|
|
#define DTAB( ... )
|
|
|
|
|
|
#define DPRINT( ... )
|
|
|
|
|
|
#define DPRINT_NOTAB( ... )
|
|
|
|
|
|
#define DENTER( ... )
|
|
|
|
|
|
#define DRETURN( ... )
|
|
|
|
|
|
#define DENTER_ARG( ... )
|
|
|
|
|
|
#define DRETURN_ARG( ... )
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#ifdef ENABLE_DEBUG
|
|
|
|
|
|
DEBUG_VARS_PROTOTYPES();
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#else
|
|
|
#warning "multiple inclusion of the header file"
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
|
|
|