energymech/src/onhash.h

31 lines
569 B
C
Raw Normal View History

2025-10-22 22:34:04 +02:00
int mkhash(const char *cmd)
{
const char *s;
int h,t,ki,kk;
uint8_t a,b;
s = cmd;
ki = 15 * strlen(cmd);
kk = hashdata[ki & HASHDATAMASK];
while(*s)
{
a = tolowertab[(uchar)s[0]];
b = tolowertab[(uchar)s[1]];
h = (a - b) & HASHDATAMASK;
ki += a + hashdata[h];
#ifdef HEATMAP
heatmap[ki & HASHDATAMASK] += 1;
//heatmap[(ki + h) & HASHDATAMASK] += 1;
#endif
kk ^= hashdata[ki & HASHDATAMASK] ^ (hashdata[(h + ki) & HASHDATAMASK] << 8);
s++;
}
t = kk & 511;
#ifndef COM_ONS_C
if (hash[t] > 0)
collis += 1;
hash[t] += 1;
#endif
return(t);
}