char *DiagGetTypeName( TYPEPTR typ ) { STRCHUNK chunk; ChunkInit( &chunk ); do_message_output = 1; DoDumpType( typ, NULL, &chunk ); do_message_output = 0; return( ChunkToStr( &chunk ) ); }
static void DumpParmList( TYPEPTR *parm, SYMPTR funcsym, STRCHUNK *pch ) { TYPEPTR typ; int parm_num; SYM_HANDLE sym_handle; SYM_ENTRY sym; char *sym_name; char temp_name[20]; if( parm == NULL ) { ChunkSaveStr( pch, "void" ); } else { parm_num = 1; if( funcsym != NULL ) { sym_handle = funcsym->u.func.parms; } else { sym_handle = 0; } for( ;; ) { typ = *parm; if( typ == NULL ) break; typ = TrueType( typ ); if( funcsym != NULL ) { if( funcsym->flags & SYM_OLD_STYLE_FUNC ) { typ = DefArgPromotion( typ ); } } sym_name = NULL; if( sym_handle != 0 ) { SymGet( &sym, sym_handle ); sym_handle = sym.handle; sym_name = sym.name; } else { if( typ->decl_type != TYPE_VOID && typ->decl_type != TYPE_DOT_DOT_DOT ) { sym_name = temp_name; sprintf( temp_name, "__p%d", parm_num ); } } DoDumpType( typ, sym_name, pch ); ++parm; if( *parm != NULL ) { ChunkSaveChar( pch, ',' ); } ++parm_num; } } }