QtBase  v6.3.1
Classes | Macros | Typedefs | Enumerations | Functions
md4c.c File Reference
#include "md4c.h"
#include <limits.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
Include dependency graph for md4c.c:

Go to the source code of this file.

Classes

struct  MD_MARKCHAIN_tag
 
struct  MD_CTX_tag
 
struct  MD_LINE_ANALYSIS_tag
 
struct  MD_LINE_tag
 
struct  MD_VERBATIMLINE_tag
 
struct  MD_UNICODE_FOLD_INFO_tag
 
struct  MD_ATTRIBUTE_BUILD_tag
 
struct  MD_REF_DEF_tag
 
struct  MD_REF_DEF_LIST_tag
 
struct  MD_LINK_ATTR_tag
 
struct  MD_MARK_tag
 
struct  MD_BLOCK_tag
 
struct  MD_CONTAINER_tag
 

Macros

#define inline
 
#define MD4C_USE_UTF8
 
#define _T(x)   x
 
#define SIZEOF_ARRAY(a)   (sizeof(a) / sizeof(a[0]))
 
#define STRINGIZE_(x)   #x
 
#define STRINGIZE(x)   STRINGIZE_(x)
 
#define TRUE   1
 
#define FALSE   0
 
#define MD_LOG(msg)
 
#define MD_ASSERT(cond)   do {} while(0)
 
#define MD_UNREACHABLE()   do {} while(0)
 
#define MD_FALLTHROUGH()   ((void)0)
 
#define MD_UNUSED(x)   ((void)x)
 
#define CHAR   MD_CHAR
 
#define SZ   MD_SIZE
 
#define OFF   MD_OFFSET
 
#define PTR_CHAIN   (ctx->mark_chains[0])
 
#define TABLECELLBOUNDARIES   (ctx->mark_chains[1])
 
#define ASTERISK_OPENERS_extraword_mod3_0   (ctx->mark_chains[2])
 
#define ASTERISK_OPENERS_extraword_mod3_1   (ctx->mark_chains[3])
 
#define ASTERISK_OPENERS_extraword_mod3_2   (ctx->mark_chains[4])
 
#define ASTERISK_OPENERS_intraword_mod3_0   (ctx->mark_chains[5])
 
#define ASTERISK_OPENERS_intraword_mod3_1   (ctx->mark_chains[6])
 
#define ASTERISK_OPENERS_intraword_mod3_2   (ctx->mark_chains[7])
 
#define UNDERSCORE_OPENERS   (ctx->mark_chains[8])
 
#define TILDE_OPENERS_1   (ctx->mark_chains[9])
 
#define TILDE_OPENERS_2   (ctx->mark_chains[10])
 
#define BRACKET_OPENERS   (ctx->mark_chains[11])
 
#define DOLLAR_OPENERS   (ctx->mark_chains[12])
 
#define OPENERS_CHAIN_FIRST   2
 
#define OPENERS_CHAIN_LAST   12
 
#define CH(off)   (ctx->text[(off)])
 
#define STR(off)   (ctx->text + (off))
 
#define ISIN_(ch, ch_min, ch_max)   ((ch_min) <= (unsigned)(ch) && (unsigned)(ch) <= (ch_max))
 
#define ISANYOF_(ch, palette)   ((ch) != _T('\0') && md_strchr((palette), (ch)) != NULL)
 
#define ISANYOF2_(ch, ch1, ch2)   ((ch) == (ch1) || (ch) == (ch2))
 
#define ISANYOF3_(ch, ch1, ch2, ch3)   ((ch) == (ch1) || (ch) == (ch2) || (ch) == (ch3))
 
#define ISASCII_(ch)   ((unsigned)(ch) <= 127)
 
#define ISBLANK_(ch)   (ISANYOF2_((ch), _T(' '), _T('\t')))
 
#define ISNEWLINE_(ch)   (ISANYOF2_((ch), _T('\r'), _T('\n')))
 
#define ISWHITESPACE_(ch)   (ISBLANK_(ch) || ISANYOF2_((ch), _T('\v'), _T('\f')))
 
#define ISCNTRL_(ch)   ((unsigned)(ch) <= 31 || (unsigned)(ch) == 127)
 
#define ISPUNCT_(ch)   (ISIN_(ch, 33, 47) || ISIN_(ch, 58, 64) || ISIN_(ch, 91, 96) || ISIN_(ch, 123, 126))
 
#define ISUPPER_(ch)   (ISIN_(ch, _T('A'), _T('Z')))
 
#define ISLOWER_(ch)   (ISIN_(ch, _T('a'), _T('z')))
 
