Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Cosmetics.
[simgrid.git] / include / xbt / swag.h
index 75ce345..a834d74 100644 (file)
@@ -23,21 +23,23 @@ typedef struct xbt_swag {
 } s_xbt_swag_t, *xbt_swag_t;
 
 xbt_swag_t xbt_swag_new(size_t offset);
-void  xbt_swag_insert(void *obj,xbt_swag_t swag);
-void xbt_swag_extract(void *obj, xbt_swag_t swag);
-int  xbt_swag_size(xbt_swag_t swag);
-int  xbt_swag_belongs(void *obj,xbt_swag_t swag);
+void xbt_swag_init(xbt_swag_t swag, size_t offset);
+void xbt_swag_insert(void *obj, xbt_swag_t swag);
+void *xbt_swag_extract(void *obj, xbt_swag_t swag);
+int xbt_swag_size(xbt_swag_t swag);
+int xbt_swag_belongs(void *obj, xbt_swag_t swag);
 
 static __inline__ void *xbt_swag_getFirst(xbt_swag_t swag)
 {
-  return(swag->head);
+  return (swag->head);
 }
 
 #define xbt_swag_getNext(obj,offset) (((xbt_swag_hookup_t)(((char *) (obj)) + (offset)))->prev)
 #define xbt_swag_getPrev(obj,offset) (((xbt_swag_hookup_t)(((char *) (obj)) + (offset)))->next)
 
+#define xbt_swag_offset(var,field) ((char *)&( (var).field ) - (char *)&(var))
 
 #define xbt_swag_foreach(obj,swag)                            \
-   for(obj=xbt_swag_getFirst(swag);                           \
-       obj!=NULL;                                           \
-       obj=xbt_swag_getNext(obj,swag->offset))
+   for((obj)=xbt_swag_getFirst((swag));                           \
+       (obj)!=NULL;                                           \
+       (obj)=xbt_swag_getNext((obj),(swag)->offset))