diff options
| author | FluorescentCIAAfricanAmerican <[email protected]> | 2020-04-22 12:56:21 -0400 |
|---|---|---|
| committer | FluorescentCIAAfricanAmerican <[email protected]> | 2020-04-22 12:56:21 -0400 |
| commit | 3bf9df6b2785fa6d951086978a3e66f49427166a (patch) | |
| tree | 2c0f1f0c63c4832882bc93814ebd2c2b1c6224e5 /public/stringregistry.cpp | |
| download | archived-source-engine-2018-hl2-src-3bf9df6b2785fa6d951086978a3e66f49427166a.tar.xz archived-source-engine-2018-hl2-src-3bf9df6b2785fa6d951086978a3e66f49427166a.zip | |
Diffstat (limited to 'public/stringregistry.cpp')
| -rw-r--r-- | public/stringregistry.cpp | 145 |
1 files changed, 145 insertions, 0 deletions
diff --git a/public/stringregistry.cpp b/public/stringregistry.cpp new file mode 100644 index 0000000..896430b --- /dev/null +++ b/public/stringregistry.cpp @@ -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 |