Rev 2787 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 2787 | Rev 4692 | ||
---|---|---|---|
Line 45... | Line 45... | ||
45 | * @param key Array of keys needed to compute hash index. All keys must |
45 | * @param key Array of keys needed to compute hash index. All keys must |
46 | * be passed. |
46 | * be passed. |
47 | * |
47 | * |
48 | * @return Index into hash table. |
48 | * @return Index into hash table. |
49 | */ |
49 | */ |
50 | index_t (* hash)(unative_t key[]); |
50 | size_t (* hash)(unative_t key[]); |
51 | 51 | ||
52 | /** Hash table item comparison function. |
52 | /** Hash table item comparison function. |
53 | * |
53 | * |
54 | * @param key Array of keys that will be compared with item. It is not |
54 | * @param key Array of keys that will be compared with item. It is not |
55 | * necessary to pass all keys. |
55 | * necessary to pass all keys. |
56 | * |
56 | * |
57 | * @return true if the keys match, false otherwise. |
57 | * @return true if the keys match, false otherwise. |
58 | */ |
58 | */ |
59 | bool (*compare)(unative_t key[], count_t keys, link_t *item); |
59 | bool (*compare)(unative_t key[], size_t keys, link_t *item); |
60 | 60 | ||
61 | /** Hash table item removal callback. |
61 | /** Hash table item removal callback. |
62 | * |
62 | * |
63 | * @param item Item that was removed from the hash table. |
63 | * @param item Item that was removed from the hash table. |
64 | */ |
64 | */ |
Line 66... | Line 66... | ||
66 | } hash_table_operations_t; |
66 | } hash_table_operations_t; |
67 | 67 | ||
68 | /** Hash table structure. */ |
68 | /** Hash table structure. */ |
69 | typedef struct { |
69 | typedef struct { |
70 | link_t *entry; |
70 | link_t *entry; |
71 | count_t entries; |
71 | size_t entries; |
72 | count_t max_keys; |
72 | size_t max_keys; |
73 | hash_table_operations_t *op; |
73 | hash_table_operations_t *op; |
74 | } hash_table_t; |
74 | } hash_table_t; |
75 | 75 | ||
76 | #define hash_table_get_instance(item, type, member) \ |
76 | #define hash_table_get_instance(item, type, member) \ |
77 | list_get_instance((item), type, member) |
77 | list_get_instance((item), type, member) |
78 | 78 | ||
79 | extern void hash_table_create(hash_table_t *h, count_t m, count_t max_keys, |
79 | extern void hash_table_create(hash_table_t *h, size_t m, size_t max_keys, |
80 | hash_table_operations_t *op); |
80 | hash_table_operations_t *op); |
81 | extern void hash_table_insert(hash_table_t *h, unative_t key[], link_t *item); |
81 | extern void hash_table_insert(hash_table_t *h, unative_t key[], link_t *item); |
82 | extern link_t *hash_table_find(hash_table_t *h, unative_t key[]); |
82 | extern link_t *hash_table_find(hash_table_t *h, unative_t key[]); |
83 | extern void hash_table_remove(hash_table_t *h, unative_t key[], count_t keys); |
83 | extern void hash_table_remove(hash_table_t *h, unative_t key[], size_t keys); |
84 | 84 | ||
85 | #endif |
85 | #endif |
86 | 86 | ||
87 | /** @} |
87 | /** @} |
88 | */ |
88 | */ |