00001 #ifndef __LOUT_DEBUG_H__
00002 #define __LOUT_DEBUG_H__
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015 #include <stdio.h>
00016
00017 #define D_STMT_START do
00018 #define D_STMT_END while (0)
00019
00020 # ifdef DEBUG_LEVEL
00021 # define DEBUG_MSG(level, ...) \
00022 D_STMT_START { \
00023 if (DEBUG_LEVEL && (level) >= DEBUG_LEVEL) \
00024 printf(__VA_ARGS__); \
00025 } D_STMT_END
00026 # else
00027 # define DEBUG_MSG(level, ...)
00028 # endif
00029
00030
00031
00032
00033
00034
00035
00036 #ifdef DBG_RTFL
00037
00038 #include <unistd.h>
00039 #include <stdio.h>
00040
00041 #define DBG_MSG(obj, aspect, prio, msg) \
00042 D_STMT_START { \
00043 printf ("[rtfl]%s:%d:%d:msg:%p:%s:%d:%s\n", \
00044 __FILE__, __LINE__, getpid(), obj, aspect, prio, msg); \
00045 fflush (stdout); \
00046 } D_STMT_END
00047
00048 #define DBG_MSGF(obj, aspect, prio, fmt, ...) \
00049 D_STMT_START { \
00050 printf ("[rtfl]%s:%d:%d:msg:%p:%s:%d:" fmt "\n", \
00051 __FILE__, __LINE__, getpid(), obj, aspect, prio, __VA_ARGS__); \
00052 fflush (stdout); \
00053 } D_STMT_END
00054
00055 #define DBG_MSG_START(obj) \
00056 D_STMT_START { \
00057 printf ("[rtfl]%s:%d:%d:msg-start:%p\n", \
00058 __FILE__, __LINE__, getpid(), obj); \
00059 fflush (stdout); \
00060 } D_STMT_END
00061
00062 #define DBG_MSG_END(obj) \
00063 D_STMT_START { \
00064 printf ("[rtfl]%s:%d:%d:msg-end:%p\n", \
00065 __FILE__, __LINE__, getpid(), obj); \
00066 fflush (stdout); \
00067 } D_STMT_END
00068
00069 #define DBG_OBJ_CREATE(obj, klass) \
00070 D_STMT_START { \
00071 printf ("[rtfl]%s:%d:%d:obj-create:%p:%s\n", \
00072 __FILE__, __LINE__, getpid(), obj, klass); \
00073 fflush (stdout); \
00074 } D_STMT_END
00075
00076 #define DBG_OBJ_ASSOC(child, parent) \
00077 D_STMT_START { \
00078 printf ("[rtfl]%s:%d:%d:obj-assoc:%p:%p\n", \
00079 __FILE__, __LINE__, getpid(), child, parent); \
00080 fflush (stdout); \
00081 } D_STMT_END
00082
00083 #define DBG_OBJ_SET_NUM(obj, var, val) \
00084 D_STMT_START { \
00085 printf ("[rtfl]%s:%d:%d:obj-set:%p:%s:%d\n", \
00086 __FILE__, __LINE__, getpid(), obj, var, val); \
00087 fflush (stdout); \
00088 } D_STMT_END
00089
00090 #define DBG_OBJ_SET_STR(obj, var, val) \
00091 D_STMT_START { \
00092 printf ("[rtfl]%s:%d:%d:obj-set:%p:%s:%s\n", \
00093 __FILE__, __LINE__, getpid(), obj, var, val); \
00094 fflush (stdout); \
00095 } D_STMT_END
00096
00097 #define DBG_OBJ_SET_PTR(obj, var, val) \
00098 D_STMT_START { \
00099 printf ("[rtfl]%s:%d:%d:obj-set:%p:%s:%p\n", \
00100 __FILE__, __LINE__, getpid(), obj, var, val); \
00101 fflush (stdout); \
00102 } D_STMT_END
00103
00104 #define DBG_OBJ_ARRSET_NUM(obj, var, ind, val) \
00105 D_STMT_START { \
00106 printf ("[rtfl]%s:%d:%d:obj-set:%p:" var ":%d\n", \
00107 __FILE__, __LINE__, getpid(), obj, ind, val); \
00108 fflush (stdout); \
00109 } D_STMT_END
00110
00111 #define DBG_OBJ_ARRSET_STR(obj, var, ind, val) \
00112 D_STMT_START { \
00113 printf ("[rtfl]%s:%d:%d:obj-set:%p:" var ":%s\n", \
00114 __FILE__, __LINE__, getpid(), obj, ind, val); \
00115 fflush (stdout); \
00116 } D_STMT_END
00117
00118 #define DBG_OBJ_ARRSET_PTR(obj, var, ind, val) \
00119 D_STMT_START { \
00120 printf ("[rtfl]%s:%d:%d:obj-set:%p:" var ":%p\n", \
00121 __FILE__, __LINE__, getpid(), obj, ind, val); \
00122 fflush (stdout); \
00123 } D_STMT_END
00124
00125 #define DBG_OBJ_COLOR(klass, color) \
00126 D_STMT_START { \
00127 printf ("[rtfl]%s:%d:%d:obj-color:%s:%s\n", \
00128 __FILE__, __LINE__, getpid(), klass, color); \
00129 fflush (stdout); \
00130 } D_STMT_END
00131
00132 #else
00133
00134 #define DBG_MSG(obj, aspect, prio, msg)
00135 #define DBG_MSGF(obj, aspect, prio, fmt, ...)
00136 #define DBG_MSG_START(obj)
00137 #define DBG_MSG_END(obj)
00138 #define DBG_OBJ_CREATE(obj, klass)
00139 #define DBG_OBJ_ASSOC(child, parent)
00140 #define DBG_OBJ_SET_NUM(obj, var, val)
00141 #define DBG_OBJ_SET_STR(obj, var, val)
00142 #define DBG_OBJ_SET_PTR(obj, var, val)
00143 #define DBG_OBJ_ARRSET_NUM(obj, var, ind, val)
00144 #define DBG_OBJ_ARRSET_STR(obj, var, ind, val)
00145 #define DBG_OBJ_ARRSET_PTR(obj, var, ind, val)
00146 #define DBG_OBJ_COLOR(klass, color)
00147
00148 #endif
00149
00150 #endif
00151
00152