gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[GNUnet-SVN] r14247 - gnunet/src/include


From: gnunet
Subject: [GNUnet-SVN] r14247 - gnunet/src/include
Date: Mon, 24 Jan 2011 21:53:23 +0100

Author: grothoff
Date: 2011-01-24 21:53:23 +0100 (Mon, 24 Jan 2011)
New Revision: 14247

Modified:
   gnunet/src/include/gnunet_container_lib.h
Log:
assert element in/not-in list

Modified: gnunet/src/include/gnunet_container_lib.h
===================================================================
--- gnunet/src/include/gnunet_container_lib.h   2011-01-24 15:49:50 UTC (rev 
14246)
+++ gnunet/src/include/gnunet_container_lib.h   2011-01-24 20:53:23 UTC (rev 
14247)
@@ -617,6 +617,23 @@
 
 
 /**
+ * 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);
+
+
+/**
  * Store a key-value pair in the map.
  *
  * @param map the map
@@ -690,6 +707,8 @@
  * @param element element to insert
  */
 #define GNUNET_CONTAINER_DLL_insert(head,tail,element) do { \
+  GNUNET_assert ( ( (element)->prev == NULL) && ((head) != (element))); \
+  GNUNET_assert ( ( (element)->next == NULL) && ((tail) != (element))); \
   (element)->next = (head); \
   (element)->prev = NULL; \
   if ((tail) == NULL) \
@@ -698,6 +717,7 @@
     (head)->prev = element; \
   (head) = (element); } while (0)
 
+
 /**
  * Insert an element at the tail of a DLL. Assumes that head, tail and
  * element are structs with prev and next fields.
@@ -707,6 +727,8 @@
  * @param element element to insert
  */
 #define GNUNET_CONTAINER_DLL_insert_tail(head,tail,element) do { \
+  GNUNET_assert ( ( (element)->prev == NULL) && ((head) != (element))); \
+  GNUNET_assert ( ( (element)->next == NULL) && ((tail) != (element))); \
   (element)->prev = (tail); \
   (element)->next = NULL; \
   if ((head) == NULL) \
@@ -715,6 +737,7 @@
     (tail)->next = element; \
   (tail) = (element); } while (0)
 
+
 /**
  * Insert an element into a DLL after the given other element.  Insert
  * at the head if the other element is NULL.
@@ -725,6 +748,8 @@
  * @param element element to insert
  */
 #define GNUNET_CONTAINER_DLL_insert_after(head,tail,other,element) do { \
+  GNUNET_assert ( ( (element)->prev == NULL) && ((head) != (element))); \
+  GNUNET_assert ( ( (element)->next == NULL) && ((tail) != (element))); \
   (element)->prev = (other); \
   if (NULL == other) \
     { \
@@ -741,6 +766,7 @@
   else \
     (element)->next->prev = (element); } while (0)
 
+
 /**
  * Insert an element into a DLL before the given other element.  Insert
  * at the tail if the other element is NULL.
@@ -751,6 +777,8 @@
  * @param element element to insert
  */
 #define GNUNET_CONTAINER_DLL_insert_before(head,tail,other,element) do { \
+  GNUNET_assert ( ( (element)->prev == NULL) && ((head) != (element))); \
+  GNUNET_assert ( ( (element)->next == NULL) && ((tail) != (element))); \
   (element)->next = (other); \
   if (NULL == other) \
     { \
@@ -778,6 +806,8 @@
  * @param element element to remove
  */
 #define GNUNET_CONTAINER_DLL_remove(head,tail,element) do { \
+  GNUNET_assert ( ( (element)->prev != NULL) || ((head) == (element))); \
+  GNUNET_assert ( ( (element)->next != NULL) || ((tail) == (element))); \
   if ((element)->prev == NULL) \
     (head) = (element)->next;  \
   else \




reply via email to

[Prev in Thread] Current Thread [Next in Thread]