what you are doing. */
/* This type should be added to a type that is to be used in such a swag */
-/* Whenever a new object with this struct is created, all fields have to be swag to NULL */
+/* Whenever a new object with this struct is created, all fields have
+ to be set to NULL */
+
+#include "xbt/sysdep.h"
typedef struct xbt_swag_hookup {
void *next;
#define xbt_swag_offset(var,field) ((char *)&( (var).field ) - (char *)&(var))
#define xbt_swag_foreach(obj,swag) \
- for((obj)=xbt_swag_getFirst((swag)); \
+ for((obj)=xbt_swag_getFirst((swag)); \
(obj)!=NULL; \
(obj)=xbt_swag_getNext((obj),(swag)->offset))
+
+#define xbt_swag_foreach_safe(obj,obj_next,swag) \
+ for((obj)=xbt_swag_getFirst((swag)), \
+ ((obj)?(obj_next=xbt_swag_getNext((obj),(swag)->offset)): \
+ (obj_next=NULL)); \
+ (obj)!=NULL; \
+ (obj)=obj_next, \
+ ((obj)?(obj_next=xbt_swag_getNext((obj),(swag)->offset)): \
+ (obj_next=NULL)) )