@@ -246,3 +246,30 @@ void __free_ptr_list(struct ptr_list **listp)
*listp = NULL;
}
+
+
+int ptr_cur_next(struct ptr_cur *cur)
+{
+ do {
+ struct ptr_list *curl = cur->l;
+
+ if (++cur->n < curl->nr)
+ return 1;
+
+ cur->l = curl->next;
+ cur->n = -1;
+ } while (cur->l != cur->h);
+
+ return 0;
+}
+
+int ptr_cur_beg(struct ptr_cur *cur, struct ptr_list *head)
+{
+ if (!head)
+ return 0;
+
+ cur->h = head;
+ cur->l = head;
+ cur->n = -1;
+ return 1;
+}
@@ -51,6 +51,9 @@ extern void __free_ptr_list(struct ptr_list **);
extern int ptr_list_size(struct ptr_list *);
extern int linearize_ptr_list(struct ptr_list *, void **, int);
+int ptr_cur_beg(struct ptr_cur *cur, struct ptr_list *head);
+int ptr_cur_next(struct ptr_cur *cur);
+
/*
* Hey, who said that you can't do overloading in C?
*