static int GetTableDataBytes( INetworkStringTable *table ) { int iTotalSize = 0; for ( int i=0; i < table->GetNumStrings(); i++ ) { int iDataSize = 0; const void* data = table->GetStringUserData( i, &iDataSize ); iTotalSize += iDataSize; } return iTotalSize; } static int GetTableStringBytes( INetworkStringTable *table ) { int iTotalSize = 0; for ( int i=0; i < table->GetNumStrings(); i++ ) { const char* strString = table->GetString( i ); if ( strString ) { iTotalSize += Q_strlen( strString ); } } return iTotalSize; } static void PrintStringTable( const char* strName ) { if (!networkstringtable) return; INetworkStringTable *table = networkstringtable->FindTable( strName ); if (!table) { Msg( "Table %s not found.\n", strName ); return; } for ( int i=0; i < table->GetNumStrings(); i++ ) { const char* strString = table->GetString( i ); if (!strString) strString = "NULL STRING"; Msg( "%i: '%s'", i, strString ); int iDataSize = 0; const void* data = table->GetStringUserData( i, &iDataSize ); if ( iDataSize > 0 ) { Msg( "(data %i bytes)", iDataSize ); } Msg( "\n" ); } Msg( "Max Strings: %i\n", table->GetMaxStrings() ); Msg( "Num Strings: %i\n", table->GetNumStrings() ); Msg( "Total String Bytes: %i\n", GetTableStringBytes( table ) ); Msg( "Total Data Bytes: %i\n", GetTableDataBytes( table ) ); } CON_COMMAND( dumpstringtables_new, "Dumps the named string table, or list them if none" ) { if ( !networkstringtable ) return; if( args.ArgC() >= 2 ) { PrintStringTable( args[ 1 ] ); return; } Msg( "Num Tables: %i\n", networkstringtable->GetNumTables() ); for ( int i=0; i < networkstringtable->GetNumTables(); i++ ) { INetworkStringTable* table = networkstringtable->GetTable( i ); if ( table ) { Msg( "%i: %s\n", i, table->GetTableName() ); Msg( "\tstrings: %i\n", table->GetNumStrings() ); Msg( "\tstrdata: %i\n", GetTableStringBytes( table ) ); Msg( "\tdatabts: %i\n\n", GetTableDataBytes( table ) ); } } } CON_COMMAND( stringtabletotals, "Size of all string tables" ) { if ( !networkstringtable ) return; Msg( "Num Tables: %i\n", networkstringtable->GetNumTables() ); int iStrings = 0; int iStringBytes = 0; int iDataBytes = 0; for ( int i=0; i < networkstringtable->GetNumTables(); i++ ) { INetworkStringTable* table = networkstringtable->GetTable( i ); if ( table ) { iStrings += table->GetNumStrings(); iStringBytes += GetTableStringBytes( table ); iDataBytes += GetTableDataBytes( table ); } } Msg( "Total Strings: %i\n", iStrings ); Msg( "Total String Bytes: %i\n", iStringBytes ); Msg( "Total Data Bytes: %i\n", iDataBytes ); Msg( "Total Combined: %i/96000 (%i%)\n", iStringBytes+iDataBytes, (int)(((iStringBytes+iDataBytes)/96000.0f)*100.0f) ); }