SimGrid  3.14.159
Versatile Simulation of Distributed Systems

Detailed Description

Macros

#define xbt_swag_reset(swag)
 Makes a swag empty. More...
 
#define xbt_swag_insert(obj, swag)
 
#define xbt_swag_getPrev(obj, offset)   (((xbt_swag_hookup_t)(((char *) (obj)) + (offset)))->prev)
 
#define xbt_swag_getNext(obj, offset)   (((xbt_swag_hookup_t)(((char *) (obj)) + (offset)))->next)
 
#define xbt_swag_belongs(obj, swag)   (xbt_swag_getNext((obj), (swag)->offset) || (swag)->tail == (obj))
 
#define xbt_swag_offset(var, field)
 Offset computation. More...
 

Functions

xbt_swag_t xbt_swag_new (size_t offset)
 Creates a new swag. More...
 
void xbt_swag_free (xbt_swag_t swag)
 
void xbt_swag_init (xbt_swag_t swag, size_t offset)
 Creates a new swag. More...
 
void xbt_swag_insert_at_head (void *obj, xbt_swag_t swag)
 
void xbt_swag_insert_at_tail (void *obj, xbt_swag_t swag)
 
voidxbt_swag_remove (void *obj, xbt_swag_t swag)
 
voidxbt_swag_extract (xbt_swag_t swag)
 
int xbt_swag_size (xbt_swag_t swag)
 
static voidxbt_swag_getFirst (xbt_swag_t swag)
 

Macro Definition Documentation

◆ xbt_swag_reset

#define xbt_swag_reset (   swag)

Makes a swag empty.

Parameters
swaga swag

◆ xbt_swag_insert

#define xbt_swag_insert (   obj,
  swag 
)
Parameters
objthe objet to insert in the swag
swaga swag

insert obj in swag

◆ xbt_swag_getPrev

#define xbt_swag_getPrev (   obj,
  offset 
)    (((xbt_swag_hookup_t)(((char *) (obj)) + (offset)))->prev)

◆ xbt_swag_getNext

#define xbt_swag_getNext (   obj,
  offset 
)    (((xbt_swag_hookup_t)(((char *) (obj)) + (offset)))->next)

◆ xbt_swag_belongs

#define xbt_swag_belongs (   obj,
  swag 
)    (xbt_swag_getNext((obj), (swag)->offset) || (swag)->tail == (obj))

◆ xbt_swag_offset

#define xbt_swag_offset (   var,
  field 
)

Offset computation.

  • var a variable of type struct something
  • field a field of struct something
    Returns
    the offset of field in struct something.
    It is very similar to offsetof except that is done at runtime and that you have to declare a variable. Why defining such a macro then ? Because it is portable...

Function Documentation

◆ xbt_swag_new()

xbt_swag_t xbt_swag_new ( size_t  offset)
inline

Creates a new swag.

Parameters
offsetwhere the hookup is located in the structure
See also
xbt_swag_offset

Usage : xbt_swag_new(&obj.setA-&obj);

◆ xbt_swag_free()

void xbt_swag_free ( xbt_swag_t  swag)
inline
Parameters
swagpoor victim

kilkil a swag but not it's content. If you do not understand why xbt_swag_free should not free its content, don't use swags.

◆ xbt_swag_init()

void xbt_swag_init ( xbt_swag_t  swag,
size_t  offset 
)
inline

Creates a new swag.

Parameters
swagthe swag to initialize
offsetwhere the hookup is located in the structure
See also
xbt_swag_offset

Usage : xbt_swag_init(swag,&obj.setA-&obj);

◆ xbt_swag_insert_at_head()

void xbt_swag_insert_at_head ( void obj,
xbt_swag_t  swag 
)
inline
Parameters
objthe objet to insert in the swag
swaga swag

insert (at the head... you probably had a very good reason to do that, I hope you know what you're doing) obj in swag

◆ xbt_swag_insert_at_tail()

void xbt_swag_insert_at_tail ( void obj,
xbt_swag_t  swag 
)
inline
Parameters
objthe objet to insert in the swag
swaga swag

insert (at the tail... you probably had a very good reason to do that, I hope you know what you're doing) obj in swag

◆ xbt_swag_remove()

void* xbt_swag_remove ( void obj,
xbt_swag_t  swag 
)
inline
Parameters
objthe objet to remove from the swag
swaga swag
Returns
obj if it was in the swag and NULL otherwise

removes obj from swag

◆ xbt_swag_extract()

void* xbt_swag_extract ( xbt_swag_t  swag)
Parameters
swaga swag
Returns
an object from the swag

◆ xbt_swag_size()

int xbt_swag_size ( xbt_swag_t  swag)
inline
Parameters
swaga swag
Returns
the number of objects in swag

◆ xbt_swag_getFirst()

static void* xbt_swag_getFirst ( xbt_swag_t  swag)
inlinestatic