1 /***************************************************************************
3 openurl.library - universal URL display and browser launcher library
4 Copyright (C) 1998-2005 by Troels Walsted Hansen, et al.
5 Copyright (C) 2005-2013 by openurl.library Open Source Team
7 This library is free software; it has been placed in the public domain
8 and you can freely redistribute it and/or modify it. Please note, however,
9 that some components may be under the LGPL or GPL license.
11 This library is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
15 openurl.library project: http://sourceforge.net/projects/openurllib/
19 ***************************************************************************/
24 // first we make sure all previously defined symbols are undefined now so
25 // that no other debug system interferes with ours.
43 #include <exec/types.h>
46 #if defined(__amigaos4__)
47 #include <proto/exec.h>
54 #define kprintf(format, args...) ((struct ExecIFace *)((*(struct ExecBase **)4)->MainInterface))->DebugPrintF(format, ## args)
56 #elif defined(__MORPHOS__)
57 #include <exec/rawfmt.h>
58 #include <proto/exec.h>
59 #define KPutFmt(format, args) VNewRawDoFmt(format, (APTR)RAWFMTFUNC_SERIAL, NULL, args)
60 VOID
kprintf(CONST_STRPTR formatString
, ...);
62 VOID
kprintf(CONST_STRPTR formatString
, ...);
66 #define DBC_CTRACE (1<<0) // call tracing (ENTER/LEAVE etc.)
67 #define DBC_REPORT (1<<1) // reports (SHOWVALUE/SHOWSTRING etc.)
68 #define DBC_ASSERT (1<<2) // asserts (ASSERT)
69 #define DBC_TIMEVAL (1<<3) // time evaluations (STARTCLOCK/STOPCLOCK)
70 #define DBC_DEBUG (1<<4) // debugging output D()
71 #define DBC_ERROR (1<<5) // error output E()
72 #define DBC_WARNING (1<<6) // warning output W()
73 #define DBC_ALL 0xffffffff
76 #define DBF_ALWAYS (1<<0)
77 #define DBF_STARTUP (1<<1) // for startup/shutdown events
78 #define DBF_TEMPLATE (1<<2) // template parsing in SmartReadArgs.c
79 #define DBF_ALL 0xffffffff
81 void SetupDebug(void);
83 void _ENTER(unsigned long dclass
, const char *file
, int line
, const char *function
);
84 void _LEAVE(unsigned long dclass
, const char *file
, int line
, const char *function
);
85 void _RETURN(unsigned long dclass
, const char *file
, int line
, const char *function
, unsigned long result
);
86 void _SHOWVALUE(unsigned long dclass
, unsigned long dflags
, unsigned long value
, int size
, const char *name
, const char *file
, int line
);
87 void _SHOWPOINTER(unsigned long dclass
, unsigned long dflags
, const void *p
, const char *name
, const char *file
, int line
);
88 void _SHOWSTRING(unsigned long dclass
, unsigned long dflags
, const char *string
, const char *name
, const char *file
, int line
);
89 void _SHOWMSG(unsigned long dclass
, unsigned long dflags
, const char *msg
, const char *file
, int line
);
90 void _DPRINTF(unsigned long dclass
, unsigned long dflags
, const char *file
, int line
, const char *format
, ...);
92 // Core class information class messages
93 #define ENTER() _ENTER(DBC_CTRACE, __FILE__, __LINE__, __FUNCTION__)
94 #define LEAVE() _LEAVE(DBC_CTRACE, __FILE__, __LINE__, __FUNCTION__)
95 #define RETURN(r) _RETURN(DBC_CTRACE, __FILE__, __LINE__, __FUNCTION__, (long)r)
96 #define SHOWVALUE(f, v) _SHOWVALUE(DBC_REPORT, f, (long)v, sizeof(v), #v, __FILE__, __LINE__)
97 #define SHOWPOINTER(f, p) _SHOWPOINTER(DBC_REPORT, f, p, #p, __FILE__, __LINE__)
98 #define SHOWSTRING(f, s) _SHOWSTRING(DBC_REPORT, f, s, #s, __FILE__, __LINE__)
99 #define SHOWMSG(f, m) _SHOWMSG(DBC_REPORT, f, m, __FILE__, __LINE__)
100 #define D(f, s, vargs...) _DPRINTF(DBC_DEBUG, f, __FILE__, __LINE__, s, ## vargs)
101 #define E(f, s, vargs...) _DPRINTF(DBC_ERROR, f, __FILE__, __LINE__, s, ## vargs)
102 #define W(f, s, vargs...) _DPRINTF(DBC_WARNING, f, __FILE__, __LINE__, s, ## vargs)
103 #define ASSERT(expression) \
105 ((expression) ? 0 : \
107 _DPRINTF(DBC_ASSERT, \
111 "failed assertion '%s'", \
121 #define ENTER() ((void)0)
122 #define LEAVE() ((void)0)
123 #define RETURN(r) ((void)0)
124 #define SHOWVALUE(f, v) ((void)0)
125 #define SHOWPOINTER(f, p) ((void)0)
126 #define SHOWSTRING(f, s) ((void)0)
127 #define SHOWMSG(f, m) ((void)0)
128 #define D(f, s, vargs...) ((void)0)
129 #define E(f, s, vargs...) ((void)0)
130 #define W(f, s, vargs...) ((void)0)
131 #define ASSERT(expression) ((void)0)