#pragma once enum linetype { LT_TEXT, LT_LINK, LT_HEADING, LT_LISTITEM, LT_QUOTE, LT_PRETEXT }; struct line { enum linetype type; char* text; union { char* url; int level; }; }; struct parse_state { char* buf; int preformatted; }; enum parse_result { /* Invalid input, parsing failed */ PARSE_FAIL = -1, /* No output line generated (i.e. preformatting toggle) */ PARSE_NOLINE = 0, /* Output line generated */ PARSE_LINE = 1 }; enum parse_result ParseLine(struct parse_state*, struct line*);