rendered paste bodystatic 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) );
}