| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- //-------------------------------------------------------------------------------------------------------
- // Copyright (C) Microsoft. All rights reserved.
- // Licensed under the MIT license. See LICENSE.txt file in the project root for full license information.
- //-------------------------------------------------------------------------------------------------------
- /*
- * IMPORTANT:
- * This file does not compile stand alone. It was required so that
- * the same code could be built into a utility program comphash.exe as well
- * as the scripting dll's. This file is included in core\comphash.cpp
- * to be used by comphash.exe. It is included in core\scrutil.cpp where to
- * be used by jscript.dll and vbscript.dll.
- *
- * comphash.exe is a utility used in the build to generate a source code file
- * containing a table of hash values associated with strings needed by
- * jscript and vbscript. It is highly desirable to have a single definition
- * of the hash function so things don't go out of sync.
- */
- ULONG CaseSensitiveComputeHash(LPCOLESTR prgch, LPCOLESTR end)
- {
- ULONG luHash = 0;
- while (prgch < end)
- {
- luHash = 17 * luHash + *(char16 *)prgch++;
- }
- return luHash;
- }
- ULONG CaseSensitiveComputeHash(LPCUTF8 prgch, LPCUTF8 end)
- {
- utf8::DecodeOptions options = utf8::doAllowThreeByteSurrogates;
- ULONG luHash = 0;
- while (prgch < end)
- {
- luHash = 17 * luHash + utf8::Decode(prgch, end, options);
- }
- return luHash;
- }
- ULONG CaseSensitiveComputeHash(char const * prgch, char const * end)
- {
- ULONG luHash = 0;
- while (prgch < end)
- {
- Assert(utf8::IsStartByte(*prgch) && !utf8::IsLeadByte(*prgch));
- luHash = 17 * luHash + *prgch++;
- }
- return luHash;
- }
- ULONG CaseInsensitiveComputeHash(LPCOLESTR posz)
- {
- ULONG luHash = 0;
- char16 ch;
- while (0 != (ch = *(char16 *)posz++))
- {
- if (ch <= 'Z' && ch >= 'A')
- ch += 'a' - 'A';
- luHash = 17 * luHash + ch;
- }
- return luHash;
- }
|