MySQL 5.6.14 Source Code Document
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
dbug_long.h
1 #error This file is not used in MySQL - see ../include/my_dbug.h instead
2 /******************************************************************************
3  * *
4  * N O T I C E *
5  * *
6  * Copyright Abandoned, 1987, Fred Fish *
7  * *
8  * *
9  * This previously copyrighted work has been placed into the public *
10  * domain by the author and may be freely used for any purpose, *
11  * private or commercial. *
12  * *
13  * Because of the number of inquiries I was receiving about the use *
14  * of this product in commercially developed works I have decided to *
15  * simply make it public domain to further its unrestricted use. I *
16  * specifically would be most happy to see this material become a *
17  * part of the standard Unix distributions by AT&T and the Berkeley *
18  * Computer Science Research Group, and a standard part of the GNU *
19  * system from the Free Software Foundation. *
20  * *
21  * I would appreciate it, as a courtesy, if this notice is left in *
22  * all copies and derivative works. Thank you. *
23  * *
24  * The author makes no warranty of any kind with respect to this *
25  * product and explicitly disclaims any implied warranties of mer- *
26  * chantability or fitness for any particular purpose. *
27  * *
28  ******************************************************************************
29  */
30 
31 /*
32  * FILE
33  *
34  * dbug.h user include file for programs using the dbug package
35  *
36  * SYNOPSIS
37  *
38  * #include <local/dbug.h>
39  *
40  * SCCS ID
41  *
42  * @(#)dbug.h 1.13 7/17/89
43  *
44  * DESCRIPTION
45  *
46  * Programs which use the dbug package must include this file.
47  * It contains the appropriate macros to call support routines
48  * in the dbug runtime library.
49  *
50  * To disable compilation of the macro expansions define the
51  * preprocessor symbol "DBUG_OFF". This will result in null
52  * macros expansions so that the resulting code will be smaller
53  * and faster. (The difference may be smaller than you think
54  * so this step is recommended only when absolutely necessary).
55  * In general, tradeoffs between space and efficiency are
56  * decided in favor of efficiency since space is seldom a
57  * problem on the new machines).
58  *
59  * All externally visible symbol names follow the pattern
60  * "_db_xxx..xx_" to minimize the possibility of a dbug package
61  * symbol colliding with a user defined symbol.
62  *
63  * The DBUG_<N> style macros are obsolete and should not be used
64  * in new code. Macros to map them to instances of DBUG_PRINT
65  * are provided for compatibility with older code. They may go
66  * away completely in subsequent releases.
67  *
68  * AUTHOR
69  *
70  * Fred Fish
71  * (Currently employed by Motorola Computer Division, Tempe, Az.)
72  * hao!noao!mcdsun!fnf
73  * (602) 438-3614
74  *
75  */
76 
77 /*
78  * Internally used dbug variables which must be global.
79  */
80 
81 #ifndef DBUG_OFF
82  extern int _db_on_; /* TRUE if debug currently enabled */
83  extern FILE *_db_fp_; /* Current debug output stream */
84  extern char *_db_process_; /* Name of current process */
85  extern int _db_keyword_ (); /* Accept/reject keyword */
86  extern void _db_push_ (); /* Push state, set up new state */
87  extern void _db_pop_ (); /* Pop previous debug state */
88  extern void _db_enter_ (); /* New user function entered */
89  extern void _db_return_ (); /* User function return */
90  extern void _db_pargs_ (); /* Remember args for line */
91  extern void _db_doprnt_ (); /* Print debug output */
92  extern void _db_setjmp_ (); /* Save debugger environment */
93  extern void _db_longjmp_ (); /* Restore debugger environment */
94  extern void _db_dump_(); /* Dump memory */
95 # endif
96 
97 
98 /*
99  * These macros provide a user interface into functions in the
100  * dbug runtime support library. They isolate users from changes
101  * in the MACROS and/or runtime support.
102  *
103  * The symbols "__LINE__" and "__FILE__" are expanded by the
104  * preprocessor to the current source file line number and file
105  * name respectively.
106  *
107  * WARNING --- Because the DBUG_ENTER macro allocates space on
108  * the user function's stack, it must precede any executable
109  * statements in the user function.
110  *
111  */
112 
113 # ifdef DBUG_OFF
114 # define DBUG_ENTER(a1)
115 # define DBUG_RETURN(a1) return(a1)
116 # define DBUG_VOID_RETURN return
117 # define DBUG_EXECUTE(keyword,a1)
118 # define DBUG_PRINT(keyword,arglist)
119 # define DBUG_2(keyword,format) /* Obsolete */
120 # define DBUG_3(keyword,format,a1) /* Obsolete */
121 # define DBUG_4(keyword,format,a1,a2) /* Obsolete */
122 # define DBUG_5(keyword,format,a1,a2,a3) /* Obsolete */
123 # define DBUG_PUSH(a1)
124 # define DBUG_POP()
125 # define DBUG_PROCESS(a1)
126 # define DBUG_FILE (stderr)
127 # define DBUG_SETJMP setjmp
128 # define DBUG_LONGJMP longjmp
129 # define DBUG_DUMP(keyword,a1)
130 # else
131 # define DBUG_ENTER(a) \
132  auto char *_db_func_; auto char *_db_file_; auto int _db_level_; \
133  auto char **_db_framep_; \
134  _db_enter_ (a,__FILE__,__LINE__,&_db_func_,&_db_file_,&_db_level_, \
135  &_db_framep_)
136 # define DBUG_LEAVE \
137  (_db_return_ (__LINE__, &_db_func_, &_db_file_, &_db_level_))
138 # define DBUG_RETURN(a1) return (DBUG_LEAVE, (a1))
139 /* define DBUG_RETURN(a1) {DBUG_LEAVE; return(a1);} Alternate form */
140 # define DBUG_VOID_RETURN {DBUG_LEAVE; return;}
141 # define DBUG_EXECUTE(keyword,a1) \
142  {if (_db_on_) {if (_db_keyword_ (keyword)) { a1 }}}
143 # define DBUG_PRINT(keyword,arglist) \
144  {if (_db_on_) {_db_pargs_(__LINE__,keyword); _db_doprnt_ arglist;}}
145 # define DBUG_2(keyword,format) \
146  DBUG_PRINT(keyword,(format)) /* Obsolete */
147 # define DBUG_3(keyword,format,a1) \
148  DBUG_PRINT(keyword,(format,a1)) /* Obsolete */
149 # define DBUG_4(keyword,format,a1,a2) \
150  DBUG_PRINT(keyword,(format,a1,a2)) /* Obsolete */
151 # define DBUG_5(keyword,format,a1,a2,a3) \
152  DBUG_PRINT(keyword,(format,a1,a2,a3)) /* Obsolete */
153 # define DBUG_PUSH(a1) _db_push_ (a1)
154 # define DBUG_POP() _db_pop_ ()
155 # define DBUG_PROCESS(a1) (_db_process_ = a1)
156 # define DBUG_FILE (_db_fp_)
157 # define DBUG_SETJMP(a1) (_db_setjmp_ (), setjmp (a1))
158 # define DBUG_LONGJMP(a1,a2) (_db_longjmp_ (), longjmp (a1, a2))
159 # define DBUG_DUMP(keyword,a1,a2) _db_dump_(__LINE__,keyword,a1,a2)
160 # endif