summaryrefslogtreecommitdiff
path: root/src/data/stack.c
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2008-10-26 12:51:57 +0000
committerPaul Buetow <paul@buetow.org>2008-10-26 12:51:57 +0000
commita1c3f47491b98cd9026f8e853cc9e72630805c12 (patch)
treeec2ea29640b43f2c1f820fd3fee317beec27d130 /src/data/stack.c
parent380eacd0f4037ec00f37ad5b5e4baa18301cf3dd (diff)
added the "scope" function
Diffstat (limited to 'src/data/stack.c')
-rw-r--r--src/data/stack.c29
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));