--- libaitcrc/inc/aitcrc.h 2010/06/13 16:13:51 1.3 +++ libaitcrc/inc/aitcrc.h 2010/09/28 08:40:53 1.3.2.2 @@ -3,7 +3,7 @@ * by Michael Pounov * * $Author: misho $ -* $Id: aitcrc.h,v 1.3 2010/06/13 16:13:51 misho Exp $ +* $Id: aitcrc.h,v 1.3.2.2 2010/09/28 08:40:53 misho Exp $ * *************************************************************************/ #ifndef __AITCRC_H @@ -32,6 +32,7 @@ inline int crc_GetErrno(); inline const char *crc_GetError(); // ------------------------------------------------------- + /* * crcReflect() Reflect all bits of number * @crcNum = Number for reflection @@ -89,6 +90,7 @@ inline u_int crcAdler(u_char * __restrict psBuf, int b */ #define crcEther(psBuf, bufLen) crcCalc((psBuf), (bufLen), 32, 3, 0xFFFFFFFF, 0xFFFFFFFF) + /* * crcPelco() Calculate Pelco D/P CRC * @ver = Pelco protocol version (Dd | Pp) @@ -97,6 +99,54 @@ inline u_int crcAdler(u_char * __restrict psBuf, int b Pelco protocol not supported */ inline u_char crcPelco(u_char ver, u_char *pkt); + + +/* + * hash_varchar() Compute index hash by variable length string + * @csStr = Input data buffer + * @nStrLen = Length of data buffer + * @nVer = Version of algorythm; 0 - original, 1 - AITNET variant + * return: Hash value +*/ +inline u_int hash_varchar(const char *csStr, int nStrLen, int nVer); +/* + * hash_bernstein() Compute index hash by Bernstein + * @csStr = Input data buffer + * @nStrLen = Length of data buffer + * @nVer = Version of algorythm; 0 - Bernstein, 1 - DJBX33A variant + * return: Hash value +*/ +inline u_int hash_bernstein(const char *csStr, int nStrLen, int nVer); +/* + * hash_jenkins() Compute index hash by Jenkins (one-at-a-time) + * @csStr = Input data buffer + * @nStrLen = Length of data buffer + * return: Hash value +*/ +inline u_int hash_jenkins(const char *csStr, int nStrLen); +/* + * hash_reddragon() Compute index hash by Red Dragon + * @csStr = Input data buffer + * @nStrLen = Length of data buffer + * return: Hash value +*/ +inline u_int hash_reddragon(const char *csStr, int nStrLen); +/* + * hash_fnv1() Compute index hash by FNV-1 + * @csStr = Input data buffer + * @nStrLen = Length of data buffer + * @nVer = Version of algorythm; 0 - FNV-1, 1 - FNV-1a (best avalanche) + * return: Hash value +*/ +inline u_int hash_fnv1(const char *csStr, int nStrLen, int nVer); + +/* + * hash_fnv() Compute index hash by FNV-1a + * @csStr = Input data buffer + * @nStrLen = Length of data buffer + * return: Hash value +*/ +#define hash_fnv(str, len) hash_fnv1((str), (len), 1) #endif