#define ISALPHA_(ch)   (ISUPPER_(ch) || ISLOWER_(ch))
 
#define ISDIGIT_(ch)   (ISIN_(ch, _T('0'), _T('9')))
 
#define ISXDIGIT_(ch)   (ISDIGIT_(ch) || ISIN_(ch, _T('A'), _T('F')) || ISIN_(ch, _T('a'), _T('f')))
 
#define ISALNUM_(ch)   (ISALPHA_(ch) || ISDIGIT_(ch))
 
#define ISANYOF(off, palette)   ISANYOF_(CH(off), (palette))
 
#define ISANYOF2(off, ch1, ch2)   ISANYOF2_(CH(off), (ch1), (ch2))
 
#define ISANYOF3(off, ch1, ch2, ch3)   ISANYOF3_(CH(off), (ch1), (ch2), (ch3))
 
#define ISASCII(off)   ISASCII_(CH(off))
 
#define ISBLANK(off)   ISBLANK_(CH(off))
 
#define ISNEWLINE(off)   ISNEWLINE_(CH(off))
 
#define ISWHITESPACE(off)   ISWHITESPACE_(CH(off))
 
#define ISCNTRL(off)   ISCNTRL_(CH(off))
 
#define ISPUNCT(off)   ISPUNCT_(CH(off))
 
#define ISUPPER(off)   ISUPPER_(CH(off))
 
#define ISLOWER(off)   ISLOWER_(CH(off))
 
#define ISALPHA(off)   ISALPHA_(CH(off))
 
#define ISDIGIT(off)   ISDIGIT_(CH(off))
 
#define ISXDIGIT(off)   ISXDIGIT_(CH(off))
 
#define ISALNUM(off)   ISALNUM_(CH(off))
 
#define md_strchr   strchr
 
#define MD_CHECK(func)
 
#define MD_TEMP_BUFFER(sz)
 
#define MD_ENTER_BLOCK(type, arg)
 
#define MD_LEAVE_BLOCK(type, arg)
 
#define MD_ENTER_SPAN(type, arg)
 
#define MD_LEAVE_SPAN(type, arg)
 
#define MD_TEXT(type, str, size)
 
#define MD_TEXT_INSECURE(type, str, size)
 
#define R(cp_min, cp_max)   ((cp_min) | 0x40000000), ((cp_max) | 0x80000000)
 
#define S(cp)   (cp)
 
#define R(cp_min, cp_max)   ((cp_min) | 0x40000000), ((cp_max) | 0x80000000)
 
#define S(cp)   (cp)
 
#define R(cp_min, cp_max)   ((cp_min) | 0x40000000), ((cp_max) | 0x80000000)
 
#define S(cp)   (cp)
 
#define IS_UTF8_LEAD1(byte)   ((unsigned char)(byte) <= 0x7f)
 
#define IS_UTF8_LEAD2(byte)   (((unsigned char)(byte) & 0xe0) == 0xc0)
 
#define IS_UTF8_LEAD3(byte)   (((unsigned char)(byte) & 0xf0) == 0xe0)
 
#define IS_UTF8_LEAD4(byte)   (((unsigned char)(byte) & 0xf8) == 0xf0)
 
#define IS_UTF8_TAIL(byte)   (((unsigned char)(byte) & 0xc0) == 0x80)
 
#define ISUNICODEWHITESPACE_(codepoint)   md_is_unicode_whitespace__(codepoint)
 
#define ISUNICODEWHITESPACE(off)   md_is_unicode_whitespace__(md_decode_utf8__(STR(off), ctx->size - (off), NULL))
 
#define ISUNICODEWHITESPACEBEFORE(off)   md_is_unicode_whitespace__(md_decode_utf8_before__(ctx, off))
 
#define ISUNICODEPUNCT(off)   md_is_unicode_punct__(md_decode_utf8__(STR(off), ctx->size - (off), NULL))
 
#define ISUNICODEPUNCTBEFORE(off)   md_is_unicode_punct__(md_decode_utf8_before__(ctx, off))
 
#define MD_BUILD_ATTR_NO_ESCAPES   0x0001
 
#define MD_FNV1A_BASE   2166136261U
 
#define MD_FNV1A_PRIME   16777619U
 
#define MD_MARK_POTENTIAL_OPENER   0x01 /* Maybe opener. */
 
#define MD_MARK_POTENTIAL_CLOSER   0x02 /* Maybe closer. */
 
#define MD_MARK_OPENER   0x04 /* Definitely opener. */
 
#define MD_MARK_CLOSER   0x08 /* Definitely closer. */
 
