} s_xbt_swag_t, *xbt_swag_t;
xbt_swag_t xbt_swag_new(size_t offset);
+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);
+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);
#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); \