blob: 896430bfacf5342bbba92f53f5675d69f92fb720 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
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
|