static void extraRptFini( // COMPLETION FOR EXTRA REPORTING INITFINI* defn ) // - definition { RPTREG* reg; // - current registration defn = defn; if( CompFlags.extra_stats_wanted ) { MsgDisplayLine( "" ); MsgDisplayLine( "-zi Statistics" ); MsgDisplayLine( "" ); RingIterBeg( rpt_registrations, reg ) { (reg->base.processor)( reg ); } RingIterEnd( reg )
static void statsPrint( // PRINT STATISTICS INITFINI* defn ) // - definition { defn = defn; if( CompFlags.stats_printed ) { return; } if( CompFlags.quiet_mode ) { return; } if( ! CompFlags.srcfile_compiled ) { return; } if( WholeFName != NULL ) { VBUF buffer; VbufInit( &buffer ); VbufConcStr( &buffer, WholeFName ); VbufConcStr( &buffer, ": " ); intPrint( &buffer, "line", ", ", SrcLineCount ); if( IncLineCount != 0 ) { VbufConcStr( &buffer, "included " ); VbufConcDecimal( &buffer, IncLineCount ); VbufConcStr( &buffer, ", " ); } intPrint( &buffer, "warning", ", ", WngCount ); intPrint( &buffer, "error", "", ErrCount ); MsgDisplayLine( VbufString( &buffer ) ); CompFlags.stats_printed = 1; VbufFree( &buffer ); } }
static void rptRepository // PRINT REPOSITORY REPORT ( INITFINI* defn ) // - definition { REPO_STAT** last; // - addr[ REPO_STAT ] REPO_STAT* repo; // - REPO_STAT for source file long ref_syms; // - # symbol references long ref_types; // - # type references long avg_defs; // - average definitions long avg_syms; // - average symbol references long avg_types; // - average type references unsigned file_count; // - # files defn = defn; if( ! CompFlags.extra_stats_wanted ) { for(;;) { last = VstkPop( &srcFiles ); if( NULL == last ) break; repo = *last; VstkClose( &repo->refset ); VstkClose( &repo->typeset ); } return; } MsgDisplayLine( "" ); MsgDisplayLine( "Repository Statistics" ); MsgDisplayLine( "" ); MsgDisplayLine( "Defns Syms Types Total File" ); MsgDisplayLine( "" ); avg_defs = 0; avg_syms = 0; avg_types = 0; file_count = 0; for(;;) { last = VstkPop( &srcFiles ); if( NULL == last ) break; repo = *last; ref_syms = VstkDimension( &repo->refset ) + 1; ref_types = VstkDimension( &repo->typeset ) + 1; ++file_count; avg_syms += ref_syms; avg_types += ref_types; avg_defs += repo->defns; sprintf( sbuff , fmt_repos , repo->defns , ref_syms , ref_types , ref_syms + ref_types , SrcFileName( repo->srcfile ) ); MsgDisplayLine( sbuff ); VstkClose( &repo->refset ); VstkClose( &repo->typeset ); } if( 0 < file_count ) { long fuzz = file_count / 2; MsgDisplayLine( "" ); sprintf( sbuff , fmt_repos , avg_defs , avg_syms , avg_types , avg_syms + avg_types , "---- Totals ------" ); MsgDisplayLine( sbuff ); avg_defs = ( avg_defs + fuzz ) / file_count; avg_syms = ( avg_syms + fuzz ) / file_count; avg_types = ( avg_types + fuzz ) / file_count; sprintf( sbuff , fmt_repos , avg_defs , avg_syms , avg_types , avg_syms + avg_types , "---- Averages ----" ); MsgDisplayLine( sbuff ); MsgDisplayLine( "" ); sprintf( sbuff, "%d files processed", file_count ); MsgDisplayLine( sbuff ); MsgDisplayLine( "" ); } fflush( stdout ); }
static void vbufWrite( // WRITE A VBUFFER VBUF* vbuf ) // - the VBUF to be written { MsgDisplayLine( VbufString( vbuf ) ); }