xref: /php-src/ext/dom/lexbor/lexbor/html/serialize.h (revision bffab33a)
1 /*
2  * Copyright (C) 2018 Alexander Borisov
3  *
4  * Author: Alexander Borisov <borisov@lexbor.com>
5  */
6 
7 #ifndef LEXBOR_HTML_SERIALIZE_H
8 #define LEXBOR_HTML_SERIALIZE_H
9 
10 #ifdef __cplusplus
11 extern "C" {
12 #endif
13 
14 #include "lexbor/core/str.h"
15 #include "lexbor/dom/interfaces/element.h"
16 
17 #include "lexbor/html/base.h"
18 
19 
20 typedef int lxb_html_serialize_opt_t;
21 
22 enum lxb_html_serialize_opt {
23     LXB_HTML_SERIALIZE_OPT_UNDEF               = 0x00,
24     LXB_HTML_SERIALIZE_OPT_SKIP_WS_NODES       = 0x01,
25     LXB_HTML_SERIALIZE_OPT_SKIP_COMMENT        = 0x02,
26     LXB_HTML_SERIALIZE_OPT_RAW                 = 0x04,
27     LXB_HTML_SERIALIZE_OPT_WITHOUT_CLOSING     = 0x08,
28     LXB_HTML_SERIALIZE_OPT_TAG_WITH_NS         = 0x10,
29     LXB_HTML_SERIALIZE_OPT_WITHOUT_TEXT_INDENT = 0x20,
30     LXB_HTML_SERIALIZE_OPT_FULL_DOCTYPE        = 0x40
31 };
32 
33 
34 typedef lxb_status_t
35 (*lxb_html_serialize_cb_f)(const lxb_char_t *data, size_t len, void *ctx);
36 
37 
38 LXB_API lxb_status_t
39 lxb_html_serialize_cb(lxb_dom_node_t *node,
40                       lxb_html_serialize_cb_f cb, void *ctx);
41 
42 LXB_API lxb_status_t
43 lxb_html_serialize_str(lxb_dom_node_t *node, lexbor_str_t *str);
44 
45 LXB_API lxb_status_t
46 lxb_html_serialize_tree_cb(lxb_dom_node_t *node,
47                            lxb_html_serialize_cb_f cb, void *ctx);
48 
49 LXB_API lxb_status_t
50 lxb_html_serialize_tree_str(lxb_dom_node_t *node, lexbor_str_t *str);
51 
52 LXB_API lxb_status_t
53 lxb_html_serialize_deep_cb(lxb_dom_node_t *node,
54                            lxb_html_serialize_cb_f cb, void *ctx);
55 
56 LXB_API lxb_status_t
57 lxb_html_serialize_deep_str(lxb_dom_node_t *node, lexbor_str_t *str);
58 
59 LXB_API lxb_status_t
60 lxb_html_serialize_pretty_cb(lxb_dom_node_t *node,
61                              lxb_html_serialize_opt_t opt, size_t indent,
62                              lxb_html_serialize_cb_f cb, void *ctx);
63 
64 LXB_API lxb_status_t
65 lxb_html_serialize_pretty_str(lxb_dom_node_t *node,
66                               lxb_html_serialize_opt_t opt, size_t indent,
67                               lexbor_str_t *str);
68 
69 LXB_API lxb_status_t
70 lxb_html_serialize_pretty_tree_cb(lxb_dom_node_t *node,
71                                   lxb_html_serialize_opt_t opt, size_t indent,
72                                   lxb_html_serialize_cb_f cb, void *ctx);
73 
74 LXB_API lxb_status_t
75 lxb_html_serialize_pretty_tree_str(lxb_dom_node_t *node,
76                                    lxb_html_serialize_opt_t opt, size_t indent,
77                                    lexbor_str_t *str);
78 
79 LXB_API lxb_status_t
80 lxb_html_serialize_pretty_deep_cb(lxb_dom_node_t *node,
81                                   lxb_html_serialize_opt_t opt, size_t indent,
82                                   lxb_html_serialize_cb_f cb, void *ctx);
83 
84 LXB_API lxb_status_t
85 lxb_html_serialize_pretty_deep_str(lxb_dom_node_t *node,
86                                    lxb_html_serialize_opt_t opt, size_t indent,
87                                    lexbor_str_t *str);
88 
89 #ifdef __cplusplus
90 } /* extern "C" */
91 #endif
92 
93 #endif /* LEXBOR_HTML_SERIALIZE_H */
94