X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/dff9e15c44ab6340d27215957c56fa72fad246a2..a77b8884fa58cf932bad343ff7141233d088b95d:/include/xbt/swag.h diff --git a/include/xbt/swag.h b/include/xbt/swag.h index de5d2071ba..8a14e7e510 100644 --- a/include/xbt/swag.h +++ b/include/xbt/swag.h @@ -1,6 +1,5 @@ -/* $Id$ */ - -/* Copyright (c) 2004 Arnaud Legrand. All rights reserved. */ +/* Copyright (c) 2004, 2005, 2006, 2007, 2008, 2009, 2010. The SimGrid Team. + * All rights reserved. */ /* This program is free software; you can redistribute it and/or modify it * under the terms of the license (GNU LGPL) which comes with this package. */ @@ -89,22 +88,27 @@ typedef struct foo { XBT_PUBLIC(xbt_swag_t) xbt_swag_new(size_t offset); XBT_PUBLIC(void) xbt_swag_free(xbt_swag_t swag); -XBT_PUBLIC(void) xbt_swag_init(xbt_swag_t swag, size_t offset); +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); -XBT_PUBLIC(int) xbt_swag_belongs(void *obj, xbt_swag_t swag); - static XBT_INLINE void *xbt_swag_getFirst(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) + +static XBT_INLINE int xbt_swag_belongs(void *obj, xbt_swag_t swag) { + return ((xbt_swag_getNext(obj, swag->offset)) || (xbt_swag_getPrev(obj, swag->offset)) + || (swag->head == obj)); +} + +static XBT_INLINE void *xbt_swag_getFirst(xbt_swag_t swag) { 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) /** * \brief Offset computation