cmark

My personal build of CMark ✏️

houdini.h (1486B)

 1 #ifndef CMARK_HOUDINI_H
 2 #define CMARK_HOUDINI_H
 3 
 4 #ifdef __cplusplus
 5 extern "C" {
 6 #endif
 7 
 8 #include <stdint.h>
 9 #include "config.h"
10 #include "buffer.h"
11 
12 #ifdef HAVE___BUILTIN_EXPECT
13 #define likely(x) __builtin_expect((x), 1)
14 #define unlikely(x) __builtin_expect((x), 0)
15 #else
16 #define likely(x) (x)
17 #define unlikely(x) (x)
18 #endif
19 
20 #ifdef HOUDINI_USE_LOCALE
21 #define _isxdigit(c) isxdigit(c)
22 #define _isdigit(c) isdigit(c)
23 #else
24 /*
25  * Helper _isdigit methods -- do not trust the current locale
26  * */
27 #define _isxdigit(c) (strchr("0123456789ABCDEFabcdef", (c)) != NULL)
28 #define _isdigit(c) ((c) >= '0' && (c) <= '9')
29 #endif
30 
31 #define HOUDINI_ESCAPED_SIZE(x) (((x)*12) / 10)
32 #define HOUDINI_UNESCAPED_SIZE(x) (x)
33 
34 extern bufsize_t houdini_unescape_ent(cmark_strbuf *ob, const uint8_t *src,
35                                       bufsize_t size);
36 extern int houdini_escape_html(cmark_strbuf *ob, const uint8_t *src,
37                                bufsize_t size);
38 extern int houdini_escape_html0(cmark_strbuf *ob, const uint8_t *src,
39                                 bufsize_t size, int secure);
40 extern int houdini_unescape_html(cmark_strbuf *ob, const uint8_t *src,
41                                  bufsize_t size);
42 extern void houdini_unescape_html_f(cmark_strbuf *ob, const uint8_t *src,
43                                     bufsize_t size);
44 extern int houdini_escape_href(cmark_strbuf *ob, const uint8_t *src,
45                                bufsize_t size);
46 
47 #ifdef __cplusplus
48 }
49 #endif
50 
51 #endif