~linuxjedi/drizzle/trunk-bug-667053

« back to all changes in this revision

Viewing changes to dbug/dbug_long.h

  • Committer: brian
  • Date: 2008-06-25 05:29:13 UTC
  • Revision ID: brian@localhost.localdomain-20080625052913-6upwo0jsrl4lnapl
clean slate

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
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