#define MD_MARK_RESOLVED   0x10 /* Resolved in any definite way. */
 
#define MD_MARK_EMPH_INTRAWORD   0x20 /* Helper for the "rule of 3". */
 
#define MD_MARK_EMPH_MOD3_0   0x40
 
#define MD_MARK_EMPH_MOD3_1   0x80
 
#define MD_MARK_EMPH_MOD3_2   (0x40 | 0x80)
 
#define MD_MARK_EMPH_MOD3_MASK   (0x40 | 0x80)
 
#define MD_MARK_AUTOLINK   0x20 /* Distinguisher for '<', '>'. */
 
#define MD_MARK_VALIDPERMISSIVEAUTOLINK   0x20 /* For permissive autolinks. */
 
#define PUSH_MARK_()
 
#define PUSH_MARK(ch_, beg_, end_, flags_)
 
#define MD_ROLLBACK_ALL   0
 
#define MD_ROLLBACK_CROSSING   1
 
#define CODESPAN_MARK_MAXLEN   32
 
#define IS_MARK_CHAR(off)   (ctx->mark_char_map[(unsigned char) CH(off)])
 
#define MD_BLOCK_CONTAINER_OPENER   0x01
 
#define MD_BLOCK_CONTAINER_CLOSER   0x02
 
#define MD_BLOCK_CONTAINER   (MD_BLOCK_CONTAINER_OPENER | MD_BLOCK_CONTAINER_CLOSER)
 
#define MD_BLOCK_LOOSE_LIST   0x04
 
#define MD_BLOCK_SETEXT_HEADER   0x08
 
#define X(name)   { _T(name), (sizeof(name)-1) / sizeof(CHAR) }
 
#define Xend   { NULL, 0 }
 

Typedefs

typedef struct MD_MARK_tag MD_MARK
 
typedef struct MD_BLOCK_tag MD_BLOCK
 
typedef struct MD_CONTAINER_tag MD_CONTAINER
 
typedef struct MD_REF_DEF_tag MD_REF_DEF
 
typedef struct MD_MARKCHAIN_tag MD_MARKCHAIN
 
typedef struct MD_CTX_tag MD_CTX
 
typedef enum MD_LINETYPE_tag MD_LINETYPE
 
typedef struct MD_LINE_ANALYSIS_tag MD_LINE_ANALYSIS
 
typedef struct MD_LINE_tag MD_LINE
 
typedef struct MD_VERBATIMLINE_tag MD_VERBATIMLINE
 
typedef struct MD_UNICODE_FOLD_INFO_tag MD_UNICODE_FOLD_INFO
 
typedef struct MD_ATTRIBUTE_BUILD_tag MD_ATTRIBUTE_BUILD
 
typedef struct MD_REF_DEF_LIST_tag MD_REF_DEF_LIST
 
typedef struct MD_LINK_ATTR_tag MD_LINK_ATTR
 

Enumerations

enum  MD_LINETYPE_tag {
  MD_LINE_BLANK , MD_LINE_HR , MD_LINE_ATXHEADER , MD_LINE_SETEXTHEADER ,
  MD_LINE_SETEXTUNDERLINE , MD_LINE_INDENTEDCODE , MD_LINE_FENCEDCODE , MD_LINE_HTML ,
  MD_LINE_TEXT , MD_LINE_TABLE , MD_LINE_TABLEUNDERLINE
}
 

Functions

int md_parse (const MD_CHAR *text, MD_SIZE size, const MD_PARSER *parser, void *userdata)
 

Macro Definition Documentation

◆ _T

#define _T (   x)    x

Definition at line 61 of file md4c.c.

◆ ASTERISK_OPENERS_extraword_mod3_0

#define ASTERISK_OPENERS_extraword_mod3_0   (ctx->mark_chains[2])

Definition at line 184 of file md4c.c.

◆ ASTERISK_OPENERS_extraword_mod3_1

#define ASTERISK_OPENERS_extraword_mod3_1   (ctx->mark_chains[3])

Definition at line 185 of file md4c.c.

◆ ASTERISK_OPENERS_extraword_mod3_2

#define ASTERISK_OPENERS_extraword_mod3_2   (ctx->mark_chains[4])

Definition at line 186 of file md4c.c.

◆ ASTERISK_OPENERS_intraword_mod3_0

#define ASTERISK_OPENERS_intraword_mod3_0   (ctx->mark_chains[5])

Definition at line 187 of file md4c.c.

◆ ASTERISK_OPENERS_intraword_mod3_1

#define ASTERISK_OPENERS_intraword_mod3_1   (ctx->mark_chains[6])

