www.pudn.com > vim53src.zip > debug.c


/***************************************************************************** 
*   $Id: debug.c,v 6.6 1998/08/06 04:57:55 darren Exp $ 
* 
*   Copyright (c) 1996-1998, Darren Hiebert 
* 
*   This source code is released for free distribution under the terms of the 
*   GNU General Public License. 
* 
*   This module contains debugging functions. 
*****************************************************************************/ 
 
/*============================================================================ 
=   Include files 
============================================================================*/ 
#ifdef HAVE_CONFIG_H 
# include  
#endif 
 
#if defined(__STDC__) || defined(MSDOS) || defined(WIN32) || defined(OS2) 
# define ENABLE_STDARG 
#endif 
 
#ifdef ENABLE_STDARG 
# include  
#else 
# include  
#endif 
 
#include "ctags.h" 
 
/*============================================================================ 
=   Function definitions 
============================================================================*/ 
 
#ifdef DEBUG 
 
extern void lineBreak() {}	/* provides a line-specified break point */ 
 
#ifdef ENABLE_STDARG 
extern void debugPrintf( const enum _debugLevels level, 
			 const char *const format, ... ) 
#else 
extern void debugPrintf( va_alist ) 
    va_dcl 
#endif 
{ 
    va_list ap; 
 
#ifdef ENABLE_STDARG 
    va_start(ap, format); 
#else 
    enum _debugLevels level; 
    const char *format; 
 
    va_start(ap); 
    level = va_arg(ap, enum _debugLevels); 
    format = va_arg(ap, char *); 
#endif 
 
    if (debug(level)) 
	vprintf(format, ap); 
    fflush(stdout); 
 
    va_end(ap); 
} 
 
extern void debugOpen( fileName, isHeader, language ) 
    const char *const fileName; 
    const boolean isHeader; 
    const langType language; 
{ 
    if (debug(DEBUG_STATUS)) 
    { 
	if (language == LANG_IGNORE) 
	    printf("  ignoring %s (unknown extension)\n", fileName); 
	else 
	{ 
	    const char *name = getLanguageName(language); 
 
	    printf("OPENING %s as a %c%s language %sfile\n", 
		fileName, toupper(name[0]), name + 1, isHeader ? "header ":""); 
	} 
	fflush(stdout); 
    } 
} 
 
extern void debugPutc( c, level ) 
    const int c; 
    const int level; 
{ 
    if (debug(level)  &&  c != EOF) 
    { 
    	     if (c == STRING_SYMBOL)	printf("\"string\""); 
    	else if (c == CHAR_SYMBOL)	printf("'c'"); 
	else				putchar(c); 
 
	fflush(stdout); 
    } 
} 
 
extern void debugEntry( scope, type, tagName, pMember ) 
    const tagScope scope; 
    const tagType type; 
    const char *const tagName; 
    const memberInfo *const pMember; 
{ 
    if (debug(DEBUG_PARSE)) 
    { 
	printf("<#%s%s:%s", (scope == SCOPE_STATIC ? "static:" : ""), 
	       tagTypeName(type), tagName); 
 
	if (pMember->type != MEMBER_NONE) 
	{ 
	    printf("[%s:%s]", getTypeString(pMember->type), pMember->parent); 
 
	    if ((File.language == LANG_CPP  ||  File.language == LANG_JAVA) && 
		pMember->visibility != VIS_UNDEFINED) 
	    { 
		printf("{visibility:%s}", 
		       getVisibilityString(pMember->visibility)); 
	    } 
	} 
	printf("#>"); 
	fflush(stdout); 
    } 
} 
 
extern void debugParseNest( increase, level ) 
    const boolean increase; 
    const unsigned int level; 
{ 
    debugPrintf(DEBUG_PARSE, "<*%snesting:%d*>", increase ? "++" : "--", level); 
} 
 
extern void debugCppNest( begin, level ) 
    const boolean begin; 
    const unsigned int level; 
{ 
    debugPrintf(DEBUG_CPP, "<*cpp:%s level %d*>", begin ? "begin":"end", level); 
} 
 
extern void debugCppIgnore( ignore ) 
    const boolean ignore; 
{ 
    debugPrintf(DEBUG_CPP, "<*cpp:%s ignore*>", ignore ? "begin":"end"); 
} 
 
extern void clearString( string, length ) 
    char *const string; 
    const int length; 
{ 
    int i; 
 
    for (i = 0 ; i < length ; ++i) 
	string[i] = '\0'; 
} 
 
#endif 
 
/* vi:set tabstop=8 shiftwidth=4: */