diff options
| author | Paul Buetow <paul@buetow.org> | 2008-10-26 12:51:57 +0000 |
|---|---|---|
| committer | Paul Buetow <paul@buetow.org> | 2008-10-26 12:51:57 +0000 |
| commit | a1c3f47491b98cd9026f8e853cc9e72630805c12 (patch) | |
| tree | ec2ea29640b43f2c1f820fd3fee317beec27d130 /src/data/stack.c | |
| parent | 380eacd0f4037ec00f37ad5b5e4baa18301cf3dd (diff) | |
added the "scope" function
Diffstat (limited to 'src/data/stack.c')
| -rw-r--r-- | src/data/stack.c | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/src/data/stack.c b/src/data/stack.c index 5997c86..e7d5766 100644 --- a/src/data/stack.c +++ b/src/data/stack.c @@ -173,6 +173,35 @@ stack_iterate(Stack *p_stack, void (*func)(void *p_void)) { } } +void +stack_iterate2(Stack *p_stack, void (*func)(void *p_void, void *p_void2), + void *p_void_arg) { + if (!p_stack) + return; + + StackElem *p_elem = p_stack->p_first; + + while (p_elem) { + (*func)(p_elem->p_val, p_void_arg); + p_elem = p_elem->p_next; + } +} + +void +stack_iterate_level(Stack *p_stack, void (*func)(void *p_void, + int i_level)) { + if (!p_stack) + return; + + StackElem *p_elem = p_stack->p_first; + + int i_level = 0; + while (p_elem) { + (*func)(p_elem->p_val, i_level++); + p_elem = p_elem->p_next; + } +} + StackIterator* stackiterator_new(Stack *p_stack) { StackIterator *p_iter = malloc(sizeof(StackIterator)); |
