1 /*
2  * Copyright (C) 2018 Alexander Borisov
3  *
4  * Author: Alexander Borisov <borisov@lexbor.com>
5  */
6 
7 #ifndef LEXBOR_HTML_TREE_INSERTION_MODE_H
8 #define LEXBOR_HTML_TREE_INSERTION_MODE_H
9 
10 #ifdef __cplusplus
11 extern "C" {
12 #endif
13 
14 #include "lexbor/html/token.h"
15 #include "lexbor/html/tree.h"
16 
17 
18 LXB_API bool
19 lxb_html_tree_insertion_mode_initial(lxb_html_tree_t *tree,
20                                      lxb_html_token_t *token);
21 
22 LXB_API bool
23 lxb_html_tree_insertion_mode_before_html(lxb_html_tree_t *tree,
24                                          lxb_html_token_t *token);
25 
26 LXB_API bool
27 lxb_html_tree_insertion_mode_before_head(lxb_html_tree_t *tree,
28                                          lxb_html_token_t *token);
29 
30 LXB_API bool
31 lxb_html_tree_insertion_mode_in_head(lxb_html_tree_t *tree,
32                                      lxb_html_token_t *token);
33 
34 LXB_API bool
35 lxb_html_tree_insertion_mode_in_head_noscript(lxb_html_tree_t *tree,
36                                               lxb_html_token_t *token);
37 
38 LXB_API bool
39 lxb_html_tree_insertion_mode_after_head(lxb_html_tree_t *tree,
40                                         lxb_html_token_t *token);
41 
42 LXB_API bool
43 lxb_html_tree_insertion_mode_in_body(lxb_html_tree_t *tree,
44                                      lxb_html_token_t *token);
45 
46 LXB_API bool
47 lxb_html_tree_insertion_mode_in_body_skip_new_line(lxb_html_tree_t *tree,
48                                                    lxb_html_token_t *token);
49 
50 LXB_API bool
51 lxb_html_tree_insertion_mode_in_body_skip_new_line_textarea(lxb_html_tree_t *tree,
52                                                             lxb_html_token_t *token);
53 
54 LXB_API lxb_status_t
55 lxb_html_tree_insertion_mode_in_body_text_append(lxb_html_tree_t *tree,
56                                                  lexbor_str_t *str);
57 
58 LXB_API bool
59 lxb_html_tree_insertion_mode_text(lxb_html_tree_t *tree,
60                                   lxb_html_token_t *token);
61 
62 LXB_API bool
63 lxb_html_tree_insertion_mode_in_table(lxb_html_tree_t *tree,
64                                       lxb_html_token_t *token);
65 
66 LXB_API bool
67 lxb_html_tree_insertion_mode_in_table_anything_else(lxb_html_tree_t *tree,
68                                                     lxb_html_token_t *token);
69 
70 LXB_API bool
71 lxb_html_tree_insertion_mode_in_table_text(lxb_html_tree_t *tree,
72                                            lxb_html_token_t *token);
73 
74 LXB_API bool
75 lxb_html_tree_insertion_mode_in_caption(lxb_html_tree_t *tree,
76                                         lxb_html_token_t *token);
77 
78 LXB_API bool
79 lxb_html_tree_insertion_mode_in_column_group(lxb_html_tree_t *tree,
80                                              lxb_html_token_t *token);
81 
82 LXB_API bool
83 lxb_html_tree_insertion_mode_in_table_body(lxb_html_tree_t *tree,
84                                            lxb_html_token_t *token);
85 
86 LXB_API bool
87 lxb_html_tree_insertion_mode_in_row(lxb_html_tree_t *tree,
88                                     lxb_html_token_t *token);
89 
90 LXB_API bool
91 lxb_html_tree_insertion_mode_in_cell(lxb_html_tree_t *tree,
92                                      lxb_html_token_t *token);
93 
94 LXB_API bool
95 lxb_html_tree_insertion_mode_in_select(lxb_html_tree_t *tree,
96                                        lxb_html_token_t *token);
97 
98 LXB_API bool
99 lxb_html_tree_insertion_mode_in_select_in_table(lxb_html_tree_t *tree,
100                                                 lxb_html_token_t *token);
101 
102 LXB_API bool
103 lxb_html_tree_insertion_mode_in_template(lxb_html_tree_t *tree,
104                                          lxb_html_token_t *token);
105 
106 LXB_API bool
107 lxb_html_tree_insertion_mode_after_body(lxb_html_tree_t *tree,
108                                         lxb_html_token_t *token);
109 
110 LXB_API bool
111 lxb_html_tree_insertion_mode_in_frameset(lxb_html_tree_t *tree,
112                                          lxb_html_token_t *token);
113 
114 LXB_API bool
115 lxb_html_tree_insertion_mode_after_frameset(lxb_html_tree_t *tree,
116                                             lxb_html_token_t *token);
117 
118 LXB_API bool
119 lxb_html_tree_insertion_mode_after_after_body(lxb_html_tree_t *tree,
120                                               lxb_html_token_t *token);
121 
122 LXB_API bool
123 lxb_html_tree_insertion_mode_after_after_frameset(lxb_html_tree_t *tree,
124                                                   lxb_html_token_t *token);
125 
126 LXB_API bool
127 lxb_html_tree_insertion_mode_foreign_content(lxb_html_tree_t *tree,
128                                              lxb_html_token_t *token);
129 
130 
131 #ifdef __cplusplus
132 } /* extern "C" */
133 #endif
134 
135 #endif /* LEXBOR_HTML_TREE_INSERTION_MODE_H */
136