1 /* 2 * debug.h 3 * Copyright (C) 1998-2005 A.J. van Os; Released under GPL 4 * 5 * Description: 6 * Macro's for debuging. 7 */ 8 9 #if !defined(__debug_h) 10 #define __debug_h 1 11 12 #include <stdio.h> 13 #include <ctype.h> 14 15 #if defined(DEBUG) 16 17 #define DBG_MSG(t) (void)fprintf(stderr,\ 18 "%s[%3d]: %.240s\n",\ 19 __FILE__, __LINE__, (t)) 20 21 #define DBG_STRN(t,m) (void)fprintf(stderr,\ 22 "%s[%3d]: %d '%.*s'\n",\ 23 __FILE__, __LINE__,\ 24 (int)(m), (int)(m), (const char *)(t)) 25 26 #define DBG_CHR(m) (void)fprintf(stderr,\ 27 "%s[%3d]: "#m" = %3d 0x%02x '%c'\n",\ 28 __FILE__, __LINE__,\ 29 (int)(m), (unsigned int)(unsigned char)(m),\ 30 isprint((int)(unsigned char)(m))?(char)(m):' ') 31 32 #define DBG_DEC(m) (void)fprintf(stderr,\ 33 "%s[%3d]: "#m" = %ld\n",\ 34 __FILE__, __LINE__, (long)(m)) 35 36 #define DBG_HEX(m) (void)fprintf(stderr,\ 37 "%s[%3d]: "#m" = 0x%02lx\n",\ 38 __FILE__, __LINE__, (unsigned long)(m)) 39 40 #define DBG_FLT(m) (void)fprintf(stderr,\ 41 "%s[%3d]: "#m" = %.3f\n",\ 42 __FILE__, __LINE__, (double)(m)) 43 44 #define DBG_FIXME() (void)fprintf(stderr,\ 45 "%s[%3d]: FIXME\n",\ 46 __FILE__, __LINE__) 47 48 #define DBG_PRINT_BLOCK(b,m) vPrintBlock(__FILE__, __LINE__,(b),(m)) 49 #define DBG_UNICODE(t) vPrintUnicode(__FILE__, __LINE__,\ 50 (const UCHAR *)(t),unilen(t)) 51 #define DBG_UNICODE_N(t,m) vPrintUnicode(__FILE__, __LINE__,\ 52 (const UCHAR *)(t),(m)) 53 54 #define DBG_MSG_C(c,t) do { if (c) DBG_MSG(t); } while(0) 55 #define DBG_STRN_C(c,t,m) do { if (c) DBG_STRN(t,m); } while(0) 56 #define DBG_CHR_C(c,m) do { if (c) DBG_CHR(m); } while(0) 57 #define DBG_DEC_C(c,m) do { if (c) DBG_DEC(m); } while(0) 58 #define DBG_HEX_C(c,m) do { if (c) DBG_HEX(m); } while(0) 59 #define DBG_FLT_C(c,m) do { if (c) DBG_FLT(m); } while(0) 60 61 #else 62 63 #define DBG_MSG(t) /* EMPTY */ 64 #define DBG_STRN(t,m) /* EMPTY */ 65 #define DBG_CHR(m) /* EMPTY */ 66 #define DBG_DEC(m) /* EMPTY */ 67 #define DBG_HEX(m) /* EMPTY */ 68 #define DBG_FLT(m) /* EMPTY */ 69 70 #define DBG_FIXME() /* EMPTY */ 71 #define DBG_PRINT_BLOCK(b,m) /* EMPTY */ 72 #define DBG_UNICODE(t) /* EMPTY */ 73 #define DBG_UNICODE_N(t,m) /* EMPTY */ 74 75 #define DBG_MSG_C(c,t) /* EMPTY */ 76 #define DBG_STRN_C(c,t,m) /* EMPTY */ 77 #define DBG_CHR_C(c,m) /* EMPTY */ 78 #define DBG_DEC_C(c,m) /* EMPTY */ 79 #define DBG_HEX_C(c,m) /* EMPTY */ 80 #define DBG_FLT_C(c,m) /* EMPTY */ 81 82 #endif /* DEBUG */ 83 84 #define NO_DBG_MSG(t) /* EMPTY */ 85 #define NO_DBG_STRN(t,m) /* EMPTY */ 86 #define NO_DBG_CHR(m) /* EMPTY */ 87 #define NO_DBG_DEC(m) /* EMPTY */ 88 #define NO_DBG_HEX(m) /* EMPTY */ 89 #define NO_DBG_FLT(m) /* EMPTY */ 90 91 #define NO_DBG_PRINT_BLOCK(b,m) /* EMPTY */ 92 #define NO_DBG_UNICODE(t) /* EMPTY */ 93 #define NO_DBG_UNICODE_N(t,m) /* EMPTY */ 94 95 #define NO_DBG_MSG_C(c,t) /* EMPTY */ 96 #define NO_DBG_STRN_C(c,t,m) /* EMPTY */ 97 #define NO_DBG_CHR_C(c,m) /* EMPTY */ 98 #define NO_DBG_DEC_C(c,m) /* EMPTY */ 99 #define NO_DBG_HEX_C(c,m) /* EMPTY */ 100 #define NO_DBG_FLT_C(c,m) /* EMPTY */ 101 102 #if defined(TRACE) 103 104 #define TRACE_MSG(t) do {\ 105 (void)fprintf(stderr,\ 106 "%s[%3d]: TRACE:%.40s\n",\ 107 __FILE__, __LINE__, (t));\ 108 (void)fflush(stderr);\ 109 } while(0) 110 111 #else 112 113 #define TRACE_MSG(t) /* EMPTY */ 114 115 #endif /* TRACE */ 116 117 #endif /* !__debug_h */ 118