From a3ee335cd94818b47b2499568ef4bbc95efd37bb Mon Sep 17 00:00:00 2001 From: Nick Wellnhofer Date: Sat, 15 Nov 2014 19:49:26 +0100 Subject: Use named enum types Needed for C++ compatibility. --- src/ast.h | 80 +++++++++++++++++++++++++++++++++--------------------------- src/blocks.c | 6 ++--- src/cmark.c | 6 ++--- 3 files changed, 50 insertions(+), 42 deletions(-) diff --git a/src/ast.h b/src/ast.h index 263b9cb..6c77c68 100644 --- a/src/ast.h +++ b/src/ast.h @@ -15,18 +15,20 @@ extern "C" { #define REFMAP_SIZE 16 #define CMARK_MAX_LINK_LABEL_LENGTH 1000 +typedef enum { + CMARK_INL_STRING, + CMARK_INL_SOFTBREAK, + CMARK_INL_LINEBREAK, + CMARK_INL_CODE, + CMARK_INL_RAW_HTML, + CMARK_INL_EMPH, + CMARK_INL_STRONG, + CMARK_INL_LINK, + CMARK_INL_IMAGE +} cmark_inl_tag; + struct cmark_node_inl { - enum { - CMARK_INL_STRING, - CMARK_INL_SOFTBREAK, - CMARK_INL_LINEBREAK, - CMARK_INL_CODE, - CMARK_INL_RAW_HTML, - CMARK_INL_EMPH, - CMARK_INL_STRONG, - CMARK_INL_LINK, - CMARK_INL_IMAGE - } tag; + cmark_inl_tag tag; union { cmark_chunk literal; struct cmark_node_inl *inlines; @@ -55,19 +57,23 @@ struct cmark_reference_map { typedef struct cmark_reference_map cmark_reference_map; +typedef enum { + bullet, + ordered +} cmark_list_type; + +typedef enum { + period, + parens +} cmark_delim_type; + // Types for blocks struct cmark_ListData { - enum { - bullet, - ordered - } list_type; + cmark_list_type list_type; int marker_offset; int padding; int start; - enum { - period, - parens - } delimiter; + cmark_delim_type delimiter; unsigned char bullet_char; bool tight; }; @@ -79,21 +85,23 @@ struct cmark_FencedCodeData { cmark_strbuf info; }; +typedef enum { + CMARK_BLOCK_DOCUMENT, + CMARK_BLOCK_BQUOTE, + CMARK_BLOCK_LIST, + CMARK_BLOCK_LIST_ITEM, + CMARK_BLOCK_FENCED_CODE, + CMARK_BLOCK_INDENTED_CODE, + CMARK_BLOCK_HTML, + CMARK_BLOCK_PARAGRAPH, + CMARK_BLOCK_ATX_HEADER, + CMARK_BLOCK_SETEXT_HEADER, + CMARK_BLOCK_HRULE, + CMARK_BLOCK_REFERENCE_DEF +} cmark_block_tag; + struct cmark_node_block { - enum { - CMARK_BLOCK_DOCUMENT, - CMARK_BLOCK_BQUOTE, - CMARK_BLOCK_LIST, - CMARK_BLOCK_LIST_ITEM, - CMARK_BLOCK_FENCED_CODE, - CMARK_BLOCK_INDENTED_CODE, - CMARK_BLOCK_HTML, - CMARK_BLOCK_PARAGRAPH, - CMARK_BLOCK_ATX_HEADER, - CMARK_BLOCK_SETEXT_HEADER, - CMARK_BLOCK_HRULE, - CMARK_BLOCK_REFERENCE_DEF - } tag; + cmark_block_tag tag; int start_line; int start_column; int end_line; @@ -132,11 +140,11 @@ struct cmark_node_inl *cmark_make_link(struct cmark_node_inl *label, unsigned ch struct cmark_node_inl* cmark_make_autolink(struct cmark_node_inl* label, cmark_chunk url, int is_email); -struct cmark_node_inl* cmark_make_inlines(int t, struct cmark_node_inl* contents); +struct cmark_node_inl* cmark_make_inlines(cmark_inl_tag t, struct cmark_node_inl* contents); -struct cmark_node_inl* cmark_make_literal(int t, cmark_chunk s); +struct cmark_node_inl* cmark_make_literal(cmark_inl_tag t, cmark_chunk s); -struct cmark_node_inl* cmark_make_simple(int t); +struct cmark_node_inl* cmark_make_simple(cmark_inl_tag t); // Macros for creating various kinds of simple. #define cmark_make_str(s) cmark_make_literal(INL_STRING, s) diff --git a/src/blocks.c b/src/blocks.c index f0560ad..c0c2342 100644 --- a/src/blocks.c +++ b/src/blocks.c @@ -16,7 +16,7 @@ #define peek_at(i, n) (i)->data[n] -static node_block* make_block(int tag, int start_line, int start_column) +static node_block* make_block(cmark_block_tag tag, int start_line, int start_column) { node_block* e; @@ -85,7 +85,7 @@ static bool is_blank(strbuf *s, int offset) return true; } -static inline bool can_contain(int parent_type, int child_type) +static inline bool can_contain(cmark_block_tag parent_type, cmark_block_tag child_type) { return ( parent_type == BLOCK_DOCUMENT || parent_type == BLOCK_BQUOTE || @@ -251,7 +251,7 @@ static void finalize(node_block* b, int line_number) // Add a node_block as child of another. Return pointer to child. static node_block* add_child(node_block* parent, - int block_type, int start_line, int start_column) + cmark_block_tag block_type, int start_line, int start_column) { assert(parent); diff --git a/src/cmark.c b/src/cmark.c index ac0c230..14901af 100644 --- a/src/cmark.c +++ b/src/cmark.c @@ -108,7 +108,7 @@ inline cmark_node_inl* cmark_make_autolink(cmark_node_inl* label, chunk url, int return cmark_make_link(label, clean_autolink(&url, is_email), NULL); } -inline cmark_node_inl* cmark_make_inlines(int t, cmark_node_inl* contents) +inline cmark_node_inl* cmark_make_inlines(cmark_inl_tag t, cmark_node_inl* contents) { cmark_node_inl * e = (cmark_node_inl *)calloc(1, sizeof(*e)); if(e != NULL) { @@ -120,7 +120,7 @@ inline cmark_node_inl* cmark_make_inlines(int t, cmark_node_inl* contents) } // Create an inline with a literal string value. -inline cmark_node_inl* cmark_make_literal(int t, cmark_chunk s) +inline cmark_node_inl* cmark_make_literal(cmark_inl_tag t, cmark_chunk s) { cmark_node_inl * e = (cmark_node_inl *)calloc(1, sizeof(*e)); if(e != NULL) { @@ -132,7 +132,7 @@ inline cmark_node_inl* cmark_make_literal(int t, cmark_chunk s) } // Create an inline with no value. -inline cmark_node_inl* cmark_make_simple(int t) +inline cmark_node_inl* cmark_make_simple(cmark_inl_tag t) { cmark_node_inl* e = (cmark_node_inl *)calloc(1, sizeof(*e)); if(e != NULL) { -- cgit v1.2.3