1 | /* Copyright (C) 2000 MySQL AB |
---|
2 | |
---|
3 | This program is free software; you can redistribute it and/or modify |
---|
4 | it under the terms of the GNU General Public License as published by |
---|
5 | the Free Software Foundation; either version 2 of the License, or |
---|
6 | (at your option) any later version. |
---|
7 | |
---|
8 | This program is distributed in the hope that it will be useful, |
---|
9 | but WITHOUT ANY WARRANTY; without even the implied warranty of |
---|
10 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
---|
11 | GNU General Public License for more details. |
---|
12 | |
---|
13 | You should have received a copy of the GNU General Public License |
---|
14 | along with this program; if not, write to the Free Software |
---|
15 | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ |
---|
16 | |
---|
17 | #ifndef _dbug_h |
---|
18 | #define _dbug_h |
---|
19 | |
---|
20 | #ifdef __cplusplus |
---|
21 | extern "C" { |
---|
22 | #endif |
---|
23 | #if !defined(DBUG_OFF) && !defined(_lint) |
---|
24 | extern int _db_on_,_no_db_; |
---|
25 | extern FILE *_db_fp_; |
---|
26 | extern char *_db_process_; |
---|
27 | extern int _db_keyword_(const char *keyword); |
---|
28 | extern int _db_strict_keyword_(const char *keyword); |
---|
29 | extern void _db_setjmp_(void); |
---|
30 | extern void _db_longjmp_(void); |
---|
31 | extern void _db_push_(const char *control); |
---|
32 | extern void _db_pop_(void); |
---|
33 | extern void _db_enter_(const char *_func_,const char *_file_,uint _line_, |
---|
34 | const char **_sfunc_,const char **_sfile_, |
---|
35 | uint *_slevel_, char ***); |
---|
36 | extern void _db_return_(uint _line_,const char **_sfunc_,const char **_sfile_, |
---|
37 | uint *_slevel_); |
---|
38 | extern void _db_pargs_(uint _line_,const char *keyword); |
---|
39 | extern void _db_doprnt_ _VARARGS((const char *format,...)); |
---|
40 | extern void _db_dump_(uint _line_,const char *keyword,const char *memory, |
---|
41 | uint length); |
---|
42 | extern void _db_output_(uint flag); |
---|
43 | extern void _db_lock_file(void); |
---|
44 | extern void _db_unlock_file(void); |
---|
45 | |
---|
46 | #define DBUG_ENTER(a) const char *_db_func_, *_db_file_; uint _db_level_; \ |
---|
47 | char **_db_framep_; \ |
---|
48 | _db_enter_ (a,__FILE__,__LINE__,&_db_func_,&_db_file_,&_db_level_, \ |
---|
49 | &_db_framep_) |
---|
50 | #define DBUG_LEAVE \ |
---|
51 | (_db_return_ (__LINE__, &_db_func_, &_db_file_, &_db_level_)) |
---|
52 | #define DBUG_RETURN(a1) {DBUG_LEAVE; return(a1);} |
---|
53 | #define DBUG_VOID_RETURN {DBUG_LEAVE; return;} |
---|
54 | #define DBUG_EXECUTE(keyword,a1) \ |
---|
55 | {if (_db_on_) {if (_db_keyword_ (keyword)) { a1 }}} |
---|
56 | #define DBUG_PRINT(keyword,arglist) \ |
---|
57 | {if (_db_on_) {_db_pargs_(__LINE__,keyword); _db_doprnt_ arglist;}} |
---|
58 | #define DBUG_PUSH(a1) _db_push_ (a1) |
---|
59 | #define DBUG_POP() _db_pop_ () |
---|
60 | #define DBUG_PROCESS(a1) (_db_process_ = a1) |
---|
61 | #define DBUG_FILE (_db_fp_) |
---|
62 | #define DBUG_SETJMP(a1) (_db_setjmp_ (), setjmp (a1)) |
---|
63 | #define DBUG_LONGJMP(a1,a2) (_db_longjmp_ (), longjmp (a1, a2)) |
---|
64 | #define DBUG_DUMP(keyword,a1,a2)\ |
---|
65 | {if (_db_on_) {_db_dump_(__LINE__,keyword,a1,a2);}} |
---|
66 | #define DBUG_IN_USE (_db_fp_ && _db_fp_ != stderr) |
---|
67 | #define DEBUGGER_OFF _no_db_=1;_db_on_=0; |
---|
68 | #define DEBUGGER_ON _no_db_=0 |
---|
69 | #define DBUG_LOCK_FILE { _db_lock_file(); } |
---|
70 | #define DBUG_UNLOCK_FILE { _db_unlock_file(); } |
---|
71 | #define DBUG_OUTPUT(A) { _db_output_(A); } |
---|
72 | #define DBUG_ASSERT(A) assert(A) |
---|
73 | #define DBUG_EXECUTE_IF(keyword,a1) \ |
---|
74 | {if (_db_on_) {if (_db_strict_keyword_ (keyword)) { a1 }}} |
---|
75 | #else /* No debugger */ |
---|
76 | |
---|
77 | #define DBUG_ENTER(a1) |
---|
78 | #define DBUG_RETURN(a1) return(a1) |
---|
79 | #define DBUG_VOID_RETURN return |
---|
80 | #define DBUG_EXECUTE(keyword,a1) {} |
---|
81 | #define DBUG_EXECUTE_IF(keyword,a1) {} |
---|
82 | #define DBUG_PRINT(keyword,arglist) {} |
---|
83 | #define DBUG_PUSH(a1) {} |
---|
84 | #define DBUG_POP() {} |
---|
85 | #define DBUG_PROCESS(a1) {} |
---|
86 | #define DBUG_FILE (stderr) |
---|
87 | #define DBUG_SETJMP setjmp |
---|
88 | #define DBUG_LONGJMP longjmp |
---|
89 | #define DBUG_DUMP(keyword,a1,a2) {} |
---|
90 | #define DBUG_IN_USE 0 |
---|
91 | #define DEBUGGER_OFF |
---|
92 | #define DEBUGGER_ON |
---|
93 | #define DBUG_LOCK_FILE |
---|
94 | #define DBUG_UNLOCK_FILE |
---|
95 | #define DBUG_OUTPUT(A) |
---|
96 | #define DBUG_ASSERT(A) {} |
---|
97 | #endif |
---|
98 | #ifdef __cplusplus |
---|
99 | } |
---|
100 | #endif |
---|
101 | #endif |
---|