+\endcode
+*/
+ typedef s_xbt_swag_hookup_t *xbt_swag_hookup_t;
+
+
+ typedef struct xbt_swag {
+ void *head;
+ void *tail;
+ size_t offset;
+ int count;
+ } s_xbt_swag_t, *xbt_swag_t;
+/**< A typical swag */
+/* @} */
+
+/** @defgroup XBT_swag_func SWAG functions
+ * @ingroup XBT_swag
+
+ * @{
+ */
+
+XBT_PUBLIC(xbt_swag_t) xbt_swag_new(size_t offset);
+XBT_PUBLIC(void) xbt_swag_free(xbt_swag_t swag);
+XBT_INLINE XBT_PUBLIC(void) xbt_swag_init(xbt_swag_t swag, size_t offset);
+XBT_PUBLIC(void) xbt_swag_insert(void *obj, xbt_swag_t swag);
+XBT_PUBLIC(void) xbt_swag_insert_at_head(void *obj, xbt_swag_t swag);
+XBT_PUBLIC(void) xbt_swag_insert_at_tail(void *obj, xbt_swag_t swag);
+XBT_PUBLIC(void *) xbt_swag_remove(void *obj, xbt_swag_t swag);
+XBT_PUBLIC(void *) xbt_swag_extract(xbt_swag_t swag);
+XBT_PUBLIC(int) xbt_swag_size(xbt_swag_t swag);