From 91642ceee7a2a2c05d9561c0e22b2f15111ac603 Mon Sep 17 00:00:00 2001 From: John MacFarlane Date: Thu, 13 Nov 2014 09:29:51 -0800 Subject: Added ast.[c,h] for AST definitions and AST-manipulating functions. --- src/ast.c | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 src/ast.c (limited to 'src/ast.c') diff --git a/src/ast.c b/src/ast.c new file mode 100644 index 0000000..1622568 --- /dev/null +++ b/src/ast.c @@ -0,0 +1,30 @@ +#include +#include +#include "buffer.h" +#include "ast.h" +#include "inlines.h" +#include "references.h" + +// Free a node_block list and any children. +void cmark_free_nodes(node_block *e) +{ + node_block * next; + while (e != NULL) { + free_inlines(e->inline_content); + strbuf_free(&e->string_content); + if (e->tag == BLOCK_FENCED_CODE) { + strbuf_free(&e->as.code.info); + } else if (e->tag == BLOCK_DOCUMENT) { + reference_map_free(e->as.document.refmap); + } + if (e->last_child) { + // Splice children into list + e->last_child->next = e->next; + e->next = e->children; + } + next = e->next; + free(e); + e = next; + } +} + -- cgit v1.2.3