All pastes #878546 Raw Edit

Someone

public text v1 · immutable
#878546 ·published 2008-01-29 14:18 UTC
rendered paste body
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) );

}