Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Initialization that should be useless because of the calloc but seem to help valgrind...
[simgrid.git] / src / xbt / swag.c
index dd83783..1b2fb7b 100644 (file)
 #include "xbt/error.h"
 #include "xbt/swag.h"
 
-/** \defgroup XBT_swag A O(1) set datatype
- *  \brief a O(1) set based on linked lists
- *
- *  Warning, this module is done to be efficient and performs tons of
- *  cast and dirty things. So avoid using it unless you really know
- *  what you are doing. It is basically a fifo but with restrictions so that 
- *  it can be used as a set. Any operation (add, remove, belongs) is O(1) and 
- *  no call to malloc/free is done.
- */
-
 XBT_LOG_NEW_DEFAULT_SUBCATEGORY(swag,xbt,"Swag : O(1) set library");
 
 #define PREV(obj,offset) xbt_swag_getPrev(obj,offset)
 #define NEXT(obj,offset) xbt_swag_getNext(obj,offset)
 
-/** \name Functions 
- *  \ingroup XBT_swag
- */
-/* @{ */
 
 /** Creates a new swag.
  * \param offset where the hookup is located in the structure
@@ -45,7 +31,10 @@ xbt_swag_t xbt_swag_new(size_t offset)
 {
   xbt_swag_t swag = xbt_new0(s_xbt_swag_t, 1);
 
+  swag->tail = NULL;
+  swag->head = NULL;
   swag->offset = offset;
+  swag->count = 0;
 
   return swag;
 }
@@ -70,7 +59,10 @@ void xbt_swag_free(xbt_swag_t swag)
  */
 void xbt_swag_init(xbt_swag_t swag, size_t offset)
 {
+  swag->tail = NULL;
+  swag->head = NULL;
   swag->offset = offset;
+  swag->count = 0;
 }
 
 
@@ -239,4 +231,3 @@ int xbt_swag_belongs(void *obj, xbt_swag_t swag)
   return ((NEXT(obj, swag->offset)) || (PREV(obj, swag->offset))
          || (swag->head == obj));
 }
-/* @} */