Definition at line 188 of file md4c.c.

◆ ASTERISK_OPENERS_intraword_mod3_2

#define ASTERISK_OPENERS_intraword_mod3_2   (ctx->mark_chains[7])

Definition at line 189 of file md4c.c.

◆ BRACKET_OPENERS

#define BRACKET_OPENERS   (ctx->mark_chains[11])

Definition at line 193 of file md4c.c.

◆ CH

#define CH (   off)    (ctx->text[(off)])

Definition at line 280 of file md4c.c.

◆ CHAR

#define CHAR   MD_CHAR

Definition at line 123 of file md4c.c.

◆ CODESPAN_MARK_MAXLEN

#define CODESPAN_MARK_MAXLEN   32

Definition at line 2737 of file md4c.c.

◆ DOLLAR_OPENERS

#define DOLLAR_OPENERS   (ctx->mark_chains[12])

Definition at line 194 of file md4c.c.

◆ FALSE

#define FALSE   0

Definition at line 72 of file md4c.c.

◆ inline

#define inline

Definition at line 45 of file md4c.c.

◆ IS_MARK_CHAR

#define IS_MARK_CHAR (   off)    (ctx->mark_char_map[(unsigned char) CH(off)])

◆ IS_UTF8_LEAD1

#define IS_UTF8_LEAD1 (   byte)    ((unsigned char)(byte) <= 0x7f)

Definition at line 779 of file md4c.c.

◆ IS_UTF8_LEAD2

#define IS_UTF8_LEAD2 (   byte)    (((unsigned char)(byte) & 0xe0) == 0xc0)

Definition at line 780 of file md4c.c.

◆ IS_UTF8_LEAD3

#define IS_UTF8_LEAD3 (   byte)    (((unsigned char)(byte) & 0xf0) == 0xe0)

Definition at line 781 of file md4c.c.

◆ IS_UTF8_LEAD4

#define IS_UTF8_LEAD4 (   byte)    (((unsigned char)(byte) & 0xf8) == 0xf0)

Definition at line 782 of file md4c.c.

◆ IS_UTF8_TAIL

#define IS_UTF8_TAIL (   byte)    (((unsigned char)(byte) & 0xc0) == 0x80)

Definition at line 783 of file md4c.c.

◆ ISALNUM

#define ISALNUM (   off)    ISALNUM_(CH(off))

Definition at line 316 of file md4c.c.

◆ ISALNUM_

#define ISALNUM_ (   ch)    (ISALPHA_(ch) || ISDIGIT_(ch))

Definition at line 300 of file md4c.c.

◆ ISALPHA

#define ISALPHA (   off)    ISALPHA_(CH(off))

Definition at line 313 of file md4c.c.

◆ ISALPHA_

#define ISALPHA_ (   ch)    (ISUPPER_(ch) || ISLOWER_(ch))

Definition at line 297 of file md4c.c.

◆ ISANYOF

#define ISANYOF (   off,
  palette 
)    ISANYOF_(CH(off), (palette))

Definition at line 302 of file md4c.c.

◆ ISANYOF2

#define ISANYOF2 (   off,
  ch1,
  ch2 
)    ISANYOF2_(CH(off), (ch1), (ch2))

Definition at line 303 of file md4c.c.

◆ ISANYOF2_

#define ISANYOF2_ (   ch,
  ch1,
  ch2 
)    ((ch) == (ch1) || (ch) == (ch2))

Definition at line 287 of file md4c.c.

◆ ISANYOF3

#define ISANYOF3 (   off,
  ch1,
  ch2,
  ch3 
)    ISANYOF3_(CH(off), (ch1), (ch2), (ch3))

Definition at line 304 of file md4c.c.

◆ ISANYOF3_

#define ISANYOF3_ (   ch,
  ch1,
  ch2,
  ch3 
)    ((ch) == (ch1) || (ch) == (ch2) || (ch) == (ch3))

Definition at line 288 of file md4c.c.

◆ ISANYOF_

#define ISANYOF_ (   ch,
  palette 
)    ((ch) != _T('\0') && md_strchr((palette), (ch)) != NULL)

Definition at line 286 of file md4c.c.

◆ ISASCII

#define ISASCII (   off)    ISASCII_(CH(off))

Definition at line 305 of file md4c.c.

◆ ISASCII_

#define ISASCII_ (   ch)    ((unsigned)(ch) <= 127)

Definition at line 289 of file md4c.c.

◆ ISBLANK

#define ISBLANK (   off)    ISBLANK_(CH(off))

Definition at line 306 of file md4c.c.

◆ ISBLANK_

