Difference between pages "r6:Function:slist get head" and "r6:Function:slist get head and then next"
m (1 revision imported) |
m (1 revision imported) |
||
Line 4: | Line 4: | ||
==Prototype== | ==Prototype== | ||
struct slist_element * | struct slist_element *slist_get_head_and_next( struct slist_state *ss, struct slist_element **se ); | ||
==Parameters== | ==Parameters== | ||
Line 11: | Line 11: | ||
''struct slist_element **se'' | ''struct slist_element **se'' | ||
: A pointer to a pointer | : A pointer to a pointer which will be set to point to an slist element. When this function is first called, ''*se'' must be NULL (e.g. the value of the pointer pointed to by this argument must be NULL). | ||
==Return Value== | ==Return Value== | ||
When ''*se'' is NULL, ''*se'' is set to point to the head element and the new value of ''*se'' is returned. | |||
When ''*se'' is not NULL, ''*se'' is set to point to the element immediately after ''*se'' and the new value of ''*se'' is returned. This value will be NULL if there was no element after the original value of ''*se''. | |||
==Notes== | ==Notes== | ||
This function is for use in loops. When we first come into the loop, we have set ''*se'' to NULL, so the function sets ''*se'' to the head element. When we loop, because ''*se'' is not NULL, the function there-after sets ''*se'' to the next element in the list. | |||
Without this function, the ''slist_get_head'' function must be used before the loop, with the ''slist_get_next'' function being then used inside the loop, like so; | |||
struct slist_element | |||
*se; | |||
slist_get_head( ss, &se ); | |||
while( se != NULL ) | |||
{ | |||
... | |||
slist_get_next( se, &se ); | |||
} | |||
With it, the loop is rewritten thus; | |||
strut slist_element | |||
*se = NULL; | |||
while( slist_get_head_and_then_next(ss, &se) ) | |||
{ | |||
... | |||
} | |||
==See Also== | ==See Also== | ||
* [[r6:API:SList|SList]] | * [[r6:API:SList|SList]] | ||
* [[r6:Function:slist_get_head|slist_get_head]] | |||
* [[r6:Function:slist_get_next|slist_get_next]] | * [[r6:Function:slist_get_next|slist_get_next]] | ||
Latest revision as of 14:07, 4 January 2015
Source Files
/src/slist/slist_get_and_set.c /inc/liblfds.h
Prototype
struct slist_element *slist_get_head_and_next( struct slist_state *ss, struct slist_element **se );
Parameters
struct slist_state *ss
- An slist state as allocated by slist_new.
struct slist_element **se
- A pointer to a pointer which will be set to point to an slist element. When this function is first called, *se must be NULL (e.g. the value of the pointer pointed to by this argument must be NULL).
Return Value
When *se is NULL, *se is set to point to the head element and the new value of *se is returned.
When *se is not NULL, *se is set to point to the element immediately after *se and the new value of *se is returned. This value will be NULL if there was no element after the original value of *se.
Notes
This function is for use in loops. When we first come into the loop, we have set *se to NULL, so the function sets *se to the head element. When we loop, because *se is not NULL, the function there-after sets *se to the next element in the list.
Without this function, the slist_get_head function must be used before the loop, with the slist_get_next function being then used inside the loop, like so;
struct slist_element *se; slist_get_head( ss, &se ); while( se != NULL ) { ... slist_get_next( se, &se ); }
With it, the loop is rewritten thus;
strut slist_element *se = NULL; while( slist_get_head_and_then_next(ss, &se) ) { ... }