idx_of (const struct GNUNET_CONTAINER_MultiHashMap *m,
const GNUNET_HashCode * key)
{
+ GNUNET_assert (m!=NULL);
return (*(unsigned int *) key) % m->map_length;
}
GNUNET_HashCode kc;
count = 0;
- GNUNET_assert(map!=NULL);
-
+ GNUNET_assert(map != NULL);
for (i = 0; i < map->map_length; i++)
{
n = map->map[i];
}
+/**
+ * Check if the map contains the given value under the given
+ * key.
+ *
+ * @param map the map
+ * @param key the key to test if a value exists for it
+ * @param value value to test for
+ * @return GNUNET_YES if such a value exists,
+ * GNUNET_NO if not
+ */
+int GNUNET_CONTAINER_multihashmap_contains_value (const struct
+ GNUNET_CONTAINER_MultiHashMap
+ *map,
+ const GNUNET_HashCode * key,
+ const void *value)
+{
+ struct MapEntry *e;
+
+ e = map->map[idx_of (map, key)];
+ while (e != NULL)
+ {
+ if ( (0 == memcmp (key, &e->key, sizeof (GNUNET_HashCode))) &&
+ (e->value == value) )
+ return GNUNET_YES;
+ e = e->next;
+ }
+ return GNUNET_NO;
+}
+
+
/**
* Grow the given map to a more appropriate size.
*