|
SimGrid
3.10
Versatile Simulation of Distributed Systems
|
Functions | |
| xbt_fifo_item_t | xbt_fifo_push (xbt_fifo_t, void *) |
| void * | xbt_fifo_pop (xbt_fifo_t) |
| xbt_fifo_item_t | xbt_fifo_unshift (xbt_fifo_t, void *) |
| void * | xbt_fifo_shift (xbt_fifo_t) |
| int | xbt_fifo_size (xbt_fifo_t) |
| int | xbt_fifo_is_in (xbt_fifo_t, void *) |
| xbt_fifo_item_t | xbt_fifo_search_item (xbt_fifo_t f, int_f_pvoid_pvoid_t cmp_fun, void *closure) |
| Search the given element in the fifo using a comparison function. | |
| xbt_fifo_item_t xbt_fifo_push | ( | xbt_fifo_t | l, |
| void * | t | ||
| ) |
Push
| l | list |
| t | element |
Add an object at the tail of the list
| void* xbt_fifo_pop | ( | xbt_fifo_t | l | ) |
Pop
| l | list |
Removes and returns the object stored at the tail of the list. Returns NULL if the list is empty.
| xbt_fifo_item_t xbt_fifo_unshift | ( | xbt_fifo_t | l, |
| void * | t | ||
| ) |
| l | list |
| t | element |
Add an object at the head of the list
| void* xbt_fifo_shift | ( | xbt_fifo_t | l | ) |
Shift
| l | list |
Removes and returns the object stored at the head of the list. Returns NULL if the list is empty.
| int xbt_fifo_size | ( | xbt_fifo_t | f | ) |
| f | a list |
| int xbt_fifo_is_in | ( | xbt_fifo_t | f, |
| void * | content | ||
| ) |
| f | a list |
| content | an object |
| xbt_fifo_item_t xbt_fifo_search_item | ( | xbt_fifo_t | f, |
| int_f_pvoid_pvoid_t | cmp_fun, | ||
| void * | closure | ||
| ) |
Search the given element in the fifo using a comparison function.
This function allows to search an item with a user provided function instead of the pointer comparison used elsewhere in this module. Assume for example that you have a fifo of strings. You cannot use xbt_fifo_remove() to remove, say, "TOTO" from it because internally, xbt_fifo_remove() will do something like "if (item->content == "toto"), then remove it". And the pointer to the item content and the pointer to "toto" will never match. As a solution, the current function provides a way to search elements that are semanticaly equivalent instead of only syntaxically. So, removing "Toto" from a fifo can be achieved this way:
int my_comparison_function(void *searched, void *seen) {
return !strcmp(searched, seen);
}
xbt_fifo_remove_item(fifo,
xbt_fifo_search_item(fifo, my_comparison_function, "Toto"));
| f | a fifo list |
| cmp_fun | the comparison function. Prototype: void *a,void *b -> int. Semantic: returns true iff a=b |
| closure | the element to search. It will be provided as first argument to each call of cmp_fun |