summaryrefslogtreecommitdiff
path: root/src/node.h
diff options
context:
space:
mode:
authorNick Wellnhofer <wellnhofer@aevum.de>2020-01-19 00:51:02 +0100
committerJohn MacFarlane <jgm@berkeley.edu>2020-01-23 08:25:54 -0800
commitb0a4cfa36e99c27dd2b20be8f8888fa7721bad58 (patch)
tree528ace24d0526b0dd647bcd774f348e677b78a9f /src/node.h
parent75b48c5938f5984dbcf79a579d15c9cbd6447d12 (diff)
Use C string instead of chunk for literal text
Use zero-terminated C strings and a separate length field instead of cmark_chunks. Literal inline text will now be copied from the parent block's content buffer, slowing the benchmark down by 10-15%. The node struct never references memory of other nodes now, fixing #309. Node accessors don't have to check for delayed creation of C strings, so parsing and iterating all literals using the public API should actually be faster than before.
Diffstat (limited to 'src/node.h')
-rw-r--r--src/node.h8
1 files changed, 6 insertions, 2 deletions
diff --git a/src/node.h b/src/node.h
index b557f12..fbf449c 100644
--- a/src/node.h
+++ b/src/node.h
@@ -10,7 +10,11 @@ extern "C" {
#include "cmark.h"
#include "buffer.h"
-#include "chunk.h"
+
+typedef struct {
+ unsigned char *data;
+ bufsize_t len;
+} cmark_literal;
typedef struct {
cmark_list_type list_type;
@@ -72,7 +76,7 @@ struct cmark_node {
uint16_t flags;
union {
- cmark_chunk literal;
+ cmark_literal literal;
cmark_list list;
cmark_code code;
cmark_heading heading;