From 009c3847f004fda437dd5376a9452973b1cb913e Mon Sep 17 00:00:00 2001 From: Nick Wellnhofer Date: Sat, 10 Jan 2015 16:10:35 +0100 Subject: Rework iterators * Advance to the next node when calling 'cmark_iter_next', not when calling 'cmark_iter_get_node'. * Add 'cmark_iter_get_event_type' accessor. * Allow deletion of nodes after an 'EXIT' event, or an 'ENTER' event for leaf nodes. --- src/iterator.h | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) (limited to 'src/iterator.h') diff --git a/src/iterator.h b/src/iterator.h index bf53112..027b10b 100644 --- a/src/iterator.h +++ b/src/iterator.h @@ -6,12 +6,16 @@ extern "C" { #endif #include "cmark.h" -#include "node.h" + +typedef struct { + cmark_event_type ev_type; + cmark_node *node; +} cmark_iter_state; struct cmark_iter { - cmark_node *current; cmark_node *root; - cmark_event_type event_type; + cmark_iter_state cur; + cmark_iter_state next; }; #ifdef __cplusplus -- cgit v1.2.3