#define ISBLANK_ (   ch)    (ISANYOF2_((ch), _T(' '), _T('\t')))

Definition at line 290 of file md4c.c.

◆ ISCNTRL

#define ISCNTRL (   off)    ISCNTRL_(CH(off))

Definition at line 309 of file md4c.c.

◆ ISCNTRL_

#define ISCNTRL_ (   ch)    ((unsigned)(ch) <= 31 || (unsigned)(ch) == 127)

Definition at line 293 of file md4c.c.

◆ ISDIGIT

#define ISDIGIT (   off)    ISDIGIT_(CH(off))

Definition at line 314 of file md4c.c.

◆ ISDIGIT_

#define ISDIGIT_ (   ch)    (ISIN_(ch, _T('0'), _T('9')))

Definition at line 298 of file md4c.c.

◆ ISIN_

#define ISIN_ (   ch,
  ch_min,
  ch_max 
)    ((ch_min) <= (unsigned)(ch) && (unsigned)(ch) <= (ch_max))

Definition at line 285 of file md4c.c.

◆ ISLOWER

#define ISLOWER (   off)    ISLOWER_(CH(off))

Definition at line 312 of file md4c.c.

◆ ISLOWER_

#define ISLOWER_ (   ch)    (ISIN_(ch, _T('a'), _T('z')))

Definition at line 296 of file md4c.c.

◆ ISNEWLINE

#define ISNEWLINE (   off)    ISNEWLINE_(CH(off))

Definition at line 307 of file md4c.c.

◆ ISNEWLINE_

#define ISNEWLINE_ (   ch)    (ISANYOF2_((ch), _T('\r'), _T('\n')))

Definition at line 291 of file md4c.c.

◆ ISPUNCT

#define ISPUNCT (   off)    ISPUNCT_(CH(off))

Definition at line 310 of file md4c.c.

◆ ISPUNCT_

#define ISPUNCT_ (   ch)    (ISIN_(ch, 33, 47) || ISIN_(ch, 58, 64) || ISIN_(ch, 91, 96) || ISIN_(ch, 123, 126))

Definition at line 294 of file md4c.c.

◆ ISUNICODEPUNCT

#define ISUNICODEPUNCT (   off)    md_is_unicode_punct__(md_decode_utf8__(STR(off), ctx->size - (off), NULL))

Definition at line 851 of file md4c.c.

◆ ISUNICODEPUNCTBEFORE

#define ISUNICODEPUNCTBEFORE (   off)    md_is_unicode_punct__(md_decode_utf8_before__(ctx, off))

Definition at line 852 of file md4c.c.

◆ ISUNICODEWHITESPACE

#define ISUNICODEWHITESPACE (   off)    md_is_unicode_whitespace__(md_decode_utf8__(STR(off), ctx->size - (off), NULL))

Definition at line 848 of file md4c.c.

◆ ISUNICODEWHITESPACE_

#define ISUNICODEWHITESPACE_ (   codepoint)    md_is_unicode_whitespace__(codepoint)

Definition at line 847 of file md4c.c.

◆ ISUNICODEWHITESPACEBEFORE

#define ISUNICODEWHITESPACEBEFORE (   off)    md_is_unicode_whitespace__(md_decode_utf8_before__(ctx, off))

Definition at line 849 of file md4c.c.

◆ ISUPPER

#define ISUPPER (   off)    ISUPPER_(CH(off))

Definition at line 311 of file md4c.c.

◆ ISUPPER_

#define ISUPPER_ (   ch)    (ISIN_(ch, _T('A'), _T('Z')))

Definition at line 295 of file md4c.c.

◆ ISWHITESPACE

#define ISWHITESPACE (   off)    ISWHITESPACE_(CH(off))

Definition at line 308 of file md4c.c.

◆ ISWHITESPACE_

#define ISWHITESPACE_ (   ch)    (ISBLANK_(ch) || ISANYOF2_((ch), _T('\v'), _T('\f')))

Definition at line 292 of file md4c.c.

◆ ISXDIGIT

#define ISXDIGIT (   off)    ISXDIGIT_(CH(off))

Definition at line 315 of file md4c.c.

◆ ISXDIGIT_

#define ISXDIGIT_ (   ch)    (ISDIGIT_(ch) || ISIN_(ch, _T('A'), _T('F')) || ISIN_(ch, _T('a'), _T('f')))

Definition at line 299 of file md4c.c.

◆ MD4C_USE_UTF8

#define MD4C_USE_UTF8

Definition at line 51 of file md4c.c.

◆ MD_ASSERT

#define MD_ASSERT (   cond)    do {} while(0)

