xref: /php-src/ext/dom/lexbor/lexbor/html/interface.h (revision bffab33a)
1 /*
2  * Copyright (C) 2018-2021 Alexander Borisov
3  *
4  * Author: Alexander Borisov <borisov@lexbor.com>
5  */
6 
7 #ifndef LEXBOR_HTML_INTERFACES_H
8 #define LEXBOR_HTML_INTERFACES_H
9 
10 #ifdef __cplusplus
11 extern "C" {
12 #endif
13 
14 #include "lexbor/html/base.h"
15 #include "lexbor/tag/const.h"
16 #include "lexbor/ns/const.h"
17 #include "lexbor/dom/interface.h"
18 
19 
20 #define lxb_html_interface_document(obj) ((lxb_html_document_t *) (obj))
21 #define lxb_html_interface_anchor(obj) ((lxb_html_anchor_element_t *) (obj))
22 #define lxb_html_interface_area(obj) ((lxb_html_area_element_t *) (obj))
23 #define lxb_html_interface_audio(obj) ((lxb_html_audio_element_t *) (obj))
24 #define lxb_html_interface_br(obj) ((lxb_html_br_element_t *) (obj))
25 #define lxb_html_interface_base(obj) ((lxb_html_base_element_t *) (obj))
26 #define lxb_html_interface_body(obj) ((lxb_html_body_element_t *) (obj))
27 #define lxb_html_interface_button(obj) ((lxb_html_button_element_t *) (obj))
28 #define lxb_html_interface_canvas(obj) ((lxb_html_canvas_element_t *) (obj))
29 #define lxb_html_interface_d_list(obj) ((lxb_html_d_list_element_t *) (obj))
30 #define lxb_html_interface_data(obj) ((lxb_html_data_element_t *) (obj))
31 #define lxb_html_interface_data_list(obj) ((lxb_html_data_list_element_t *) (obj))
32 #define lxb_html_interface_details(obj) ((lxb_html_details_element_t *) (obj))
33 #define lxb_html_interface_dialog(obj) ((lxb_html_dialog_element_t *) (obj))
34 #define lxb_html_interface_directory(obj) ((lxb_html_directory_element_t *) (obj))
35 #define lxb_html_interface_div(obj) ((lxb_html_div_element_t *) (obj))
36 #define lxb_html_interface_element(obj) ((lxb_html_element_t *) (obj))
37 #define lxb_html_interface_embed(obj) ((lxb_html_embed_element_t *) (obj))
38 #define lxb_html_interface_field_set(obj) ((lxb_html_field_set_element_t *) (obj))
39 #define lxb_html_interface_font(obj) ((lxb_html_font_element_t *) (obj))
40 #define lxb_html_interface_form(obj) ((lxb_html_form_element_t *) (obj))
41 #define lxb_html_interface_frame(obj) ((lxb_html_frame_element_t *) (obj))
42 #define lxb_html_interface_frame_set(obj) ((lxb_html_frame_set_element_t *) (obj))
43 #define lxb_html_interface_hr(obj) ((lxb_html_hr_element_t *) (obj))
44 #define lxb_html_interface_head(obj) ((lxb_html_head_element_t *) (obj))
45 #define lxb_html_interface_heading(obj) ((lxb_html_heading_element_t *) (obj))
46 #define lxb_html_interface_html(obj) ((lxb_html_html_element_t *) (obj))
47 #define lxb_html_interface_iframe(obj) ((lxb_html_iframe_element_t *) (obj))
48 #define lxb_html_interface_image(obj) ((lxb_html_image_element_t *) (obj))
49 #define lxb_html_interface_input(obj) ((lxb_html_input_element_t *) (obj))
50 #define lxb_html_interface_li(obj) ((lxb_html_li_element_t *) (obj))
51 #define lxb_html_interface_label(obj) ((lxb_html_label_element_t *) (obj))
52 #define lxb_html_interface_legend(obj) ((lxb_html_legend_element_t *) (obj))
53 #define lxb_html_interface_link(obj) ((lxb_html_link_element_t *) (obj))
54 #define lxb_html_interface_map(obj) ((lxb_html_map_element_t *) (obj))
55 #define lxb_html_interface_marquee(obj) ((lxb_html_marquee_element_t *) (obj))
56 #define lxb_html_interface_media(obj) ((lxb_html_media_element_t *) (obj))
57 #define lxb_html_interface_menu(obj) ((lxb_html_menu_element_t *) (obj))
58 #define lxb_html_interface_meta(obj) ((lxb_html_meta_element_t *) (obj))
59 #define lxb_html_interface_meter(obj) ((lxb_html_meter_element_t *) (obj))
60 #define lxb_html_interface_mod(obj) ((lxb_html_mod_element_t *) (obj))
61 #define lxb_html_interface_o_list(obj) ((lxb_html_o_list_element_t *) (obj))
62 #define lxb_html_interface_object(obj) ((lxb_html_object_element_t *) (obj))
63 #define lxb_html_interface_opt_group(obj) ((lxb_html_opt_group_element_t *) (obj))
64 #define lxb_html_interface_option(obj) ((lxb_html_option_element_t *) (obj))
65 #define lxb_html_interface_output(obj) ((lxb_html_output_element_t *) (obj))
66 #define lxb_html_interface_paragraph(obj) ((lxb_html_paragraph_element_t *) (obj))
67 #define lxb_html_interface_param(obj) ((lxb_html_param_element_t *) (obj))
68 #define lxb_html_interface_picture(obj) ((lxb_html_picture_element_t *) (obj))
69 #define lxb_html_interface_pre(obj) ((lxb_html_pre_element_t *) (obj))
70 #define lxb_html_interface_progress(obj) ((lxb_html_progress_element_t *) (obj))
71 #define lxb_html_interface_quote(obj) ((lxb_html_quote_element_t *) (obj))
72 #define lxb_html_interface_script(obj) ((lxb_html_script_element_t *) (obj))
73 #define lxb_html_interface_select(obj) ((lxb_html_select_element_t *) (obj))
74 #define lxb_html_interface_slot(obj) ((lxb_html_slot_element_t *) (obj))
75 #define lxb_html_interface_source(obj) ((lxb_html_source_element_t *) (obj))
76 #define lxb_html_interface_span(obj) ((lxb_html_span_element_t *) (obj))
77 #define lxb_html_interface_style(obj) ((lxb_html_style_element_t *) (obj))
78 #define lxb_html_interface_table_caption(obj) ((lxb_html_table_caption_element_t *) (obj))
79 #define lxb_html_interface_table_cell(obj) ((lxb_html_table_cell_element_t *) (obj))
80 #define lxb_html_interface_table_col(obj) ((lxb_html_table_col_element_t *) (obj))
81 #define lxb_html_interface_table(obj) ((lxb_html_table_element_t *) (obj))
82 #define lxb_html_interface_table_row(obj) ((lxb_html_table_row_element_t *) (obj))
83 #define lxb_html_interface_table_section(obj) ((lxb_html_table_section_element_t *) (obj))
84 #define lxb_html_interface_template(obj) ((lxb_html_template_element_t *) (obj))
85 #define lxb_html_interface_text_area(obj) ((lxb_html_text_area_element_t *) (obj))
86 #define lxb_html_interface_time(obj) ((lxb_html_time_element_t *) (obj))
87 #define lxb_html_interface_title(obj) ((lxb_html_title_element_t *) (obj))
88 #define lxb_html_interface_track(obj) ((lxb_html_track_element_t *) (obj))
89 #define lxb_html_interface_u_list(obj) ((lxb_html_u_list_element_t *) (obj))
90 #define lxb_html_interface_unknown(obj) ((lxb_html_unknown_element_t *) (obj))
91 #define lxb_html_interface_video(obj) ((lxb_html_video_element_t *) (obj))
92 #define lxb_html_interface_window(obj) ((lxb_html_window_t *) (obj))
93 
94 
95 typedef struct lxb_html_document lxb_html_document_t;
96 typedef struct lxb_html_anchor_element lxb_html_anchor_element_t;
97 typedef struct lxb_html_area_element lxb_html_area_element_t;
98 typedef struct lxb_html_audio_element lxb_html_audio_element_t;
99 typedef struct lxb_html_br_element lxb_html_br_element_t;
100 typedef struct lxb_html_base_element lxb_html_base_element_t;
101 typedef struct lxb_html_body_element lxb_html_body_element_t;
102 typedef struct lxb_html_button_element lxb_html_button_element_t;
103 typedef struct lxb_html_canvas_element lxb_html_canvas_element_t;
104 typedef struct lxb_html_d_list_element lxb_html_d_list_element_t;
105 typedef struct lxb_html_data_element lxb_html_data_element_t;
106 typedef struct lxb_html_data_list_element lxb_html_data_list_element_t;
107 typedef struct lxb_html_details_element lxb_html_details_element_t;
108 typedef struct lxb_html_dialog_element lxb_html_dialog_element_t;
109 typedef struct lxb_html_directory_element lxb_html_directory_element_t;
110 typedef struct lxb_html_div_element lxb_html_div_element_t;
111 typedef struct lxb_html_element lxb_html_element_t;
112 typedef struct lxb_html_embed_element lxb_html_embed_element_t;
113 typedef struct lxb_html_field_set_element lxb_html_field_set_element_t;
114 typedef struct lxb_html_font_element lxb_html_font_element_t;
115 typedef struct lxb_html_form_element lxb_html_form_element_t;
116 typedef struct lxb_html_frame_element lxb_html_frame_element_t;
117 typedef struct lxb_html_frame_set_element lxb_html_frame_set_element_t;
118 typedef struct lxb_html_hr_element lxb_html_hr_element_t;
119 typedef struct lxb_html_head_element lxb_html_head_element_t;
120 typedef struct lxb_html_heading_element lxb_html_heading_element_t;
121 typedef struct lxb_html_html_element lxb_html_html_element_t;
122 typedef struct lxb_html_iframe_element lxb_html_iframe_element_t;
123 typedef struct lxb_html_image_element lxb_html_image_element_t;
124 typedef struct lxb_html_input_element lxb_html_input_element_t;
125 typedef struct lxb_html_li_element lxb_html_li_element_t;
126 typedef struct lxb_html_label_element lxb_html_label_element_t;
127 typedef struct lxb_html_legend_element lxb_html_legend_element_t;
128 typedef struct lxb_html_link_element lxb_html_link_element_t;
129 typedef struct lxb_html_map_element lxb_html_map_element_t;
130 typedef struct lxb_html_marquee_element lxb_html_marquee_element_t;
131 typedef struct lxb_html_media_element lxb_html_media_element_t;
132 typedef struct lxb_html_menu_element lxb_html_menu_element_t;
133 typedef struct lxb_html_meta_element lxb_html_meta_element_t;
134 typedef struct lxb_html_meter_element lxb_html_meter_element_t;
135 typedef struct lxb_html_mod_element lxb_html_mod_element_t;
136 typedef struct lxb_html_o_list_element lxb_html_o_list_element_t;
137 typedef struct lxb_html_object_element lxb_html_object_element_t;
138 typedef struct lxb_html_opt_group_element lxb_html_opt_group_element_t;
139 typedef struct lxb_html_option_element lxb_html_option_element_t;
140 typedef struct lxb_html_output_element lxb_html_output_element_t;
141 typedef struct lxb_html_paragraph_element lxb_html_paragraph_element_t;
142 typedef struct lxb_html_param_element lxb_html_param_element_t;
143 typedef struct lxb_html_picture_element lxb_html_picture_element_t;
144 typedef struct lxb_html_pre_element lxb_html_pre_element_t;
145 typedef struct lxb_html_progress_element lxb_html_progress_element_t;
146 typedef struct lxb_html_quote_element lxb_html_quote_element_t;
147 typedef struct lxb_html_script_element lxb_html_script_element_t;
148 typedef struct lxb_html_select_element lxb_html_select_element_t;
149 typedef struct lxb_html_slot_element lxb_html_slot_element_t;
150 typedef struct lxb_html_source_element lxb_html_source_element_t;
151 typedef struct lxb_html_span_element lxb_html_span_element_t;
152 typedef struct lxb_html_style_element lxb_html_style_element_t;
153 typedef struct lxb_html_table_caption_element lxb_html_table_caption_element_t;
154 typedef struct lxb_html_table_cell_element lxb_html_table_cell_element_t;
155 typedef struct lxb_html_table_col_element lxb_html_table_col_element_t;
156 typedef struct lxb_html_table_element lxb_html_table_element_t;
157 typedef struct lxb_html_table_row_element lxb_html_table_row_element_t;
158 typedef struct lxb_html_table_section_element lxb_html_table_section_element_t;
159 typedef struct lxb_html_template_element lxb_html_template_element_t;
160 typedef struct lxb_html_text_area_element lxb_html_text_area_element_t;
161 typedef struct lxb_html_time_element lxb_html_time_element_t;
162 typedef struct lxb_html_title_element lxb_html_title_element_t;
163 typedef struct lxb_html_track_element lxb_html_track_element_t;
164 typedef struct lxb_html_u_list_element lxb_html_u_list_element_t;
165 typedef struct lxb_html_unknown_element lxb_html_unknown_element_t;
166 typedef struct lxb_html_video_element lxb_html_video_element_t;
167 typedef struct lxb_html_window lxb_html_window_t;
168 
169 
170 LXB_API lxb_dom_interface_t *
171 lxb_html_interface_create(lxb_html_document_t *document, lxb_tag_id_t tag_id,
172                           lxb_ns_id_t ns);
173 
174 LXB_API lxb_dom_interface_t *
175 lxb_html_interface_clone(lxb_dom_document_t *document,
176                          const lxb_dom_interface_t *intrfc);
177 
178 LXB_API lxb_dom_interface_t *
179 lxb_html_interface_destroy(lxb_dom_interface_t *intrfc);
180 
181 
182 #ifdef __cplusplus
183 } /* extern "C" */
184 #endif
185 
186 #endif /* LEXBOR_HTML_INTERFACES_H */
187