1
This commit is contained in:
145
public/stringregistry.cpp
Normal file
145
public/stringregistry.cpp
Normal file
@ -0,0 +1,145 @@
|
||||
//========= Copyright Valve Corporation, All rights reserved. ============//
|
||||
//
|
||||
// Purpose: A registry of strings and associated ints
|
||||
//
|
||||
// $Workfile: $
|
||||
// $Date: $
|
||||
//
|
||||
//-----------------------------------------------------------------------------
|
||||
// $Log: $
|
||||
//
|
||||
// $NoKeywords: $
|
||||
//=============================================================================//
|
||||
|
||||
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include "stringregistry.h"
|
||||
#include "utldict.h"
|
||||
|
||||
// memdbgon must be the last include file in a .cpp file!!!
|
||||
#include "tier0/memdbgon.h"
|
||||
|
||||
#if !defined(_STATIC_LINKED) || defined(CLIENT_DLL)
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose: This class wraps the containers that do the actual work
|
||||
//-----------------------------------------------------------------------------
|
||||
struct StringTable_t : public CUtlDict<int, unsigned short>
|
||||
{
|
||||
};
|
||||
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose: Add null terminated string to the string registry
|
||||
// Input :
|
||||
// Output :
|
||||
//-----------------------------------------------------------------------------
|
||||
unsigned short CStringRegistry::AddString(const char *stringText, int stringID)
|
||||
{
|
||||
return m_pStringList->Insert( stringText, stringID );
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose: Given string text get the string ID
|
||||
// Input : Text of string to find
|
||||
// Output : Return string id or -1 if no such string exists
|
||||
//-----------------------------------------------------------------------------
|
||||
int CStringRegistry::GetStringID( const char *stringText )
|
||||
{
|
||||
unsigned short index = m_pStringList->Find( stringText );
|
||||
if ( m_pStringList->IsValidIndex( index ) )
|
||||
{
|
||||
return (*m_pStringList)[index];
|
||||
}
|
||||
|
||||
return -1;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose: Given a string ID return the string text
|
||||
// Input : ID of string to find
|
||||
// Output : Return string text of NULL of no such ID exists
|
||||
//-----------------------------------------------------------------------------
|
||||
char const *CStringRegistry::GetStringText( int stringID )
|
||||
{
|
||||
for( unsigned short index = m_pStringList->First() ; index != m_pStringList->InvalidIndex(); index = m_pStringList->Next( index ) )
|
||||
{
|
||||
if ( (*m_pStringList)[index] == stringID )
|
||||
{
|
||||
return m_pStringList->GetElementName( index );
|
||||
}
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose: Given a key return the string text
|
||||
//-----------------------------------------------------------------------------
|
||||
char const *CStringRegistry::GetStringForKey( unsigned short key )
|
||||
{
|
||||
if ( !m_pStringList->IsValidIndex( key ) )
|
||||
return NULL;
|
||||
|
||||
return m_pStringList->GetElementName( key );
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose: Given a key return the string text
|
||||
//-----------------------------------------------------------------------------
|
||||
int CStringRegistry::GetIDForKey( unsigned short key )
|
||||
{
|
||||
if ( !m_pStringList->IsValidIndex( key ) )
|
||||
return 0;
|
||||
|
||||
return (*m_pStringList)[key];
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose: Clear all strings from the string registry
|
||||
//-----------------------------------------------------------------------------
|
||||
void CStringRegistry::ClearStrings(void)
|
||||
{
|
||||
m_pStringList->RemoveAll();
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose: Destructor - delete the list of strings and maps
|
||||
// Input :
|
||||
// Output :
|
||||
//-----------------------------------------------------------------------------
|
||||
CStringRegistry::~CStringRegistry(void)
|
||||
{
|
||||
delete m_pStringList;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose: Constructor
|
||||
// Input :
|
||||
// Output :
|
||||
//-----------------------------------------------------------------------------
|
||||
CStringRegistry::CStringRegistry(void)
|
||||
{
|
||||
m_pStringList = new StringTable_t;
|
||||
}
|
||||
|
||||
|
||||
unsigned short CStringRegistry::First() const
|
||||
{
|
||||
return m_pStringList->First();
|
||||
}
|
||||
|
||||
unsigned short CStringRegistry::Next( unsigned short key ) const
|
||||
{
|
||||
return m_pStringList->Next( key );
|
||||
}
|
||||
|
||||
unsigned short CStringRegistry::InvalidIndex() const
|
||||
{
|
||||
return m_pStringList->InvalidIndex();
|
||||
}
|
||||
|
||||
#endif // _STATIC_LINKED && CLIENT_DLL
|
Reference in New Issue
Block a user