SimGrid: Cursors on dynar

SimGrid 3.10 Versatile Simulation of Distributed Systems

- Home page
- Online documentation
- Dev's Corner

All Data Structures Functions Variables Typedefs Enumerations Enumerator Groups Pages
Macros | Functions
Cursors on dynar
Dynar: generic dynamic array

## Macros
#define | xbt_dynar_foreach(_dynar, _cursor, _data)
| Iterates over the whole dynar.

## Functions
void | xbt_dynar_cursor_rm (xbt_dynar_t dynar, unsigned int *const cursor)
| Removes and free the entry pointed by the cursor.

## Detailed Description

Cursors are used to iterate over the structure. Never add elements to the DynArr during the traversal. To remove elements, use the xbt_dynar_cursor_rm() function.

Do not call these function directly, but only within the xbt_dynar_foreach macro.

## Macro Definition Documentation

#define xbt_dynar_foreach | ( |  | _dynar,
|  |  | _cursor,
|  |  | _data
| ) |  |

Iterates over the whole dynar.

    @param _dynar what to iterate over
    @param _cursor an integer used as cursor
    @param _data

Here is an example of usage:

xbt_dynar_t dyn;
unsigned int cpt;
string *str;
xbt_dynar_foreach (dyn,cpt,str) {
printf("Seen %s\n",str);
}

Note that underneath, that's a simple for loop with no real black magic involved. It's perfectly safe to interrupt a foreach with a break or a return statement.

## Function Documentation

void xbt_dynar_cursor_rm | ( | xbt_dynar_t | dynar,
|  | unsigned int *const | cursor
| ) |  |

Removes and free the entry pointed by the cursor.

This function can be used while traversing without problem.