(root)/
glibc-2.38/
locale/
programs/
simple-hash.h
       1  /* Copyright (C) 1995-2023 Free Software Foundation, Inc.
       2     This file is part of the GNU C Library.
       3  
       4     This program is free software; you can redistribute it and/or modify
       5     it under the terms of the GNU General Public License as published
       6     by the Free Software Foundation; version 2 of the License, or
       7     (at your option) any later version.
       8  
       9     This program is distributed in the hope that it will be useful,
      10     but WITHOUT ANY WARRANTY; without even the implied warranty of
      11     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
      12     GNU General Public License for more details.
      13  
      14     You should have received a copy of the GNU General Public License
      15     along with this program; if not, see <https://www.gnu.org/licenses/>.  */
      16  
      17  #ifndef _SIMPLE_HASH_H
      18  #define _SIMPLE_HASH_H
      19  
      20  #include <inttypes.h>
      21  #include <obstack.h>
      22  #include <stdint.h>
      23  
      24  typedef struct hash_table
      25  {
      26    unsigned long int size;
      27    unsigned long int filled;
      28    void *first;
      29    void *table;
      30    struct obstack mem_pool;
      31  }
      32  hash_table;
      33  
      34  
      35  extern int init_hash (hash_table *htab, unsigned long int init_size) __THROW;
      36  extern int delete_hash (hash_table *htab) __THROW;
      37  extern int insert_entry (hash_table *htab, const void *key, size_t keylen,
      38  			 void *data) __THROW;
      39  extern int find_entry (const hash_table *htab, const void *key, size_t keylen,
      40  		       void **result) __THROW;
      41  extern int set_entry (hash_table *htab, const void *key, size_t keylen,
      42  		      void *newval) __THROW;
      43  
      44  extern int iterate_table (const hash_table *htab, void **ptr,
      45  			  const void **key, size_t *keylen, void **data)
      46       __THROW;
      47  
      48  extern uint32_t compute_hashval (const void *key, size_t keylen)
      49       __THROW;
      50  extern unsigned long int next_prime (unsigned long int seed) __THROW;
      51  
      52  #endif /* simple-hash.h */