Definition at line 100 of file md4c.c.

◆ MD_BLOCK_CONTAINER

#define MD_BLOCK_CONTAINER   (MD_BLOCK_CONTAINER_OPENER | MD_BLOCK_CONTAINER_CLOSER)

Definition at line 4568 of file md4c.c.

◆ MD_BLOCK_CONTAINER_CLOSER

#define MD_BLOCK_CONTAINER_CLOSER   0x02

Definition at line 4567 of file md4c.c.

◆ MD_BLOCK_CONTAINER_OPENER

#define MD_BLOCK_CONTAINER_OPENER   0x01

Definition at line 4566 of file md4c.c.

◆ MD_BLOCK_LOOSE_LIST

#define MD_BLOCK_LOOSE_LIST   0x04

Definition at line 4569 of file md4c.c.

◆ MD_BLOCK_SETEXT_HEADER

#define MD_BLOCK_SETEXT_HEADER   0x08

Definition at line 4570 of file md4c.c.

◆ MD_BUILD_ATTR_NO_ESCAPES

#define MD_BUILD_ATTR_NO_ESCAPES   0x0001

Definition at line 1346 of file md4c.c.

◆ MD_CHECK

#define MD_CHECK (   func)
Value:
do { \
ret = (func); \
if(ret < 0) \
goto abort; \
} while(0)
GLenum func
Definition: qopenglext.h:663

Definition at line 382 of file md4c.c.

◆ MD_ENTER_BLOCK

#define MD_ENTER_BLOCK (   type,
  arg 
)
Value:
do { \
ret = ctx->parser.enter_block((type), (arg), ctx->userdata); \
if(ret != 0) { \
MD_LOG("Aborted from enter_block() callback."); \
goto abort; \
} \
} while(0)
GLenum type
Definition: qopengl.h:270
SSL_CTX int(*) void arg)

Definition at line 409 of file md4c.c.

◆ MD_ENTER_SPAN

#define MD_ENTER_SPAN (   type,
  arg 
)
Value:
do { \
ret = ctx->parser.enter_span((type), (arg), ctx->userdata); \
if(ret != 0) { \
MD_LOG("Aborted from enter_span() callback."); \
goto abort; \
} \
} while(0)

Definition at line 427 of file md4c.c.

◆ MD_FALLTHROUGH

#define MD_FALLTHROUGH ( )    ((void)0)

Definition at line 111 of file md4c.c.

◆ MD_FNV1A_BASE

#define MD_FNV1A_BASE   2166136261U

Definition at line 1486 of file md4c.c.

◆ MD_FNV1A_PRIME

#define MD_FNV1A_PRIME   16777619U

Definition at line 1487 of file md4c.c.

◆ MD_LEAVE_BLOCK

#define MD_LEAVE_BLOCK (   type,
  arg 
)
Value:
do { \
ret = ctx->parser.leave_block((type), (arg), ctx->userdata); \
if(ret != 0) { \
MD_LOG("Aborted from leave_block() callback."); \
goto abort; \
} \
} while(0)

Definition at line 418 of file md4c.c.

◆ MD_LEAVE_SPAN

#define MD_LEAVE_SPAN (   type,
  arg 
)
Value:
do { \
ret = ctx->parser.leave_span((type), (arg), ctx->userdata); \
if(ret != 0) { \
MD_LOG("Aborted from leave_span() callback."); \
goto abort; \
} \
} while(0)

Definition at line 436 of file md4c.c.

◆ MD_LOG

#define MD_LOG (   msg)
Value:
do { \
if(ctx->parser.debug_log != NULL) \
ctx->parser.debug_log((msg), ctx->userdata); \
} while(0)
const char msg[]
Definition: arch.cpp:46
#define NULL
Definition: ftobjs.h:61

Definition at line 75 of file md4c.c.

◆ MD_MARK_AUTOLINK

#define MD_MARK_AUTOLINK   0x20 /* Distinguisher for '<', '>'. */

Definition at line 2466 of file md4c.c.

◆ MD_MARK_CLOSER

#define MD_MARK_CLOSER   0x08 /* Definitely closer. */

Definition at line 2457 of file md4c.c.

◆ MD_MARK_EMPH_INTRAWORD

#define MD_MARK_EMPH_INTRAWORD   0x20 /* Helper for the "rule of 3". */

Definition at line 2461 of file md4c.c.

◆ MD_MARK_EMPH_MOD3_0

#define MD_MARK_EMPH_MOD3_0   0x40

Definition at line 2462 of file md4c.c.

◆ MD_MARK_EMPH_MOD3_1

