(root)/
glib-2.79.0/
girepository/
cmph/
hash.h
       1  #ifndef __CMPH_HASH_H__
       2  #define __CMPH_HASH_H__
       3  
       4  #include "cmph_types.h"
       5  
       6  typedef union __hash_state_t hash_state_t;
       7  
       8  hash_state_t *hash_state_new(CMPH_HASH, cmph_uint32 hashsize);
       9  
      10  /** \fn cmph_uint32 hash(hash_state_t *state, const char *key, cmph_uint32 keylen);
      11   *  \param state is a pointer to a hash_state_t structure
      12   *  \param key is a pointer to a key
      13   *  \param keylen is the key length
      14   *  \return an integer that represents a hash value of 32 bits.
      15   */
      16  cmph_uint32 hash(hash_state_t *state, const char *key, cmph_uint32 keylen);
      17  
      18  /** \fn void hash_vector(hash_state_t *state, const char *key, cmph_uint32 keylen, cmph_uint32 * hashes);
      19   *  \param state is a pointer to a hash_state_t structure
      20   *  \param key is a pointer to a key
      21   *  \param keylen is the key length
      22   *  \param hashes is a pointer to a memory large enough to fit three 32-bit integers.
      23   */
      24  void hash_vector(hash_state_t *state, const char *key, cmph_uint32 keylen, cmph_uint32 * hashes);
      25  
      26  void hash_state_dump(hash_state_t *state, char **buf, cmph_uint32 *buflen);
      27  
      28  hash_state_t * hash_state_copy(hash_state_t *src_state);
      29  
      30  hash_state_t *hash_state_load(const char *buf, cmph_uint32 buflen);
      31  
      32  void hash_state_destroy(hash_state_t *state);
      33  
      34  /** \fn void hash_state_pack(hash_state_t *state, void *hash_packed);
      35   *  \brief Support the ability to pack a hash function into a preallocated contiguous memory space pointed by hash_packed.
      36   *  \param state points to the hash function
      37   *  \param hash_packed pointer to the contiguous memory area used to store the hash function. The size of hash_packed must be at least hash_state_packed_size()
      38   *  
      39   * Support the ability to pack a hash function into a preallocated contiguous memory space pointed by hash_packed.
      40   * However, the hash function type must be packed outside.
      41   */
      42  void hash_state_pack(hash_state_t *state, void *hash_packed);
      43  
      44  /** \fn cmph_uint32 hash_packed(void *hash_packed, CMPH_HASH hashfunc, const char *k, cmph_uint32 keylen);
      45   *  \param hash_packed is a pointer to a contiguous memory area
      46   *  \param hashfunc is the type of the hash function packed in hash_packed
      47   *  \param key is a pointer to a key
      48   *  \param keylen is the key length
      49   *  \return an integer that represents a hash value of 32 bits.
      50   */
      51  cmph_uint32 hash_packed(void *hash_packed, CMPH_HASH hashfunc, const char *k, cmph_uint32 keylen);
      52  
      53  /** \fn cmph_uint32 hash_state_packed_size(CMPH_HASH hashfunc)
      54   *  \brief Return the amount of space needed to pack a hash function.
      55   *  \param hashfunc function type
      56   *  \return the size of the packed function or zero for failures
      57   */ 
      58  cmph_uint32 hash_state_packed_size(CMPH_HASH hashfunc);
      59  
      60  
      61  /** \fn hash_vector_packed(void *hash_packed, CMPH_HASH hashfunc, const char *k, cmph_uint32 keylen, cmph_uint32 * hashes);
      62   *  \param hash_packed is a pointer to a contiguous memory area
      63   *  \param key is a pointer to a key
      64   *  \param keylen is the key length
      65   *  \param hashes is a pointer to a memory large enough to fit three 32-bit integers.
      66   */
      67  void hash_vector_packed(void *hash_packed, CMPH_HASH hashfunc, const char *k, cmph_uint32 keylen, cmph_uint32 * hashes);
      68  
      69  
      70  /** \fn CMPH_HASH hash_get_type(hash_state_t *state);
      71   *  \param state is a pointer to a hash_state_t structure
      72   *  \return the hash function type pointed by state
      73   */
      74  CMPH_HASH hash_get_type(hash_state_t *state);
      75  
      76  #endif