| /* $Id: debug.h,v 1.1.1.1 2012/03/29 17:22:11 uid42307 Exp $ |
| ****************************************************************************** |
| |
| GGIMesa debugging macros |
| |
| Copyright (C) 1998-1999 Marcus Sundberg [marcus@ggi-project.org] |
| Copyright (C) 1999-2000 Jon Taylor [taylorj@ggi-project.org] |
| |
| Permission is hereby granted, free of charge, to any person obtaining a |
| copy of this software and associated documentation files (the "Software"), |
| to deal in the Software without restriction, including without limitation |
| the rights to use, copy, modify, merge, publish, distribute, sublicense, |
| and/or sell copies of the Software, and to permit persons to whom the |
| Software is furnished to do so, subject to the following conditions: |
| |
| The above copyright notice and this permission notice shall be included in |
| all copies or substantial portions of the Software. |
| |
| THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR |
| IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, |
| FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL |
| THE AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER |
| IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN |
| CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. |
| |
| ****************************************************************************** |
| */ |
| |
| #ifndef _GGI_MESA_INTERNAL_DEBUG_H |
| #define _GGI_MESA_INTERNAL_DEBUG_H |
| |
| #include <stdio.h> |
| #include <stdarg.h> |
| #include <ggi/types.h> |
| #include <ggi/gg.h> |
| |
| #ifndef DEBUG |
| #define DEBUG |
| #endif |
| |
| __BEGIN_DECLS |
| |
| /* Exported variables */ |
| #ifdef BUILDING_GGIMESA |
| extern uint32 _ggimesaDebugState; |
| extern int _ggimesaDebugSync; |
| #else |
| IMPORTVAR uint32 _ggimesaDebugState; |
| IMPORTVAR int _ggimesaDebugSync; |
| #endif |
| |
| __END_DECLS |
| |
| |
| /* Debugging types |
| * bit 0 is reserved! */ |
| |
| #define GGIMESADEBUG_CORE (1<<1) /* 2 */ |
| #define GGIMESADEBUG_MODE (1<<2) /* 4 */ |
| #define GGIMESADEBUG_COLOR (1<<3) /* 8 */ |
| #define GGIMESADEBUG_DRAW (1<<4) /* 16 */ |
| #define GGIMESADEBUG_MISC (1<<5) /* 32 */ |
| #define GGIMESADEBUG_LIBS (1<<6) /* 64 */ |
| #define GGIMESADEBUG_EVENTS (1<<7) /* 128 */ |
| |
| #define GGIMESADEBUG_ALL 0xffffffff |
| |
| #ifdef __GNUC__ |
| |
| #ifdef DEBUG |
| #define GGIMESADPRINT(args...) if (_ggimesaDebugState) { ggDPrintf(_ggimesaDebugSync, "GGIMesa",args); } |
| #define GGIMESADPRINT_CORE(args...) if (_ggimesaDebugState & GGIMESADEBUG_CORE) { ggDPrintf(_ggimesaDebugSync,"GGIMesa",args); } |
| #define GGIMESADPRINT_MODE(args...) if (_ggimesaDebugState & GGIMESADEBUG_MODE) { ggDPrintf(_ggimesaDebugSync,"GGIMesa",args); } |
| #define GGIMESADPRINT_COLOR(args...) if (_ggimesaDebugState & GGIMESADEBUG_COLOR) { ggDPrintf(_ggimesaDebugSync,"GGIMesa",args); } |
| #define GGIMESADPRINT_DRAW(args...) if (_ggimesaDebugState & GGIMESADEBUG_DRAW) { ggDPrintf(_ggimesaDebugSync,"GGIMesa",args); } |
| #define GGIMESADPRINT_MISC(args...) if (_ggimesaDebugState & GGIMESADEBUG_MISC) { ggDPrintf(_ggimesaDebugSync,"GGIMesa",args); } |
| #define GGIMESADPRINT_LIBS(args...) if (_ggimesaDebugState & GGIMESADEBUG_LIBS) { ggDPrintf(_ggimesaDebugSync,"GGIMesa",args); } |
| #define GGIMESADPRINT_EVENTS(args...) if (_ggimesaDebugState & GGIMESADEBUG_EVENTS) { ggDPrintf(_ggimesaDebugSync,"GGIMesa",args); } |
| #else /* DEBUG */ |
| #define GGIMESADPRINT(args...) do{}while(0) |
| #define GGIMESADPRINT_CORE(args...) do{}while(0) |
| #define GGIMESADPRINT_MODE(args...) do{}while(0) |
| #define GGIMESADPRINT_COLOR(args...) do{}while(0) |
| #define GGIMESADPRINT_DRAW(args...) do{}while(0) |
| #define GGIMESADPRINT_MISC(args...) do{}while(0) |
| #define GGIMESADPRINT_LIBS(args...) do{}while(0) |
| #define GGIMESADPRINT_EVENTS(args...) do{}while(0) |
| #endif /* DEBUG */ |
| |
| #else /* __GNUC__ */ |
| |
| __BEGIN_DECLS |
| |
| static inline void GGIMESADPRINT(const char *form,...) |
| { |
| #ifdef DEBUG |
| if (_ggiDebugState) { |
| va_list args; |
| |
| fprintf(stderr, "GGIMesa: "); |
| va_start(args, form); |
| vfprintf(stderr, form, args); |
| va_end(args); |
| if (_ggimesaDebugSync) fflush(stderr); |
| } |
| #endif |
| } |
| |
| static inline void GGIMESADPRINT_CORE(const char *form,...) |
| { |
| #ifdef DEBUG |
| if (_ggiDebugState & GGIDEBUG_CORE) { |
| va_list args; |
| |
| fprintf(stderr, "GGIMesa: "); |
| va_start(args, form); |
| vfprintf(stderr, form, args); |
| va_end(args); |
| if (_ggimesaDebugSync) fflush(stderr); |
| } |
| #endif |
| } |
| |
| static inline void GGIMESADPRINT_MODE(const char *form,...) |
| { |
| #ifdef DEBUG |
| if (_ggiDebugState & GGIDEBUG_MODE) { |
| va_list args; |
| |
| fprintf(stderr, "GGIMesa: "); |
| va_start(args, form); |
| vfprintf(stderr, form, args); |
| va_end(args); |
| if (_ggimesaDebugSync) fflush(stderr); |
| } |
| #endif |
| } |
| |
| static inline void GGIMESADPRINT_COLOR(const char *form,...) |
| { |
| #ifdef DEBUG |
| if (_ggiDebugState & GGIDEBUG_COLOR) { |
| va_list args; |
| |
| fprintf(stderr, "GGIMesa: "); |
| va_start(args, form); |
| vfprintf(stderr, form, args); |
| va_end(args); |
| if (_ggimesaDebugSync) fflush(stderr); |
| } |
| #endif |
| } |
| |
| static inline void GGIMESADPRINT_DRAW(const char *form,...) |
| { |
| #ifdef DEBUG |
| if (_ggiDebugState & GGIDEBUG_DRAW) { |
| va_list args; |
| |
| fprintf(stderr, "GGIMesa: "); |
| va_start(args, form); |
| vfprintf(stderr, form, args); |
| va_end(args); |
| if (_ggimesaDebugSync) fflush(stderr); |
| } |
| #endif |
| } |
| |
| static inline void GGIMESADPRINT_MISC(const char *form,...) |
| { |
| #ifdef DEBUG |
| if (_ggiDebugState & GGIDEBUG_MISC) { |
| va_list args; |
| |
| fprintf(stderr, "GGIMesa: "); |
| va_start(args, form); |
| vfprintf(stderr, form, args); |
| va_end(args); |
| if (_ggimesaDebugSync) fflush(stderr); |
| } |
| #endif |
| } |
| |
| static inline void GGIMESADPRINT_LIBS(const char *form,...) |
| { |
| #ifdef DEBUG |
| if (_ggiDebugState & GGIDEBUG_LIBS) { |
| va_list args; |
| |
| fprintf(stderr, "GGIMesa: "); |
| va_start(args, form); |
| vfprintf(stderr, form, args); |
| va_end(args); |
| if (_ggimesaDebugSync) fflush(stderr); |
| } |
| #endif |
| } |
| |
| static inline void GGIMESADPRINT_EVENTS(const char *form,...) |
| { |
| #ifdef DEBUG |
| if (_ggiDebugState & GGIDEBUG_EVENTS) { |
| va_list args; |
| |
| fprintf(stderr, "GGIMesa: "); |
| va_start(args, form); |
| vfprintf(stderr, form, args); |
| va_end(args); |
| if (_ggimesaDebugSync) fflush(stderr); |
| } |
| #endif |
| } |
| |
| __END_DECLS |
| |
| #endif /* __GNUC__ */ |
| |
| #ifdef DEBUG |
| #define GGIMESA_ASSERT(x,str) \ |
| { if (!(x)) { \ |
| fprintf(stderr,"GGIMESA:%s:%d: INTERNAL ERROR: %s\n",__FILE__,__LINE__,str); \ |
| exit(1); \ |
| } } |
| #define GGIMESA_APPASSERT(x,str) \ |
| { if (!(x)) { \ |
| fprintf(stderr,"GGIMESA:%s:%d: APPLICATION ERROR: %s\n",__FILE__,__LINE__,str); \ |
| exit(1); \ |
| } } |
| #else /* DEBUG */ |
| #define GGIMESA_ASSERT(x,str) do{}while(0) |
| #define GGIMESA_APPASSERT(x,str) do{}while(0) |
| #endif /* DEBUG */ |
| |
| #ifdef DEBUG |
| # define GGIMESAD0(x) x |
| #else |
| # define GGIMESAD0(x) /* empty */ |
| #endif |
| |
| #ifdef GGIMESADLEV |
| # if GGIMESADLEV == 1 |
| # define GGIMESAD1(x) x |
| # define GGIMESAD2(x) /* empty */ |
| # define GGIMESAD3(x) /* empty */ |
| # elif GGIMESADLEV == 2 |
| # define GGIMESAD1(x) x |
| # define GGIMESAD2(x) x |
| # define GGIMESAD3(x) /* empty */ |
| # elif GGIMESADLEV > 2 |
| # define GGIMESAD1(x) x |
| # define GGIMESAD2(x) x |
| # define GGIMESAD3(x) x |
| # endif |
| #else |
| # define GGIMESAD1(x) /* empty */ |
| # define GGIMESAD2(x) /* empty */ |
| # define GGIMESAD3(x) /* empty */ |
| #endif |
| |
| #endif /* _GGI_MESA_INTERNAL_DEBUG_H */ |