aboutsummaryrefslogtreecommitdiff
path: root/src/util/container_multihashmap.c
diff options
context:
space:
mode:
authorChristian Grothoff <christian@grothoff.org>2009-10-19 22:00:02 +0000
committerChristian Grothoff <christian@grothoff.org>2009-10-19 22:00:02 +0000
commit8da07c23a94221fea5d73ebac9a522f72e3adef3 (patch)
tree1e89253ed881111886df35f4de7a191aea505c42 /src/util/container_multihashmap.c
parent2ca3d0343fdda87012cedd096d891627b3c59cb2 (diff)
downloadgnunet-8da07c23a94221fea5d73ebac9a522f72e3adef3.tar.gz
gnunet-8da07c23a94221fea5d73ebac9a522f72e3adef3.zip
fix
Diffstat (limited to 'src/util/container_multihashmap.c')
-rw-r--r--src/util/container_multihashmap.c22
1 files changed, 20 insertions, 2 deletions
diff --git a/src/util/container_multihashmap.c b/src/util/container_multihashmap.c
index 410564a48..41c11bf1b 100644
--- a/src/util/container_multihashmap.c
+++ b/src/util/container_multihashmap.c
@@ -19,7 +19,7 @@
19*/ 19*/
20/** 20/**
21 * @file util/container_multihashmap.c 21 * @file util/container_multihashmap.c
22 * @brief hash map where the same key maybe present multiple times 22 * @brief hash map where the same key may be present multiple times
23 * @author Christian Grothoff 23 * @author Christian Grothoff
24 */ 24 */
25 25
@@ -28,6 +28,9 @@
28#include "gnunet_container_lib.h" 28#include "gnunet_container_lib.h"
29#include "gnunet_crypto_lib.h" 29#include "gnunet_crypto_lib.h"
30 30
31/**
32 *
33 */
31struct MapEntry 34struct MapEntry
32{ 35{
33 GNUNET_HashCode key; 36 GNUNET_HashCode key;
@@ -35,6 +38,9 @@ struct MapEntry
35 struct MapEntry *next; 38 struct MapEntry *next;
36}; 39};
37 40
41/**
42 *
43 */
38struct GNUNET_CONTAINER_MultiHashMap 44struct GNUNET_CONTAINER_MultiHashMap
39{ 45{
40 46
@@ -45,6 +51,7 @@ struct GNUNET_CONTAINER_MultiHashMap
45 unsigned int map_length; 51 unsigned int map_length;
46}; 52};
47 53
54
48struct GNUNET_CONTAINER_MultiHashMap * 55struct GNUNET_CONTAINER_MultiHashMap *
49GNUNET_CONTAINER_multihashmap_create (unsigned int len) 56GNUNET_CONTAINER_multihashmap_create (unsigned int len)
50{ 57{
@@ -58,6 +65,7 @@ GNUNET_CONTAINER_multihashmap_create (unsigned int len)
58 return ret; 65 return ret;
59} 66}
60 67
68
61void 69void
62GNUNET_CONTAINER_multihashmap_destroy (struct GNUNET_CONTAINER_MultiHashMap 70GNUNET_CONTAINER_multihashmap_destroy (struct GNUNET_CONTAINER_MultiHashMap
63 *map) 71 *map)
@@ -84,6 +92,7 @@ idx_of (const struct GNUNET_CONTAINER_MultiHashMap *m,
84 return (*(unsigned int *) key) % m->map_length; 92 return (*(unsigned int *) key) % m->map_length;
85} 93}
86 94
95
87unsigned int 96unsigned int
88GNUNET_CONTAINER_multihashmap_size (const struct GNUNET_CONTAINER_MultiHashMap 97GNUNET_CONTAINER_multihashmap_size (const struct GNUNET_CONTAINER_MultiHashMap
89 *map) 98 *map)
@@ -91,6 +100,7 @@ GNUNET_CONTAINER_multihashmap_size (const struct GNUNET_CONTAINER_MultiHashMap
91 return map->size; 100 return map->size;
92} 101}
93 102
103
94void * 104void *
95GNUNET_CONTAINER_multihashmap_get (const struct GNUNET_CONTAINER_MultiHashMap 105GNUNET_CONTAINER_multihashmap_get (const struct GNUNET_CONTAINER_MultiHashMap
96 *map, const GNUNET_HashCode * key) 106 *map, const GNUNET_HashCode * key)
@@ -107,6 +117,7 @@ GNUNET_CONTAINER_multihashmap_get (const struct GNUNET_CONTAINER_MultiHashMap
107 return NULL; 117 return NULL;
108} 118}
109 119
120
110int 121int
111GNUNET_CONTAINER_multihashmap_iterate (const struct 122GNUNET_CONTAINER_multihashmap_iterate (const struct
112 GNUNET_CONTAINER_MultiHashMap *map, 123 GNUNET_CONTAINER_MultiHashMap *map,
@@ -132,6 +143,7 @@ GNUNET_CONTAINER_multihashmap_iterate (const struct
132 return count; 143 return count;
133} 144}
134 145
146
135int 147int
136GNUNET_CONTAINER_multihashmap_remove (struct GNUNET_CONTAINER_MultiHashMap 148GNUNET_CONTAINER_multihashmap_remove (struct GNUNET_CONTAINER_MultiHashMap
137 *map, const GNUNET_HashCode * key, 149 *map, const GNUNET_HashCode * key,
@@ -163,6 +175,7 @@ GNUNET_CONTAINER_multihashmap_remove (struct GNUNET_CONTAINER_MultiHashMap
163 return GNUNET_NO; 175 return GNUNET_NO;
164} 176}
165 177
178
166int 179int
167GNUNET_CONTAINER_multihashmap_remove_all (struct GNUNET_CONTAINER_MultiHashMap 180GNUNET_CONTAINER_multihashmap_remove_all (struct GNUNET_CONTAINER_MultiHashMap
168 *map, const GNUNET_HashCode * key) 181 *map, const GNUNET_HashCode * key)
@@ -201,6 +214,7 @@ GNUNET_CONTAINER_multihashmap_remove_all (struct GNUNET_CONTAINER_MultiHashMap
201 return ret; 214 return ret;
202} 215}
203 216
217
204int 218int
205GNUNET_CONTAINER_multihashmap_contains (const struct 219GNUNET_CONTAINER_multihashmap_contains (const struct
206 GNUNET_CONTAINER_MultiHashMap *map, 220 GNUNET_CONTAINER_MultiHashMap *map,
@@ -220,6 +234,7 @@ GNUNET_CONTAINER_multihashmap_contains (const struct
220 return GNUNET_NO; 234 return GNUNET_NO;
221} 235}
222 236
237
223static void 238static void
224grow (struct GNUNET_CONTAINER_MultiHashMap *map) 239grow (struct GNUNET_CONTAINER_MultiHashMap *map)
225{ 240{
@@ -245,6 +260,7 @@ grow (struct GNUNET_CONTAINER_MultiHashMap *map)
245 GNUNET_free (old); 260 GNUNET_free (old);
246} 261}
247 262
263
248int 264int
249GNUNET_CONTAINER_multihashmap_put (struct GNUNET_CONTAINER_MultiHashMap *map, 265GNUNET_CONTAINER_multihashmap_put (struct GNUNET_CONTAINER_MultiHashMap *map,
250 const GNUNET_HashCode * key, 266 const GNUNET_HashCode * key,
@@ -284,6 +300,7 @@ GNUNET_CONTAINER_multihashmap_put (struct GNUNET_CONTAINER_MultiHashMap *map,
284 return GNUNET_OK; 300 return GNUNET_OK;
285} 301}
286 302
303
287int 304int
288GNUNET_CONTAINER_multihashmap_get_multiple (const struct 305GNUNET_CONTAINER_multihashmap_get_multiple (const struct
289 GNUNET_CONTAINER_MultiHashMap 306 GNUNET_CONTAINER_MultiHashMap
@@ -309,6 +326,7 @@ GNUNET_CONTAINER_multihashmap_get_multiple (const struct
309 return count; 326 return count;
310} 327}
311 328
329
312void * 330void *
313GNUNET_CONTAINER_multihashmap_get_random (const struct 331GNUNET_CONTAINER_multihashmap_get_random (const struct
314 GNUNET_CONTAINER_MultiHashMap *map) 332 GNUNET_CONTAINER_MultiHashMap *map)
@@ -331,4 +349,4 @@ GNUNET_CONTAINER_multihashmap_get_random (const struct
331 return e->value; 349 return e->value;
332} 350}
333 351
334/* end of multihashmap.c */ 352/* end of container_multihashmap.c */