#define MD_MARK_EMPH_MOD3_1   0x80

Definition at line 2463 of file md4c.c.

◆ MD_MARK_EMPH_MOD3_2

#define MD_MARK_EMPH_MOD3_2   (0x40 | 0x80)

Definition at line 2464 of file md4c.c.

◆ MD_MARK_EMPH_MOD3_MASK

#define MD_MARK_EMPH_MOD3_MASK   (0x40 | 0x80)

Definition at line 2465 of file md4c.c.

◆ MD_MARK_OPENER

#define MD_MARK_OPENER   0x04 /* Definitely opener. */

Definition at line 2456 of file md4c.c.

◆ MD_MARK_POTENTIAL_CLOSER

#define MD_MARK_POTENTIAL_CLOSER   0x02 /* Maybe closer. */

Definition at line 2455 of file md4c.c.

◆ MD_MARK_POTENTIAL_OPENER

#define MD_MARK_POTENTIAL_OPENER   0x01 /* Maybe opener. */

Definition at line 2454 of file md4c.c.

◆ MD_MARK_RESOLVED

#define MD_MARK_RESOLVED   0x10 /* Resolved in any definite way. */

Definition at line 2458 of file md4c.c.

◆ MD_MARK_VALIDPERMISSIVEAUTOLINK

#define MD_MARK_VALIDPERMISSIVEAUTOLINK   0x20 /* For permissive autolinks. */

Definition at line 2467 of file md4c.c.

◆ MD_ROLLBACK_ALL

#define MD_ROLLBACK_ALL   0

Definition at line 2605 of file md4c.c.

◆ MD_ROLLBACK_CROSSING

#define MD_ROLLBACK_CROSSING   1

Definition at line 2606 of file md4c.c.

◆ md_strchr

#define md_strchr   strchr

Definition at line 322 of file md4c.c.

◆ MD_TEMP_BUFFER

#define MD_TEMP_BUFFER (   sz)
Value:
do { \
if(sz > ctx->alloc_buffer) { \
CHAR* new_buffer; \
SZ new_size = ((sz) + (sz) / 2 + 128) & ~127; \
\
new_buffer = realloc(ctx->buffer, new_size); \
if(new_buffer == NULL) { \
MD_LOG("realloc() failed."); \
ret = -1; \
goto abort; \
} \
\
ctx->buffer = new_buffer; \
ctx->alloc_buffer = new_size; \
} \
} while(0)

Definition at line 390 of file md4c.c.

◆ MD_TEXT

#define MD_TEXT (   type,
  str,
  size 
)
Value:
do { \
if(size > 0) { \
ret = ctx->parser.text((type), (str), (size), ctx->userdata); \
if(ret != 0) { \
MD_LOG("Aborted from text() callback."); \
goto abort; \
} \
} \
} while(0)
QString str
[2]
GLenum GLuint GLintptr GLsizeiptr size
[1]

Definition at line 445 of file md4c.c.

◆ MD_TEXT_INSECURE

#define MD_TEXT_INSECURE (   type,
  str,
  size 
)
Value:
do { \
if(size > 0) { \
ret = md_text_with_null_replacement(ctx, type, str, size); \
if(ret != 0) { \
MD_LOG("Aborted from text() callback."); \
goto abort; \
} \
} \
} while(0)

Definition at line 456 of file md4c.c.

◆ MD_UNREACHABLE

#define MD_UNREACHABLE ( )    do {} while(0)

Definition at line 101 of file md4c.c.

◆ MD_UNUSED

#define MD_UNUSED (   x)    ((void)x)

Definition at line 115 of file md4c.c.

◆ OFF

#define OFF   MD_OFFSET

Definition at line 125 of file md4c.c.

◆ OPENERS_CHAIN_FIRST

#define OPENERS_CHAIN_FIRST   2

Definition at line 195 of file md4c.c.

◆ OPENERS_CHAIN_LAST

#define OPENERS_CHAIN_LAST   12

Definition at line 196 of file md4c.c.

◆ PTR_CHAIN

#define PTR_CHAIN   (ctx->mark_chains[0])

Definition at line 182 of file md4c.c.

◆ PUSH_MARK

#define PUSH_MARK (   ch_,
  beg_,
  end_,
  flags_ 
)
Value:
do { \
PUSH_MARK_(); \
mark->beg = (beg_); \
mark->end = (end_); \
mark->prev = -1; \
mark->next = -1; \
mark->ch = (char)(ch_); \
mark->flags = (flags_); \
} while(0)

Definition at line 2529 of file md4c.c.

◆ PUSH_MARK_

