1 /* hash.h - hash tables for opkg 2 3 Steven M. Ayer, Jamey Hicks 4 5 Copyright (C) 2002 Compaq Computer Corporation 6 7 This program is free software; you can redistribute it and/or 8 modify it under the terms of the GNU General Public License as 9 published by the Free Software Foundation; either version 2, or (at 10 your option) any later version. 11 12 This program is distributed in the hope that it will be useful, but 13 WITHOUT ANY WARRANTY; without even the implied warranty of 14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 15 General Public License for more details. 16 */ 17 18 #ifndef _HASH_TABLE_H_ 19 #define _HASH_TABLE_H_ 20 21 typedef struct hash_entry hash_entry_t; 22 typedef struct hash_table hash_table_t; 23 24 struct hash_entry { 25 char *key; 26 void *data; 27 struct hash_entry *next; 28 }; 29 30 struct hash_table { 31 const char *name; 32 hash_entry_t *entries; 33 unsigned int n_buckets; 34 unsigned int n_elements; 35 36 /* useful stats */ 37 unsigned int n_used_buckets; 38 unsigned int n_collisions; 39 unsigned int max_bucket_len; 40 unsigned int n_hits, n_misses; 41 }; 42 43 void hash_table_init(const char *name, hash_table_t * hash, int len); 44 void hash_table_deinit(hash_table_t * hash); 45 void hash_print_stats(hash_table_t * hash); 46 void *hash_table_get(hash_table_t * hash, const char *key); 47 int hash_table_insert(hash_table_t * hash, const char *key, void *value); 48 int hash_table_remove(hash_table_t * has, const char *key); 49 void hash_table_foreach(hash_table_t * hash, 50 void (*f) (const char *key, void *entry, void *data), 51 void *data); 52 53 #endif /* _HASH_TABLE_H_ */ 54
This page was automatically generated by LXR 0.3.1. • OpenWrt