@@ -139,6 +139,30 @@ Bool NameKeyGenerator::addReservedKey()
139139}
140140#endif
141141
142+ // -------------------------------------------------------------------------------------------------
143+ NameKeyType NameKeyGenerator::nameToKey (const AsciiString& name)
144+ {
145+ const NameKeyType key = nameToKeyImpl (name);
146+
147+ #if RTS_ZEROHOUR && RETAIL_COMPATIBLE_CRC
148+ while (addReservedKey ());
149+ #endif
150+
151+ return key;
152+ }
153+
154+ // -------------------------------------------------------------------------------------------------
155+ NameKeyType NameKeyGenerator::nameToLowercaseKey (const AsciiString& name)
156+ {
157+ const NameKeyType key = nameToLowercaseKeyImpl (name);
158+
159+ #if RTS_ZEROHOUR && RETAIL_COMPATIBLE_CRC
160+ while (addReservedKey ());
161+ #endif
162+
163+ return key;
164+ }
165+
142166// -------------------------------------------------------------------------------------------------
143167NameKeyType NameKeyGenerator::nameToKey (const char * name)
144168{
@@ -163,6 +187,40 @@ NameKeyType NameKeyGenerator::nameToLowercaseKey(const char *name)
163187 return key;
164188}
165189
190+ // -------------------------------------------------------------------------------------------------
191+ NameKeyType NameKeyGenerator::nameToKeyImpl (const AsciiString& name)
192+ {
193+ const UnsignedInt hash = calcHashForString (name.str ()) % SOCKET_COUNT;
194+
195+ // do we have it already?
196+ const Bucket *b;
197+ for (b = m_sockets[hash]; b; b = b->m_nextInSocket )
198+ {
199+ if (name.compare (b->m_nameString ) == 0 )
200+ return b->m_key ;
201+ }
202+
203+ // nope, guess not. let's allocate it.
204+ return createNameKey (hash, name);
205+ }
206+
207+ // -------------------------------------------------------------------------------------------------
208+ NameKeyType NameKeyGenerator::nameToLowercaseKeyImpl (const AsciiString& name)
209+ {
210+ const UnsignedInt hash = calcHashForLowercaseString (name.str ()) % SOCKET_COUNT;
211+
212+ // do we have it already?
213+ const Bucket *b;
214+ for (b = m_sockets[hash]; b; b = b->m_nextInSocket )
215+ {
216+ if (name.compareNoCase (b->m_nameString ) == 0 )
217+ return b->m_key ;
218+ }
219+
220+ // nope, guess not. let's allocate it.
221+ return createNameKey (hash, name);
222+ }
223+
166224// -------------------------------------------------------------------------------------------------
167225NameKeyType NameKeyGenerator::nameToKeyImpl (const char * name)
168226{
0 commit comments