(root)/
libxml2-2.12.3/
include/
private/
dict.h
       1  #ifndef XML_DICT_H_PRIVATE__
       2  #define XML_DICT_H_PRIVATE__
       3  
       4  #include <libxml/dict.h>
       5  
       6  /*
       7   * Values are ANDed with 0xFFFFFFFF to support platforms where
       8   * unsigned is larger than 32 bits. With 32-bit unsigned values,
       9   * modern compilers should optimize the operation away.
      10   */
      11  
      12  #define HASH_ROL(x,n) ((x) << (n) | ((x) & 0xFFFFFFFF) >> (32 - (n)))
      13  #define HASH_ROR(x,n) (((x) & 0xFFFFFFFF) >> (n) | (x) << (32 - (n)))
      14  
      15  /*
      16   * GoodOAAT: One of a smallest non-multiplicative One-At-a-Time functions
      17   * that passes SMHasher.
      18   *
      19   * Author: Sokolov Yura aka funny-falcon
      20   */
      21  
      22  #define HASH_INIT(h1, h2, seed) \
      23      do { \
      24          h1 = seed ^ 0x3b00; \
      25          h2 = HASH_ROL(seed, 15); \
      26      } while (0)
      27  
      28  #define HASH_UPDATE(h1, h2, ch) \
      29      do { \
      30          h1 += ch; \
      31          h1 += h1 << 3; \
      32          h2 += h1; \
      33          h2 = HASH_ROL(h2, 7); \
      34          h2 += h2 << 2; \
      35      } while (0)
      36  
      37  /* Result is in h2 */
      38  #define HASH_FINISH(h1, h2) \
      39      do { \
      40          h1 ^= h2; \
      41          h1 += HASH_ROL(h2, 14); \
      42          h2 ^= h1; h2 += HASH_ROR(h1, 6); \
      43          h1 ^= h2; h1 += HASH_ROL(h2, 5); \
      44          h2 ^= h1; h2 += HASH_ROR(h1, 8); \
      45          h2 &= 0xFFFFFFFF; \
      46      } while (0)
      47  
      48  typedef struct {
      49      unsigned hashValue;
      50      const xmlChar *name;
      51  } xmlHashedString;
      52  
      53  XML_HIDDEN void
      54  xmlInitDictInternal(void);
      55  XML_HIDDEN void
      56  xmlCleanupDictInternal(void);
      57  
      58  XML_HIDDEN unsigned
      59  xmlDictComputeHash(const xmlDict *dict, const xmlChar *string);
      60  XML_HIDDEN unsigned
      61  xmlDictCombineHash(unsigned v1, unsigned v2);
      62  XML_HIDDEN xmlHashedString
      63  xmlDictLookupHashed(xmlDictPtr dict, const xmlChar *name, int len);
      64  
      65  XML_HIDDEN void
      66  xmlInitRandom(void);
      67  XML_HIDDEN void
      68  xmlCleanupRandom(void);
      69  XML_HIDDEN unsigned
      70  xmlRandom(void);
      71  
      72  #endif /* XML_DICT_H_PRIVATE__ */