Update H3 documentation (and minor style nits.)

This commit is contained in:
Matthias Vallentin 2013-06-13 23:12:00 -07:00
parent 529d120376
commit a6d7b7856e

View file

@ -49,9 +49,9 @@
// hash a substring of the data. Hashes of substrings can be bitwise-XOR'ed // hash a substring of the data. Hashes of substrings can be bitwise-XOR'ed
// together to get the same result as hashing the full string. // together to get the same result as hashing the full string.
// Any number of hash functions can be created by creating new instances of H3, // Any number of hash functions can be created by creating new instances of H3,
// with the same or different template parameters. The hash function is // with the same or different template parameters. The hash function
// randomly generated using bro_random(); you must call init_random_seed() // constructor takes a seed as argument which defaults to a call to
// before the H3 constructor if you wish to seed it. // bro_random().
#ifndef H3_H #ifndef H3_H
@ -62,8 +62,8 @@
// The number of values representable by a byte. // The number of values representable by a byte.
#define H3_BYTE_RANGE (UCHAR_MAX+1) #define H3_BYTE_RANGE (UCHAR_MAX+1)
template<class T, int N> class H3 { template <typename T, int N>
T byte_lookup[N][H3_BYTE_RANGE]; class H3 {
public: public:
H3(T seed = bro_random()) H3(T seed = bro_random())
{ {
@ -97,7 +97,7 @@ public:
// loop optmized with Duff's Device // loop optmized with Duff's Device
register unsigned n = (size + 7) / 8; register unsigned n = (size + 7) / 8;
switch (size % 8) { switch ( size % 8 ) {
case 0: do { result ^= byte_lookup[offset++][*p++]; case 0: do { result ^= byte_lookup[offset++][*p++];
case 7: result ^= byte_lookup[offset++][*p++]; case 7: result ^= byte_lookup[offset++][*p++];
case 6: result ^= byte_lookup[offset++][*p++]; case 6: result ^= byte_lookup[offset++][*p++];
@ -106,11 +106,13 @@ public:
case 3: result ^= byte_lookup[offset++][*p++]; case 3: result ^= byte_lookup[offset++][*p++];
case 2: result ^= byte_lookup[offset++][*p++]; case 2: result ^= byte_lookup[offset++][*p++];
case 1: result ^= byte_lookup[offset++][*p++]; case 1: result ^= byte_lookup[offset++][*p++];
} while (--n > 0); } while ( --n > 0 );
} }
return result; return result;
} }
private:
T byte_lookup[N][H3_BYTE_RANGE];
}; };
#endif //H3_H #endif //H3_H