SimGrid  3.9
Versatile Simulation of Distributed Systems
 All Data Structures Functions Variables Typedefs Enumerations Enumerator Groups Pages
SWAG functions

Macros

#define xbt_swag_reset(swag)
 Makes a swag empty.
#define xbt_swag_insert(obj, swag)
#define xbt_swag_offset(var, field)
 Offset computation.

Functions

xbt_swag_t xbt_swag_new (size_t offset)
void xbt_swag_free (xbt_swag_t swag)
void xbt_swag_init (xbt_swag_t swag, size_t offset)
void xbt_swag_insert_at_head (void *obj, xbt_swag_t swag)
void xbt_swag_insert_at_tail (void *obj, xbt_swag_t swag)
void * xbt_swag_remove (void *obj, xbt_swag_t swag)
void * xbt_swag_extract (xbt_swag_t swag)
int xbt_swag_size (xbt_swag_t swag)

Detailed Description

Macro Definition Documentation

#define xbt_swag_reset (   swag)

Makes a swag empty.

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

insert obj in swag

#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_t xbt_swag_new ( size_t  offset)

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);

void xbt_swag_free ( xbt_swag_t  swag)
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.

void xbt_swag_init ( xbt_swag_t  swag,
size_t  offset 
)

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);

void xbt_swag_insert_at_head ( void *  obj,
xbt_swag_t  swag 
)
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

void xbt_swag_insert_at_tail ( void *  obj,
xbt_swag_t  swag 
)
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

void* xbt_swag_remove ( void *  obj,
xbt_swag_t  swag 
)
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

void* xbt_swag_extract ( xbt_swag_t  swag)
Parameters
swaga swag
Returns
an object from the swag
int xbt_swag_size ( xbt_swag_t  swag)
Parameters
swaga swag
Returns
the number of objects in swag