12345678910111213141516171819202122232425262728293031323334353637383940414243 |
- /* Perfect hashing function library. Contains functions to generate perfect
- hashing functions
- * (C) Mike van Emmerik
- */
- #define TRUE 1
- #define FALSE 0
- //#define bool unsigned char
- #define byte unsigned char
- #define word unsigned short
- /* Prototypes */
- void hashCleanup(void); /* Frees memory allocated by hashParams() */
- void map(void); /* Part 1 of creating the tables */
- /* The application must provide these functions: */
- void getKey(int i, byte **pKeys);/* Set *keys to point to the i+1th key */
- void dispKey(int i); /* Display the key */
- class PatternHasher
- {
- word *T1base, *T2base; /* Pointers to start of T1, T2 */
- int NumEntry; /* Number of entries in the hash table (# keys) */
- int EntryLen; /* Size (bytes) of each entry (size of keys) */
- int SetSize; /* Size of the char set */
- char SetMin; /* First char in the set */
- int NumVert; /* c times NumEntry */
- int *graphNode; /* The array of edges */
- int *graphNext; /* Linked list of edges */
- int *graphFirst;/* First edge at a vertex */
- public:
- word *readT1(void); /* Returns a pointer to the T1 table */
- word *readT2(void); /* Returns a pointer to the T2 table */
- word *readG(void); /* Returns a pointer to the g table */
- void init(int _NumEntry, int _EntryLen, int _SetSize, char _SetMin,int _NumVert); /* Set the parameters for the hash table */
- void cleanup();
- int hash(unsigned char *string); //!< Hash the string to an int 0 .. NUMENTRY-1
- };
- extern PatternHasher g_pattern_hasher;
- /* Macro reads a LH word from the image regardless of host convention */
- #ifndef LH
- #define LH(p) ((int)((byte *)(p))[0] + ((int)((byte *)(p))[1] << 8))
- #endif
|