| #ifndef CMARK_NODE_H |
| #define CMARK_NODE_H |
| |
| #ifdef __cplusplus |
| extern "C" { |
| #endif |
| |
| #include <stdio.h> |
| #include <stdint.h> |
| |
| #include "cmark.h" |
| #include "buffer.h" |
| #include "chunk.h" |
| |
| typedef struct { |
| cmark_list_type list_type; |
| int marker_offset; |
| int padding; |
| int start; |
| cmark_delim_type delimiter; |
| unsigned char bullet_char; |
| bool tight; |
| } cmark_list; |
| |
| typedef struct { |
| cmark_chunk info; |
| cmark_chunk literal; |
| int fence_length; |
| /* fence_offset must be 0-3, so we can use int8_t */ |
| int8_t fence_offset; |
| unsigned char fence_char; |
| bool fenced; |
| } cmark_code; |
| |
| typedef struct { |
| int level; |
| bool setext; |
| } cmark_header; |
| |
| typedef struct { |
| cmark_chunk url; |
| cmark_chunk title; |
| } cmark_link; |
| |
| struct cmark_node { |
| struct cmark_node *next; |
| struct cmark_node *prev; |
| struct cmark_node *parent; |
| struct cmark_node *first_child; |
| struct cmark_node *last_child; |
| |
| void *user_data; |
| |
| int start_line; |
| int start_column; |
| int end_line; |
| int end_column; |
| |
| cmark_node_type type; |
| |
| bool open; |
| bool last_line_blank; |
| |
| cmark_strbuf string_content; |
| |
| union { |
| cmark_chunk literal; |
| cmark_list list; |
| cmark_code code; |
| cmark_header header; |
| cmark_link link; |
| int html_block_type; |
| } as; |
| }; |
| |
| CMARK_EXPORT int cmark_node_check(cmark_node *node, FILE *out); |
| |
| #ifdef __cplusplus |
| } |
| #endif |
| |
| #endif |