New GetHashForString functionality added.

This commit is contained in:
Peter S. May
2002-07-11 23:24:35 +00:00
parent 545642ce36
commit 304f02f926
2 changed files with 21 additions and 9 deletions
+13 -9
View File
@@ -7,11 +7,12 @@
Copyright (c) 2001-2002 by the person(s) listed below. All rights reserved.
Chris Danford
Peter S. May (GetHashForString implementation)
-----------------------------------------------------------------------------
*/
#include "RageUtil.h"
#include "RageCRC32.h" // Backend for GetHashForString
bool IsAnInt( LPCTSTR s )
@@ -285,15 +286,18 @@ void GetDirListing( CString sPath, CStringArray &AddTo, bool bOnlyDirs, bool bRe
::FindClose( hFind );
}
int GetHashForString( CString s )
//-----------------------------------------------------------------------------
// Name: GetHashForString( CString s )
// Desc: This new version of GetHashForString uses a stronger hashing algorithm
// than the former, assuring to a greater degree that two distinct
// strings do not produce the same result.
// The hashing algorithm is a modified CRC-32 (modified in that the
// characters in the CString are recast as unsigned char and that the
// unsigned int result from the hash is recast as a signed int).
//-----------------------------------------------------------------------------
int GetHashForString ( CString s )
{
int hash = 0;
for( int i=0; i<s.GetLength(); i++ )
{
hash *= 10;
hash += (DWORD)s[i];
}
return abs(hash);
return (int)abs(GetCrc32((unsigned char*)s.GetBuffer(s.GetLength()), s.GetLength()));
}
int GetHashForFile( CString sPath )
+8
View File
@@ -100,6 +100,14 @@ SOURCE=.\RageBitmapTexture.h
# End Source File
# Begin Source File
SOURCE=.\RageCRC32.cpp
# End Source File
# Begin Source File
SOURCE=.\RageCRC32.h
# End Source File
# Begin Source File
SOURCE=.\RageDisplay.cpp
# End Source File
# Begin Source File