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