You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
145 lines
4.3 KiB
145 lines
4.3 KiB
//========= 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
|
|
|