#define PUSH_MARK_ ( )
Value:
do { \
mark = md_push_mark(ctx); \
if(mark == NULL) { \
ret = -1; \
goto abort; \
} \
} while(0)

Definition at line 2520 of file md4c.c.

◆ R [1/3]

#define R (   cp_min,
  cp_max 
)    ((cp_min) | 0x40000000), ((cp_max) | 0x80000000)

◆ R [2/3]

#define R (   cp_min,
  cp_max 
)    ((cp_min) | 0x40000000), ((cp_max) | 0x80000000)

◆ R [3/3]

#define R (   cp_min,
  cp_max 
)    ((cp_min) | 0x40000000), ((cp_max) | 0x80000000)

◆ S [1/3]

#define S (   cp)    (cp)

◆ S [2/3]

#define S (   cp)    (cp)

◆ S [3/3]

#define S (   cp)    (cp)

◆ SIZEOF_ARRAY

#define SIZEOF_ARRAY (   a)    (sizeof(a) / sizeof(a[0]))

Definition at line 65 of file md4c.c.

◆ STR

#define STR (   off)    (ctx->text + (off))

Definition at line 281 of file md4c.c.

◆ STRINGIZE

#define STRINGIZE (   x)    STRINGIZE_(x)

Definition at line 68 of file md4c.c.

◆ STRINGIZE_

#define STRINGIZE_ (   x)    #x

Definition at line 67 of file md4c.c.

◆ SZ

#define SZ   MD_SIZE

Definition at line 124 of file md4c.c.

◆ TABLECELLBOUNDARIES

#define TABLECELLBOUNDARIES   (ctx->mark_chains[1])

Definition at line 183 of file md4c.c.

◆ TILDE_OPENERS_1

#define TILDE_OPENERS_1   (ctx->mark_chains[9])

Definition at line 191 of file md4c.c.

◆ TILDE_OPENERS_2

#define TILDE_OPENERS_2   (ctx->mark_chains[10])

Definition at line 192 of file md4c.c.

◆ TRUE

#define TRUE   1

Definition at line 71 of file md4c.c.

◆ UNDERSCORE_OPENERS

#define UNDERSCORE_OPENERS   (ctx->mark_chains[8])

Definition at line 190 of file md4c.c.

◆ X

#define X (   name)    { _T(name), (sizeof(name)-1) / sizeof(CHAR) }

◆ Xend

#define Xend   { NULL, 0 }

Typedef Documentation

◆ MD_ATTRIBUTE_BUILD

Definition at line 1324 of file md4c.c.

◆ MD_BLOCK

typedef struct MD_BLOCK_tag MD_BLOCK

Definition at line 1 of file md4c.c.

◆ MD_CONTAINER

Definition at line 1 of file md4c.c.

◆ MD_CTX

typedef struct MD_CTX_tag MD_CTX

Definition at line 1 of file md4c.c.

◆ MD_LINE

typedef struct MD_LINE_tag MD_LINE

Definition at line 1 of file md4c.c.

◆ MD_LINE_ANALYSIS

Definition at line 1 of file md4c.c.

◆ MD_LINETYPE

Definition at line 1 of file md4c.c.

◆ MD_LINK_ATTR

Definition at line 1796 of file md4c.c.

◆ MD_MARK

typedef struct MD_MARK_tag MD_MARK

Definition at line 1 of file md4c.c.

◆ MD_MARKCHAIN

Definition at line 1 of file md4c.c.

◆ MD_REF_DEF

typedef struct MD_REF_DEF_tag MD_REF_DEF

Definition at line 1 of file md4c.c.

◆ MD_REF_DEF_LIST

Definition at line 1582 of file md4c.c.

◆ MD_UNICODE_FOLD_INFO

Definition at line 352 of file md4c.c.

◆ MD_VERBATIMLINE

Definition at line 1 of file md4c.c.

Enumeration Type Documentation

◆ MD_LINETYPE_tag

Enumerator
MD_LINE_BLANK 
MD_LINE_HR 
MD_LINE_ATXHEADER 
MD_LINE_SETEXTHEADER 
MD_LINE_SETEXTUNDERLINE 
MD_LINE_INDENTEDCODE 
MD_LINE_FENCEDCODE 
MD_LINE_HTML 
MD_LINE_TEXT 
MD_LINE_TABLE 
MD_LINE_TABLEUNDERLINE 

Definition at line 237 of file md4c.c.

Function Documentation

◆ md_parse()

int md_parse ( const MD_CHAR text,
MD_SIZE  size,
const MD_PARSER parser,
void userdata 
)

Definition at line 6340 of file md4c.c.