EXPORT char* MPQHashTableInit(char **ppHashTable, long nTableLength)
{
	long i = 0;
	char *p = NULL;
	MPQHASHTABLE *_pHashTable = NULL;

	/* 检查nTableLength是否为2的幂次方 */
	//assert(nTableLength&(nTableLength-1)==0);

	g_hash_mask = nTableLength - 1;

	InitCryptTable();

	p = malloc(nTableLength * sizeof(MPQHASHTABLE));

	if (p == NULL)
	{
		printf("%s, %d: malloc failed!\n", __FUNCTION__, __LINE__);
		return p;
	}
	*ppHashTable = p;
	_pHashTable = (MPQHASHTABLE *)p;

	for (i = 0; i < nTableLength; i++)
	{
		(_pHashTable + i)->nHashA = 0;
		(_pHashTable + i)->bExists = 0;
	}

	return p;
}
예제 #2
0
StringHash::StringHash(const long nTableLength /*= MAXTABLELEN*/)
{
	InitCryptTable();  
	m_tablelength = nTableLength;  
	//初始化hash表
	m_HashIndexTable = new HASHTABLE[nTableLength];  
	for ( int i = 0; i < nTableLength; i++ )  
	{  
		m_HashIndexTable[i].nHashA = -1;  
		m_HashIndexTable[i].nHashB = -1;  
		m_HashIndexTable[i].bExists = false;  
	}          
}