debug.c
上传用户:gddssl
上传日期:2007-01-06
资源大小:1003k
文件大小:4k
源码类别:

编辑器/阅读器

开发平台:

DOS

  1. /*****************************************************************************
  2. *   $Id: debug.c,v 6.6 1998/08/06 04:57:55 darren Exp $
  3. *
  4. *   Copyright (c) 1996-1998, Darren Hiebert
  5. *
  6. *   This source code is released for free distribution under the terms of the
  7. *   GNU General Public License.
  8. *
  9. *   This module contains debugging functions.
  10. *****************************************************************************/
  11. /*============================================================================
  12. =   Include files
  13. ============================================================================*/
  14. #ifdef HAVE_CONFIG_H
  15. # include <config.h>
  16. #endif
  17. #if defined(__STDC__) || defined(MSDOS) || defined(WIN32) || defined(OS2)
  18. # define ENABLE_STDARG
  19. #endif
  20. #ifdef ENABLE_STDARG
  21. # include <stdarg.h>
  22. #else
  23. # include <varargs.h>
  24. #endif
  25. #include "ctags.h"
  26. /*============================================================================
  27. =   Function definitions
  28. ============================================================================*/
  29. #ifdef DEBUG
  30. extern void lineBreak() {} /* provides a line-specified break point */
  31. #ifdef ENABLE_STDARG
  32. extern void debugPrintf( const enum _debugLevels level,
  33.  const char *const format, ... )
  34. #else
  35. extern void debugPrintf( va_alist )
  36.     va_dcl
  37. #endif
  38. {
  39.     va_list ap;
  40. #ifdef ENABLE_STDARG
  41.     va_start(ap, format);
  42. #else
  43.     enum _debugLevels level;
  44.     const char *format;
  45.     va_start(ap);
  46.     level = va_arg(ap, enum _debugLevels);
  47.     format = va_arg(ap, char *);
  48. #endif
  49.     if (debug(level))
  50. vprintf(format, ap);
  51.     fflush(stdout);
  52.     va_end(ap);
  53. }
  54. extern void debugOpen( fileName, isHeader, language )
  55.     const char *const fileName;
  56.     const boolean isHeader;
  57.     const langType language;
  58. {
  59.     if (debug(DEBUG_STATUS))
  60.     {
  61. if (language == LANG_IGNORE)
  62.     printf("  ignoring %s (unknown extension)n", fileName);
  63. else
  64. {
  65.     const char *name = getLanguageName(language);
  66.     printf("OPENING %s as a %c%s language %sfilen",
  67. fileName, toupper(name[0]), name + 1, isHeader ? "header ":"");
  68. }
  69. fflush(stdout);
  70.     }
  71. }
  72. extern void debugPutc( c, level )
  73.     const int c;
  74.     const int level;
  75. {
  76.     if (debug(level)  &&  c != EOF)
  77.     {
  78.           if (c == STRING_SYMBOL) printf(""string"");
  79.      else if (c == CHAR_SYMBOL) printf("'c'");
  80. else putchar(c);
  81. fflush(stdout);
  82.     }
  83. }
  84. extern void debugEntry( scope, type, tagName, pMember )
  85.     const tagScope scope;
  86.     const tagType type;
  87.     const char *const tagName;
  88.     const memberInfo *const pMember;
  89. {
  90.     if (debug(DEBUG_PARSE))
  91.     {
  92. printf("<#%s%s:%s", (scope == SCOPE_STATIC ? "static:" : ""),
  93.        tagTypeName(type), tagName);
  94. if (pMember->type != MEMBER_NONE)
  95. {
  96.     printf("[%s:%s]", getTypeString(pMember->type), pMember->parent);
  97.     if ((File.language == LANG_CPP  ||  File.language == LANG_JAVA) &&
  98. pMember->visibility != VIS_UNDEFINED)
  99.     {
  100. printf("{visibility:%s}",
  101.        getVisibilityString(pMember->visibility));
  102.     }
  103. }
  104. printf("#>");
  105. fflush(stdout);
  106.     }
  107. }
  108. extern void debugParseNest( increase, level )
  109.     const boolean increase;
  110.     const unsigned int level;
  111. {
  112.     debugPrintf(DEBUG_PARSE, "<*%snesting:%d*>", increase ? "++" : "--", level);
  113. }
  114. extern void debugCppNest( begin, level )
  115.     const boolean begin;
  116.     const unsigned int level;
  117. {
  118.     debugPrintf(DEBUG_CPP, "<*cpp:%s level %d*>", begin ? "begin":"end", level);
  119. }
  120. extern void debugCppIgnore( ignore )
  121.     const boolean ignore;
  122. {
  123.     debugPrintf(DEBUG_CPP, "<*cpp:%s ignore*>", ignore ? "begin":"end");
  124. }
  125. extern void clearString( string, length )
  126.     char *const string;
  127.     const int length;
  128. {
  129.     int i;
  130.     for (i = 0 ; i < length ; ++i)
  131. string[i] = '';
  132. }
  133. #endif
  134. /* vi:set tabstop=8 shiftwidth=4: */