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