dbug_long.h
上传用户:tsgydb
上传日期:2007-04-14
资源大小:10674k
文件大小:6k
源码类别:

MySQL数据库

开发平台:

Visual C++

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