| #ifndef CMARK_RENDER_H |
| #define CMARK_RENDER_H |
| |
| #ifdef __cplusplus |
| extern "C" { |
| #endif |
| |
| #include <stdlib.h> |
| #include "buffer.h" |
| #include "chunk.h" |
| |
| typedef enum { LITERAL, NORMAL, TITLE, URL } cmark_escaping; |
| |
| struct cmark_renderer { |
| cmark_strbuf *buffer; |
| cmark_strbuf *prefix; |
| int column; |
| int width; |
| int need_cr; |
| bufsize_t last_breakable; |
| bool begin_line; |
| bool no_wrap; |
| bool in_tight_list_item; |
| void (*outc)(struct cmark_renderer *, cmark_escaping, int32_t, unsigned char); |
| void (*cr)(struct cmark_renderer *); |
| void (*blankline)(struct cmark_renderer *); |
| void (*out)(struct cmark_renderer *, const char *, bool, cmark_escaping); |
| }; |
| |
| typedef struct cmark_renderer cmark_renderer; |
| |
| void cmark_render_ascii(cmark_renderer *renderer, const char *s); |
| |
| void cmark_render_code_point(cmark_renderer *renderer, uint32_t c); |
| |
| char *cmark_render(cmark_node *root, int options, int width, |
| void (*outc)(cmark_renderer *, cmark_escaping, int32_t, |
| unsigned char), |
| int (*render_node)(cmark_renderer *renderer, |
| cmark_node *node, |
| cmark_event_type ev_type, int options)); |
| |
| #ifdef __cplusplus |
| } |
| #endif |
| |
| #endif |