blob: 48d12dfe990babc38fb1474ecce886f4e10d9539 [file] [log] [blame]
#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