grub2: bring back build of aros-side grub2 tools
[AROS.git] / workbench / classes / zune / nlist / nbitmap_mcc / Debug.h
blobef19ee93c5425a2222769774cdfbfc4de49f4d11
1 /***************************************************************************
3 NBitmap.mcc - New Bitmap MUI Custom Class
4 Copyright (C) 2006 by Daniel Allsopp
5 Copyright (C) 2007-2013 by NList Open Source Team
7 This library is free software; you can redistribute it and/or
8 modify it under the terms of the GNU Lesser General Public
9 License as published by the Free Software Foundation; either
10 version 2.1 of the License, or (at your option) any later version.
12 This library is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 Lesser General Public License for more details.
17 NList classes Support Site: http://www.sf.net/projects/nlist-classes
19 $Id$
21 ***************************************************************************/
23 #ifndef DEBUG_H
24 #define DEBUG_H
26 // first we make sure all previously defined symbols are undefined now so
27 // that no other debug system interferes with ours.
28 #undef ENTER
29 #undef LEAVE
30 #undef RETURN
31 #undef SHOWVALUE
32 #undef SHOWPOINTER
33 #undef SHOWSTRING
34 #undef SHOWMSG
35 #undef STARTCLOCK
36 #undef STOPCLOCK
37 #undef D
38 #undef E
39 #undef W
40 #undef ASSERT
42 #if defined(DEBUG)
44 #include <assert.h>
46 #ifndef EXEC_TYPES_H
47 #include <exec/types.h>
48 #endif
50 #if defined(__amigaos4__)
51 #include <proto/exec.h>
52 #ifdef __USE_INLINE__
53 #ifdef DebugPrintF
54 #undef DebugPrintF
55 #endif
56 #endif
57 #ifndef kprintf
58 #define kprintf(format, args...) ((struct ExecIFace *)((*(struct ExecBase **)4)->MainInterface))->DebugPrintF(format, ## args)
59 #endif
60 #elif defined(__MORPHOS__)
61 #include <exec/rawfmt.h>
62 #include <proto/exec.h>
63 #define KPutFmt(format, args) VNewRawDoFmt(format, (APTR)RAWFMTFUNC_SERIAL, NULL, args)
64 void kprintf(const char *formatString,...);
65 #else
66 void kprintf(const char *formatString,...);
67 #endif
69 // debug classes
70 #define DBC_CTRACE (1<<0) // call tracing (ENTER/LEAVE etc.)
71 #define DBC_REPORT (1<<1) // reports (SHOWVALUE/SHOWSTRING etc.)
72 #define DBC_ASSERT (1<<2) // asserts (ASSERT)
73 #define DBC_TIMEVAL (1<<3) // time evaluations (STARTCLOCK/STOPCLOCK)
74 #define DBC_DEBUG (1<<4) // debugging output D()
75 #define DBC_ERROR (1<<5) // error output E()
76 #define DBC_WARNING (1<<6) // warning output W()
77 #define DBC_ALL 0xffffffff
79 // debug flags
80 #define DBF_ALWAYS (1<<0)
81 #define DBF_STARTUP (1<<1) // for startup/shutdown events
82 #define DBF_DATATYPE (1<<2)
83 #define DBF_DRAW (1<<3)
84 #define DBF_ALL 0xffffffff
86 void SetupDebug(void);
87 void CleanupDebug(void);
89 void _ENTER(unsigned long dclass, const char *file, int line, const char *function);
90 void _LEAVE(unsigned long dclass, const char *file, int line, const char *function);
91 void _RETURN(unsigned long dclass, const char *file, int line, const char *function, unsigned long result);
92 void _SHOWVALUE(unsigned long dclass, unsigned long dflags, unsigned long value, int size, const char *name, const char *file, int line);
93 void _SHOWPOINTER(unsigned long dclass, unsigned long dflags, const void *p, const char *name, const char *file, int line);
94 void _SHOWSTRING(unsigned long dclass, unsigned long dflags, const char *string, const char *name, const char *file, int line);
95 void _SHOWMSG(unsigned long dclass, unsigned long dflags, const char *msg, const char *file, int line);
96 void _DPRINTF(unsigned long dclass, unsigned long dflags, const char *file, int line, const char *format, ...);
98 // Core class information class messages
99 #define ENTER() _ENTER(DBC_CTRACE, __FILE__, __LINE__, __FUNCTION__)
100 #define LEAVE() _LEAVE(DBC_CTRACE, __FILE__, __LINE__, __FUNCTION__)
101 #define RETURN(r) _RETURN(DBC_CTRACE, __FILE__, __LINE__, __FUNCTION__, (long)r)
102 #define SHOWVALUE(f, v) _SHOWVALUE(DBC_REPORT, f, (long)v, sizeof(v), #v, __FILE__, __LINE__)
103 #define SHOWPOINTER(f, p) _SHOWPOINTER(DBC_REPORT, f, p, #p, __FILE__, __LINE__)
104 #define SHOWSTRING(f, s) _SHOWSTRING(DBC_REPORT, f, s, #s, __FILE__, __LINE__)
105 #define SHOWMSG(f, m) _SHOWMSG(DBC_REPORT, f, m, __FILE__, __LINE__)
106 #define D(f, s, vargs...) _DPRINTF(DBC_DEBUG, f, __FILE__, __LINE__, s, ## vargs)
107 #define E(f, s, vargs...) _DPRINTF(DBC_ERROR, f, __FILE__, __LINE__, s, ## vargs)
108 #define W(f, s, vargs...) _DPRINTF(DBC_WARNING, f, __FILE__, __LINE__, s, ## vargs)
109 #define ASSERT(expression) \
110 ((void) \
111 ((expression) ? 0 : \
113 _DPRINTF(DBC_ASSERT, \
114 DBF_ALWAYS, \
115 __FILE__, \
116 __LINE__, \
117 "failed assertion '%s'", \
118 #expression), \
119 assert(#expression), \
125 #else // DEBUG
127 #define ENTER() ((void)0)
128 #define LEAVE() ((void)0)
129 #define RETURN(r) ((void)0)
130 #define SHOWVALUE(f, v) ((void)0)
131 #define SHOWPOINTER(f, p) ((void)0)
132 #define SHOWSTRING(f, s) ((void)0)
133 #define SHOWMSG(f, m) ((void)0)
134 #define D(f, s, vargs...) ((void)0)
135 #define E(f, s, vargs...) ((void)0)
136 #define W(f, s, vargs...) ((void)0)
137 #define ASSERT(expression) ((void)0)
139 #endif // DEBUG
141 #endif // DEBUG_H