Main Page | Data Structures | Directories | File List | Data Fields | Globals

debug.h

Go to the documentation of this file.
00001 #ifndef __DEBUG_H__
00002 #define __DEBUG_H__
00003 
00004 #include <stdio.h>
00005 
00006 #ifndef DEBUG_LEVEL
00007 #define DEBUG_LEVEL 0
00008 #endif
00009 
00010 #ifdef __GNUC__
00011 #define PRETTY_FUNCTION __PRETTY_FUNCTION__
00012 #else
00013 #ifdef __STDC__
00014 #define PRETTY_FUNCTION __func__
00015 #else
00016 #define PRETTY_FUNCTION ""
00017 #endif
00018 #endif
00019 
00020 #define DEBUG_ERROR(...) \
00021     do { fprintf(stderr, "%s(%s:%i) ", PRETTY_FUNCTION, __FILE__, __LINE__); \
00022     fprintf(stderr, __VA_ARGS__); fputc(' ', stderr); perror(""); \
00023     fflush(stderr); } while(0)
00024 
00025 #if(DEBUG_LEVEL >= 1)
00026 #define DEBUG1(...) \
00027     do { fprintf(stderr, "%s(%s:%i) ", PRETTY_FUNCTION, __FILE__, __LINE__); \
00028     fprintf(stderr, __VA_ARGS__); fputc('\n', stderr); fflush(stderr); } while(0)
00029 #else
00030 #define DEBUG1(...) do { } while(0)
00031 #endif
00032 
00033 #if(DEBUG_LEVEL >= 2)
00034 #define DEBUG2(...) \
00035     do { fprintf(stderr, "%s(%s:%i) ", PRETTY_FUNCTION, __FILE__, __LINE__); \
00036     fprintf(stderr, __VA_ARGS__); fputc('\n', stderr); fflush(stderr); } while(0)
00037 #else
00038 #define DEBUG2(...) do { } while(0)
00039 #endif
00040 
00041 #if(DEBUG_LEVEL >= 3)
00042 #define DEBUG3(...) \
00043     do { fprintf(stderr, "%s(%s:%i) ", PRETTY_FUNCTION, __FILE__, __LINE__); \
00044     fprintf(stderr, __VA_ARGS__); fputc('\n', stderr); fflush(stderr); } while(0)
00045 #else
00046 #define DEBUG3(...) do { } while(0)
00047 #endif
00048 
00049 #if(DEBUG_LEVEL > 0)
00050 #define ASSERT(test) \
00051     do { \
00052         if(!(test)) \
00053             fprintf(stderr, "%s(%s:%i) Assertion failed: %s\n", \
00054                     PRETTY_FUNCTION, __FILE__, __LINE__, #test); \
00055     } while(0)
00056 #define ASSERT_EQUAL(left, right) \
00057     do { \
00058         if((left) != (right)) \
00059             fprintf(stderr, "%s(%s:%i) Assertion failed: %s != %s\n", \
00060                     PRETTY_FUNCTION, __FILE__, __LINE__, #left, #right); \
00061     } while(0)
00062 #define ASSERT_NEQUAL(left, right) \
00063     do { \
00064         if((left) == (right)) \
00065             fprintf(stderr, "%s(%s:%i) Assertion failed: %s == %s\n", \
00066                     PRETTY_FUNCTION, __FILE__, __LINE__, #left, #right); \
00067     } while(0)
00068 #else
00069 #define ASSERT(test) do { } while(0)
00070 #define ASSERT_EQUAL(left, right) do { } while(0)
00071 #define ASSERT_NEQUAL(left, right) do { } while(0)
00072 #endif
00073 
00074 #endif

Generated on Thu Sep 6 13:13:11 2007 for driver by  doxygen 1.3.9.1