| #ifndef XML_DICT_H_PRIVATE__ |
| #define XML_DICT_H_PRIVATE__ |
|
|
| #include <libxml/dict.h> |
|
|
| |
| |
| |
| |
| |
|
|
| #define HASH_ROL(x,n) ((x) << (n) | ((x) & 0xFFFFFFFF) >> (32 - (n))) |
| #define HASH_ROR(x,n) (((x) & 0xFFFFFFFF) >> (n) | (x) << (32 - (n))) |
|
|
| |
| |
| |
| |
| |
| |
|
|
| #define HASH_INIT(h1, h2, seed) \ |
| do { \ |
| h1 = seed ^ 0x3b00; \ |
| h2 = HASH_ROL(seed, 15); \ |
| } while (0) |
|
|
| #define HASH_UPDATE(h1, h2, ch) \ |
| do { \ |
| h1 += ch; \ |
| h1 += h1 << 3; \ |
| h2 += h1; \ |
| h2 = HASH_ROL(h2, 7); \ |
| h2 += h2 << 2; \ |
| } while (0) |
|
|
| |
| #define HASH_FINISH(h1, h2) \ |
| do { \ |
| h1 ^= h2; \ |
| h1 += HASH_ROL(h2, 14); \ |
| h2 ^= h1; h2 += HASH_ROR(h1, 6); \ |
| h1 ^= h2; h1 += HASH_ROL(h2, 5); \ |
| h2 ^= h1; h2 += HASH_ROR(h1, 8); \ |
| h2 &= 0xFFFFFFFF; \ |
| } while (0) |
|
|
| typedef struct { |
| unsigned hashValue; |
| const xmlChar *name; |
| } xmlHashedString; |
|
|
| XML_HIDDEN void |
| xmlInitDictInternal(void); |
| XML_HIDDEN void |
| xmlCleanupDictInternal(void); |
|
|
| XML_HIDDEN unsigned |
| xmlDictComputeHash(const xmlDict *dict, const xmlChar *string); |
| XML_HIDDEN unsigned |
| xmlDictCombineHash(unsigned v1, unsigned v2); |
| XML_HIDDEN xmlHashedString |
| xmlDictLookupHashed(xmlDict *dict, const xmlChar *name, int len); |
|
|
| XML_HIDDEN void |
| xmlInitRandom(void); |
| XML_HIDDEN void |
| xmlCleanupRandom(void); |
| XML_HIDDEN unsigned |
| xmlGlobalRandom(void); |
| XML_HIDDEN unsigned |
| xmlRandom(void); |
|
|
| #endif |
|
|