From: Fletcher T. Penney Date: Sat, 13 Apr 2019 03:00:20 +0000 (-0400) Subject: UPDATED: Refactor header file inclusion X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=e9b3d7659c94c7a437bdb72264cbb4aa24e6ce08;p=multimarkdown UPDATED: Refactor header file inclusion --- diff --git a/Sources/libMultiMarkdown/beamer.c b/Sources/libMultiMarkdown/beamer.c index 48fd69f..479ac1d 100644 --- a/Sources/libMultiMarkdown/beamer.c +++ b/Sources/libMultiMarkdown/beamer.c @@ -56,6 +56,7 @@ #include "latex.h" #include "beamer.h" #include "parser.h" +#include "stack.h" #define print(x) d_string_append(out, x) #define print_const(x) d_string_append_c_array(out, x, sizeof(x) - 1) diff --git a/Sources/libMultiMarkdown/epub.c b/Sources/libMultiMarkdown/epub.c index e16a51f..b0ff9ef 100644 --- a/Sources/libMultiMarkdown/epub.c +++ b/Sources/libMultiMarkdown/epub.c @@ -82,6 +82,7 @@ #include "html.h" #include "i18n.h" #include "miniz.h" +#include "stack.h" #include "uuid.h" #include "writer.h" #include "zip.h" diff --git a/Sources/libMultiMarkdown/html.c b/Sources/libMultiMarkdown/html.c index 1c6606b..321fb10 100644 --- a/Sources/libMultiMarkdown/html.c +++ b/Sources/libMultiMarkdown/html.c @@ -62,9 +62,11 @@ #include "html.h" #include "i18n.h" #include "libMultiMarkdown.h" +#include "mmd.h" #include "parser.h" #include "token.h" #include "scanners.h" +#include "stack.h" #include "writer.h" @@ -1699,6 +1701,7 @@ parse_citation: break; case PAIR_CRITIC_ADD: + stack_push(scratch->critic_stack, t); // Ignore if we're rejecting if (scratch->extensions & EXT_CRITIC_REJECT) { @@ -1723,6 +1726,7 @@ parse_citation: break; case PAIR_CRITIC_DEL: + stack_push(scratch->critic_stack, t); // Ignore if we're accepting if (scratch->extensions & EXT_CRITIC_ACCEPT) { @@ -1747,6 +1751,7 @@ parse_citation: break; case PAIR_CRITIC_COM: + stack_push(scratch->critic_stack, t); // Ignore if we're rejecting or accepting if ((scratch->extensions & EXT_CRITIC_REJECT) || @@ -1798,6 +1803,8 @@ parse_citation: break; case PAIR_CRITIC_SUB_DEL: + stack_push(scratch->critic_stack, t); + if ((scratch->extensions & EXT_CRITIC) && (t->next) && (t->next->type == PAIR_CRITIC_SUB_ADD)) { @@ -1820,6 +1827,8 @@ parse_citation: break; case PAIR_CRITIC_SUB_ADD: + stack_push(scratch->critic_stack, t); + if ((scratch->extensions & EXT_CRITIC) && (t->prev) && (t->prev->type == PAIR_CRITIC_SUB_DEL)) { diff --git a/Sources/libMultiMarkdown/html.h b/Sources/libMultiMarkdown/html.h index 3a0bc84..0ffbdb9 100644 --- a/Sources/libMultiMarkdown/html.h +++ b/Sources/libMultiMarkdown/html.h @@ -56,7 +56,8 @@ #ifndef HTML_MULTIMARKDOWN_H #define HTML_MULTIMARKDOWN_H -#include "d_string.h" +typedef struct DString DString; + #include "token.h" #include "writer.h" diff --git a/Sources/libMultiMarkdown/itmz-reader.c b/Sources/libMultiMarkdown/itmz-reader.c index b3160ad..9fdbcd9 100644 --- a/Sources/libMultiMarkdown/itmz-reader.c +++ b/Sources/libMultiMarkdown/itmz-reader.c @@ -104,6 +104,7 @@ #include #include +#include "d_string.h" #include "mmd.h" #include "itmz-reader.h" #include "itmz-lexer.h" diff --git a/Sources/libMultiMarkdown/itmz.c b/Sources/libMultiMarkdown/itmz.c index ea58719..a06834c 100644 --- a/Sources/libMultiMarkdown/itmz.c +++ b/Sources/libMultiMarkdown/itmz.c @@ -108,6 +108,7 @@ #include "itmz.h" #include "parser.h" +#include "stack.h" #include "uuid.h" #include "zip.h" diff --git a/Sources/libMultiMarkdown/latex.c b/Sources/libMultiMarkdown/latex.c index 936b79f..12c0392 100644 --- a/Sources/libMultiMarkdown/latex.c +++ b/Sources/libMultiMarkdown/latex.c @@ -62,6 +62,8 @@ #include "latex.h" #include "parser.h" #include "scanners.h" +#include "stack.h" + #define print(x) d_string_append(out, x) #define print_const(x) d_string_append_c_array(out, x, sizeof(x) - 1) diff --git a/Sources/libMultiMarkdown/mmd.c b/Sources/libMultiMarkdown/mmd.c index 7728d2d..e33480e 100644 --- a/Sources/libMultiMarkdown/mmd.c +++ b/Sources/libMultiMarkdown/mmd.c @@ -126,6 +126,7 @@ mmd_engine * mmd_engine_create(DString * d, unsigned long extensions) { e->quotes_lang = ENGLISH; e->abbreviation_stack = stack_new(0); + e->critic_stack = stack_new(0); e->citation_stack = stack_new(0); e->definition_stack = stack_new(0); e->footnote_stack = stack_new(0); @@ -309,6 +310,7 @@ void mmd_engine_reset(mmd_engine * e) { } // Reset other stacks + e->critic_stack->size = 0; e->definition_stack->size = 0; e->header_stack->size = 0; e->table_stack->size = 0; @@ -339,6 +341,7 @@ void mmd_engine_free(mmd_engine * e, bool freeDString) { // Takedown stack_free(e->abbreviation_stack); + stack_free(e->critic_stack); stack_free(e->citation_stack); stack_free(e->footnote_stack); stack_free(e->glossary_stack); diff --git a/Sources/libMultiMarkdown/mmd.h b/Sources/libMultiMarkdown/mmd.h index 026b17f..25d5690 100644 --- a/Sources/libMultiMarkdown/mmd.h +++ b/Sources/libMultiMarkdown/mmd.h @@ -56,13 +56,10 @@ #ifndef MMD_MULTIMARKDOWN_H #define MMD_MULTIMARKDOWN_H -#include "d_string.h" #include "libMultiMarkdown.h" -#include "stack.h" -#include "token.h" -#include "token_pairs.h" #include "uthash.h" +typedef struct token_pair_engine toke_pair_engine; #define kMaxParseRecursiveDepth 1000 //!< Maximum recursion depth when parsing -- to prevent stack overflow with "pathologic" input @@ -75,13 +72,14 @@ struct mmd_engine { bool allow_meta; - token_pair_engine * pairings1; - token_pair_engine * pairings2; - token_pair_engine * pairings3; - token_pair_engine * pairings4; + struct token_pair_engine * pairings1; + struct token_pair_engine * pairings2; + struct token_pair_engine * pairings3; + struct token_pair_engine * pairings4; stack * abbreviation_stack; stack * citation_stack; + stack * critic_stack; stack * definition_stack; stack * footnote_stack; stack * glossary_stack; @@ -113,7 +111,7 @@ void is_list_loose(token * list); struct asset { char * url; char * asset_path; - UT_hash_handle hh; + struct UT_hash_handle hh; }; typedef struct asset asset; diff --git a/Sources/libMultiMarkdown/opendocument-content.c b/Sources/libMultiMarkdown/opendocument-content.c index ba0dd68..9a30999 100644 --- a/Sources/libMultiMarkdown/opendocument-content.c +++ b/Sources/libMultiMarkdown/opendocument-content.c @@ -107,9 +107,13 @@ #include #include "char.h" +#include "d_string.h" #include "opendocument-content.h" +#include "mmd.h" #include "parser.h" #include "scanners.h" +#include "stack.h" +#include "token.h" #define print(x) d_string_append(out, x) diff --git a/Sources/libMultiMarkdown/opml-reader.c b/Sources/libMultiMarkdown/opml-reader.c index bfa6d72..0fd2bf8 100644 --- a/Sources/libMultiMarkdown/opml-reader.c +++ b/Sources/libMultiMarkdown/opml-reader.c @@ -104,6 +104,7 @@ #include #include +#include "d_string.h" #include "mmd.h" #include "opml-reader.h" #include "opml-lexer.h" diff --git a/Sources/libMultiMarkdown/opml.c b/Sources/libMultiMarkdown/opml.c index e2ea8b4..0025d0f 100644 --- a/Sources/libMultiMarkdown/opml.c +++ b/Sources/libMultiMarkdown/opml.c @@ -108,6 +108,8 @@ #include "opml.h" #include "parser.h" +#include "stack.h" + #define print(x) d_string_append(out, x) #define print_const(x) d_string_append_c_array(out, x, sizeof(x) - 1) diff --git a/Sources/libMultiMarkdown/parser.c b/Sources/libMultiMarkdown/parser.c index 1ce6a98..1ae42aa 100644 --- a/Sources/libMultiMarkdown/parser.c +++ b/Sources/libMultiMarkdown/parser.c @@ -32,6 +32,7 @@ #include "libMultiMarkdown.h" #include "mmd.h" #include "parser.h" + #include "stack.h" #include "token.h" /**************** End of %include directives **********************************/ /* These constants specify the various numeric values for terminal symbols diff --git a/Sources/libMultiMarkdown/parser.y b/Sources/libMultiMarkdown/parser.y index 8ff3bd2..c8c4d08 100644 --- a/Sources/libMultiMarkdown/parser.y +++ b/Sources/libMultiMarkdown/parser.y @@ -380,6 +380,7 @@ para ::= defs. #include "libMultiMarkdown.h" #include "mmd.h" #include "parser.h" + #include "stack.h" #include "token.h" } diff --git a/Sources/libMultiMarkdown/textbundle.c b/Sources/libMultiMarkdown/textbundle.c index 44e67ba..b1f4637 100644 --- a/Sources/libMultiMarkdown/textbundle.c +++ b/Sources/libMultiMarkdown/textbundle.c @@ -126,7 +126,9 @@ #include "file.h" #include "miniz.h" +#include "stack.h" #include "textbundle.h" +#include "token.h" #include "writer.h" #include "zip.h" diff --git a/Sources/libMultiMarkdown/writer.c b/Sources/libMultiMarkdown/writer.c index 0696230..2a7e0c3 100644 --- a/Sources/libMultiMarkdown/writer.c +++ b/Sources/libMultiMarkdown/writer.c @@ -73,6 +73,7 @@ #include "opml.h" #include "parser.h" #include "scanners.h" +#include "stack.h" #include "token.h" #include "uuid.h" #include "writer.h" @@ -257,6 +258,8 @@ scratch_pad * scratch_pad_new(mmd_engine * e, short format) { p->asset_hash = NULL; p->store_assets = 0; p->remember_assets = 0; + + p->critic_stack = e->critic_stack; } return p; diff --git a/Sources/libMultiMarkdown/writer.h b/Sources/libMultiMarkdown/writer.h index fbe97c8..45b9395 100644 --- a/Sources/libMultiMarkdown/writer.h +++ b/Sources/libMultiMarkdown/writer.h @@ -60,17 +60,24 @@ #include "CuTest.h" #endif -#include "d_string.h" +#include "libMultiMarkdown.h" +#include "uthash.h" + +/* + #include "d_string.h" #include "mmd.h" #include "stack.h" #include "token.h" #include "uthash.h" - +*/ #define kMaxExportRecursiveDepth 1000 //!< Maximum recursion depth when exporting token tree -- to prevent stack overflow with "pathologic" input #define kMaxTableColumns 48 //!< Maximum number of table columns for specifying alignment +typedef struct asset asset; +typedef struct stack stack; + typedef struct { struct link * link_hash; struct meta * meta_hash; @@ -130,6 +137,8 @@ typedef struct { struct asset * asset_hash; short store_assets; short remember_assets; + + stack * critic_stack; } scratch_pad;