21#define LXB_HTML_TAG_RES_DATA
22#define LXB_HTML_TAG_RES_SHS_DATA
129 if (document !=
NULL) {
154 if (document ==
NULL) {
158 hdoc->
css = document->
css;
170 if (document ==
NULL) {
278 document->
done = lxb_html_document_done;
331 css = &document->
css;
383 &lxb_html_document_css_customs_se,
key, length);
385 return (entry !=
NULL) ? entry->
id : 0;
399 &lxb_html_document_css_customs_in,
key, length);
416 &lxb_html_document_css_customs_se,
key, length);
421 entry = lxb_html_document_css_customs_insert(document,
key, length);
460 while (rule !=
NULL) {
461 switch (rule->
type) {
511 while (rule !=
NULL) {
512 switch (rule->
type) {
531 for (i = 0; i < length; i++) {
562 while (rule !=
NULL) {
563 switch (rule->
type) {
595 for (
size_t i = 0; i < length; i++) {
611 style->
selector, lxb_html_document_style_cb, style);
625 lxb_html_document_style_remove_by_rule_cb, style);
659 lxb_html_document_style_remove_avl_cb, &
context);
691 lxb_html_document_style_cb, style);
911 for (i = 0; i < length; i++) {
930 lxb_html_document_title_walker, &title);
954 lxb_html_document_title_walker, &el_title);
955 if (el_title ==
NULL) {
958 if (el_title ==
NULL) {
983 lxb_html_document_title_walker, &title);
995 *((
void **) ctx) = node;
1019 return lxb_html_document_event_insert_attribute(node);
1073 status = lxb_html_document_event_remove_attribute(node);
1084 attr->value->length);
1096 return lxb_html_document_event_remove_attribute(node);
1127 lxb_html_document_style_remove_cb, &
context);
1173 lxb_html_document_style_remove_my_cb, &
context);
1207 return lxb_html_document_event_remove_attribute(node);
1235 lxb_html_document_style_remove_cb, &
context);
1274 status = lxb_html_document_event_remove_attribute(node);
1352 size_t lname_len,
void *reserved_for_opt)
lxb_inline void * lexbor_array_get(lexbor_array_t *array, size_t idx)
lxb_inline size_t lexbor_array_length(lexbor_array_t *array)
lxb_status_t lexbor_avl_init(lexbor_avl_t *avl, size_t chunk_len, size_t struct_size)
lexbor_avl_t * lexbor_avl_create(void)
void lexbor_avl_clean(lexbor_avl_t *avl)
lexbor_avl_t * lexbor_avl_destroy(lexbor_avl_t *avl, bool self_destroy)
lxb_status_t lexbor_avl_foreach(lexbor_avl_t *avl, lexbor_avl_node_t **scope, lexbor_avl_node_f cb, void *ctx)
struct lexbor_avl_node lexbor_avl_node_t
struct lexbor_avl lexbor_avl_t
@ LXB_STATUS_ERROR_MEMORY_ALLOCATION
@ LXB_STATUS_ERROR_WRONG_ARGS
struct lxb_css_stylesheet lxb_css_stylesheet_t
struct lxb_css_rule_style lxb_css_rule_style_t
LXB_API lxb_status_t lxb_css_memory_init(lxb_css_memory_t *memory, size_t prepare_count)
struct lxb_css_memory lxb_css_memory_t
LXB_API lxb_css_memory_t * lxb_css_memory_destroy(lxb_css_memory_t *memory, bool self_destroy)
LXB_API void lxb_css_memory_clean(lxb_css_memory_t *memory)
struct lxb_css_rule_list lxb_css_rule_list_t
struct lxb_css_rule_declaration_list lxb_css_rule_declaration_list_t
LXB_API lxb_css_memory_t * lxb_css_memory_create(void)
struct lxb_css_parser lxb_css_parser_t
lxb_css_parser_t * lxb_css_parser_create(void)
void lxb_css_parser_clean(lxb_css_parser_t *parser)
lxb_css_parser_t * lxb_css_parser_destroy(lxb_css_parser_t *parser, bool self_destroy)
lxb_status_t lxb_css_parser_init(lxb_css_parser_t *parser, lxb_css_syntax_tokenizer_t *tkz)
lxb_inline void lxb_css_parser_memory_set(lxb_css_parser_t *parser, lxb_css_memory_t *memory)
lxb_inline void lxb_css_parser_selectors_set(lxb_css_parser_t *parser, lxb_css_selectors_t *selectors)
@ LXB_CSS_PROPERTY__LAST_ENTRY
lxb_status_t lxb_css_selectors_init(lxb_css_selectors_t *selectors)
lxb_css_selectors_t * lxb_css_selectors_destroy(lxb_css_selectors_t *selectors, bool self_destroy)
lxb_css_selectors_t * lxb_css_selectors_create(void)
void lxb_css_selectors_clean(lxb_css_selectors_t *selectors)
lxb_status_t lexbor_dobject_init(lexbor_dobject_t *dobject, size_t chunk_size, size_t struct_size)
void lexbor_dobject_clean(lexbor_dobject_t *dobject)
lexbor_dobject_t * lexbor_dobject_destroy(lexbor_dobject_t *dobject, bool destroy_self)
lexbor_dobject_t * lexbor_dobject_create(void)
lxb_dom_interface_t *(* lxb_dom_interface_create_f)(lxb_dom_document_t *document, lxb_tag_id_t tag_id, lxb_ns_id_t ns)
struct lxb_dom_document lxb_dom_document_t
#define lxb_dom_interface_attr(obj)
#define lxb_dom_interface_node(obj)
#define lxb_dom_interface_document(obj)
struct lxb_dom_node lxb_dom_node_t
struct lxb_dom_attr lxb_dom_attr_t
struct lxb_dom_element lxb_dom_element_t
@ LXB_DOM_DOCUMENT_DTYPE_HTML
@ LXB_DOM_NODE_TYPE_ATTRIBUTE
@ LXB_DOM_NODE_TYPE_ELEMENT
void lexbor_array_delete(lexbor_array_t *array, size_t begin, size_t length)
lexbor_array_t * lexbor_array_create(void)
lexbor_array_t * lexbor_array_destroy(lexbor_array_t *array, bool self_destroy)
void lexbor_array_clean(lexbor_array_t *array)
lxb_status_t lexbor_array_push(lexbor_array_t *array, void *value)
void * lexbor_array_pop(lexbor_array_t *array)
lxb_status_t lexbor_array_init(lexbor_array_t *array, size_t size)
uint32_t lexbor_hash_make_id(const lxb_char_t *key, size_t length)
lxb_status_t lexbor_hash_init(lexbor_hash_t *hash, size_t table_size, size_t struct_size)
void * lexbor_hash_insert(lexbor_hash_t *hash, const lexbor_hash_insert_t *insert, const lxb_char_t *key, size_t length)
lxb_status_t lexbor_hash_copy(lexbor_hash_t *hash, lexbor_hash_entry_t *entry, const lxb_char_t *key, size_t length)
lexbor_hash_t * lexbor_hash_create(void)
void * lexbor_hash_search(lexbor_hash_t *hash, const lexbor_hash_search_t *search, const lxb_char_t *key, size_t length)
lexbor_hash_t * lexbor_hash_destroy(lexbor_hash_t *hash, bool destroy_obj)
lxb_dom_interface_t * lxb_html_interface_clone(lxb_dom_document_t *document, const lxb_dom_interface_t *intrfc)
lxb_dom_interface_t * lxb_html_interface_destroy(lxb_dom_interface_t *intrfc)
lxb_dom_interface_t * lxb_html_interface_create(lxb_html_document_t *document, lxb_tag_id_t tag_id, lxb_ns_id_t ns)
struct lexbor_hash_search lexbor_hash_search_t
struct lexbor_hash_entry lexbor_hash_entry_t
struct lexbor_hash_insert lexbor_hash_insert_t
#define lxb_html_interface_style(obj)
struct lxb_html_body_element lxb_html_body_element_t
#define lxb_html_interface_element(obj)
#define lxb_html_interface_document(obj)
struct lxb_html_style_element lxb_html_style_element_t
struct lxb_html_title_element lxb_html_title_element_t
struct lxb_html_element lxb_html_element_t
struct lxb_html_head_element lxb_html_head_element_t
struct lxb_html_document lxb_html_document_t
@ LXB_HTML_DOCUMENT_READY_STATE_UNDEF
@ LXB_HTML_DOCUMENT_READY_STATE_LOADING
lxb_inline lxb_html_head_element_t * lxb_html_document_head_element(lxb_html_document_t *document)
lxb_inline void * lxb_html_document_destroy_struct(lxb_html_document_t *document, void *data)
lxb_inline lxb_dom_element_t * lxb_html_document_destroy_element(lxb_dom_element_t *element)
LXB_API void lxb_html_document_css_destroy(lxb_html_document_t *document)
lxb_inline lxb_html_body_element_t * lxb_html_document_body_element(lxb_html_document_t *document)
unsigned int lxb_html_document_opt_t
LXB_API lxb_status_t lxb_html_document_css_init(lxb_html_document_t *document)
lxb_inline lxb_dom_document_t * lxb_html_document_original_ref(lxb_html_document_t *document)
lxb_inline lexbor_mraw_t * lxb_html_document_mraw(lxb_html_document_t *document)
lxb_inline bool lxb_html_document_is_original(lxb_html_document_t *document)
lxb_inline lexbor_mraw_t * lxb_html_document_mraw_text(lxb_html_document_t *document)
lxb_inline void * lxb_html_document_create_struct(lxb_html_document_t *document, size_t struct_size)
lxb_inline lxb_html_element_t * lxb_html_document_create_element(lxb_html_document_t *document, const lxb_char_t *local_name, size_t lname_len, void *reserved_for_opt)
LXB_API void lxb_html_document_css_clean(lxb_html_document_t *document)
lxb_inline void lxb_html_document_opt_set(lxb_html_document_t *document, lxb_html_document_opt_t opt)
lxb_inline lxb_html_document_t * lxb_html_element_document(lxb_html_element_t *element)
lxb_status_t lxb_html_parse_fragment_chunk_begin(lxb_html_parser_t *parser, lxb_html_document_t *document, lxb_tag_id_t tag_id, lxb_ns_id_t ns)
lxb_dom_node_t * lxb_html_parse_fragment_chunk_end(lxb_html_parser_t *parser)
lxb_html_parser_t * lxb_html_parser_destroy(lxb_html_parser_t *parser)
lxb_status_t lxb_html_parse_chunk_end(lxb_html_parser_t *parser)
lxb_status_t lxb_html_parse_chunk_process(lxb_html_parser_t *parser, const lxb_char_t *html, size_t size)
void lxb_html_parser_clean(lxb_html_parser_t *parser)
lxb_status_t lxb_html_parser_init(lxb_html_parser_t *parser)
lxb_html_parser_t * lxb_html_parser_unref(lxb_html_parser_t *parser)
lxb_status_t lxb_html_parse_fragment_chunk_process(lxb_html_parser_t *parser, const lxb_char_t *html, size_t size)
lxb_html_parser_t * lxb_html_parser_create(void)
@ LXB_HTML_PARSER_STATE_BEGIN
lxb_inline lxb_status_t lxb_html_parser_state(lxb_html_parser_t *parser)
lxb_status_t lxb_dom_document_clean(lxb_dom_document_t *document)
lxb_dom_document_t * lxb_dom_document_destroy(lxb_dom_document_t *document)
lxb_dom_node_t * lxb_dom_document_import_node(lxb_dom_document_t *doc, lxb_dom_node_t *node, bool deep)
lxb_status_t lxb_dom_document_init(lxb_dom_document_t *document, lxb_dom_document_t *owner, lxb_dom_interface_create_f create_interface, lxb_dom_interface_clone_f clone_interface, lxb_dom_interface_destroy_f destroy_interface, lxb_dom_document_dtype_t type, unsigned int ns)
lxb_status_t lxb_dom_node_text_content_set(lxb_dom_node_t *node, const lxb_char_t *content, size_t len)
void lxb_dom_node_simple_walk(lxb_dom_node_t *root, lxb_dom_node_simple_walker_f walker_cb, void *ctx)
void lxb_dom_node_insert_child(lxb_dom_node_t *to, lxb_dom_node_t *node)
lxb_dom_node_t * lxb_html_document_parse_fragment(lxb_html_document_t *document, lxb_dom_element_t *element, const lxb_char_t *html, size_t size)
lxb_html_document_t * lxb_html_document_create(void)
void lxb_html_document_clean(lxb_html_document_t *document)
lexbor_mraw_t * lxb_html_document_mraw_text_noi(lxb_html_document_t *document)
lxb_status_t lxb_html_document_parse(lxb_html_document_t *document, const lxb_char_t *html, size_t size)
void lxb_html_document_css_parser_attach(lxb_html_document_t *document, lxb_css_parser_t *parser)
lxb_dom_document_t * lxb_html_document_original_ref_noi(lxb_html_document_t *document)
lxb_status_t lxb_html_document_element_styles_attach(lxb_html_element_t *element)
lxb_html_head_element_t * lxb_html_document_head_element_noi(lxb_html_document_t *document)
lxb_dom_element_t * lxb_html_document_destroy_element_noi(lxb_dom_element_t *element)
void lxb_html_document_css_memory_attach(lxb_html_document_t *document, lxb_css_memory_t *memory)
lxb_html_body_element_t * lxb_html_document_body_element_noi(lxb_html_document_t *document)
void lxb_html_document_opt_set_noi(lxb_html_document_t *document, lxb_html_document_opt_t opt)
lxb_status_t lxb_html_document_parse_chunk_begin(lxb_html_document_t *document)
lxb_status_t lxb_html_document_stylesheet_attach(lxb_html_document_t *document, lxb_css_stylesheet_t *sst)
lxb_status_t lxb_html_document_parse_chunk(lxb_html_document_t *document, const lxb_char_t *html, size_t size)
lxb_status_t lxb_html_document_style_attach(lxb_html_document_t *document, lxb_css_rule_style_t *style)
void * lxb_html_document_destroy_struct_noi(lxb_html_document_t *document, void *data)
lxb_status_t lxb_html_document_css_customs_init(lxb_html_document_t *document)
lxb_html_document_opt_t lxb_html_document_opt_noi(lxb_html_document_t *document)
void * lxb_html_document_create_struct_noi(lxb_html_document_t *document, size_t struct_size)
lxb_status_t lxb_html_document_parse_fragment_chunk(lxb_html_document_t *document, const lxb_char_t *html, size_t size)
uintptr_t lxb_html_document_css_customs_find_id(lxb_html_document_t *document, const lxb_char_t *key, size_t length)
lxb_status_t lxb_html_document_style_remove(lxb_html_document_t *document, lxb_css_rule_style_t *style)
bool lxb_html_document_is_original_noi(lxb_html_document_t *document)
lxb_status_t lxb_html_document_stylesheet_remove(lxb_html_document_t *document, lxb_css_stylesheet_t *sst)
lxb_inline lxb_status_t lxb_html_document_parser_prepare(lxb_html_document_t *document)
uintptr_t lxb_html_document_css_customs_id(lxb_html_document_t *document, const lxb_char_t *key, size_t length)
void lxb_html_document_stylesheet_destroy_all(lxb_html_document_t *document, bool destroy_memory)
lxb_html_element_t * lxb_html_document_create_element_noi(lxb_html_document_t *document, const lxb_char_t *local_name, size_t lname_len, void *reserved_for_opt)
lxb_status_t lxb_html_document_stylesheet_apply(lxb_html_document_t *document, lxb_css_stylesheet_t *sst)
void lxb_html_document_css_customs_destroy(lxb_html_document_t *document)
const lxb_char_t * lxb_html_document_title(lxb_html_document_t *document, size_t *len)
lxb_status_t lxb_html_document_title_set(lxb_html_document_t *document, const lxb_char_t *title, size_t len)
const lxb_char_t * lxb_html_document_title_raw(lxb_html_document_t *document, size_t *len)
lxb_status_t lxb_html_document_stylesheet_add(lxb_html_document_t *document, lxb_css_stylesheet_t *sst)
lxb_status_t lxb_html_document_parse_fragment_chunk_begin(lxb_html_document_t *document, lxb_dom_element_t *element)
lxb_status_t lxb_html_document_style_attach_by_element(lxb_html_document_t *document, lxb_html_element_t *element, lxb_css_rule_style_t *style)
lxb_status_t lxb_html_document_parse_chunk_end(lxb_html_document_t *document)
lxb_html_document_t * lxb_html_document_interface_create(lxb_html_document_t *document)
lexbor_mraw_t * lxb_html_document_mraw_noi(lxb_html_document_t *document)
lxb_html_document_t * lxb_html_document_destroy(lxb_html_document_t *document)
lxb_dom_node_t * lxb_html_document_parse_fragment_chunk_end(lxb_html_document_t *document)
lxb_dom_node_t * lxb_html_document_import_node(lxb_html_document_t *doc, lxb_dom_node_t *node, bool deep)
lxb_html_document_t * lxb_html_document_interface_destroy(lxb_html_document_t *document)
lxb_status_t lxb_html_parse_chunk_prepare(lxb_html_parser_t *parser, lxb_html_document_t *document)
lxb_status_t lxb_html_element_style_list_append(lxb_html_element_t *element, lxb_css_rule_declaration_list_t *list, lxb_css_selector_specificity_t spec)
lxb_html_style_node_t * lxb_html_element_style_remove_all_not(lxb_html_document_t *doc, lexbor_avl_node_t **root, lxb_html_style_node_t *style, bool bs)
lxb_status_t lxb_html_element_style_parse(lxb_html_element_t *element, const lxb_char_t *style, size_t size)
lxb_html_style_node_t * lxb_html_element_style_remove_by_list(lxb_html_document_t *doc, lexbor_avl_node_t **root, lxb_html_style_node_t *style, lxb_css_rule_declaration_list_t *list)
lxb_html_style_node_t * lxb_html_element_style_remove_all(lxb_html_document_t *doc, lexbor_avl_node_t **root, lxb_html_style_node_t *style)
LXB_API void * lexbor_calloc(size_t num, size_t size)
void * lexbor_mraw_calloc(lexbor_mraw_t *mraw, size_t size)
unsigned char key[REFLECTION_KEY_LEN]
struct lxb_css_rule lxb_css_rule_t
LXB_API lxb_css_rule_declaration_list_t * lxb_css_rule_declaration_list_destroy(lxb_css_rule_declaration_list_t *list, bool self_destroy)
#define lxb_css_rule_list(rule)
#define lxb_css_rule_style(rule)
uint32_t lxb_css_selector_specificity_t
lxb_status_t lxb_selectors_find(lxb_selectors_t *selectors, const xmlNode *root, const lxb_css_selector_list_t *list, lxb_selectors_cb_f cb, void *ctx)
void lxb_selectors_destroy(lxb_selectors_t *selectors)
lxb_status_t lxb_selectors_init(lxb_selectors_t *selectors)
lxb_status_t lxb_selectors_match_node(lxb_selectors_t *selectors, const xmlNode *node, const lxb_css_selector_list_t *list, lxb_selectors_cb_f cb, void *ctx)
void lxb_selectors_clean(lxb_selectors_t *selectors)
lxb_selectors_t * lxb_selectors_create(void)
bool lexbor_str_data_ncasecmp(const lxb_char_t *first, const lxb_char_t *sec, size_t size)
lxb_css_selector_list_t * selector
lxb_css_rule_declaration_list_t * declarations
lxb_dom_event_remove_f ev_remove
lxb_dom_event_insert_f ev_insert
lxb_dom_event_destroy_f ev_destroy
lxb_dom_event_set_value_f ev_set_value
lxb_dom_document_t * owner_document
lexbor_hash_entry_t entry
lexbor_array_t * stylesheets
lxb_css_parser_t * parser
lxb_css_selectors_t * css_selectors
lxb_css_memory_t * memory
lxb_html_document_t * doc
lxb_css_rule_declaration_list_t * list
lxb_html_document_t * doc
lxb_html_head_element_t * head
lxb_html_document_opt_t opt
lxb_html_document_done_cb_f done
lxb_html_document_css_t css
lxb_html_document_ready_state_t ready_state
lxb_html_body_element_t * body
lxb_dom_document_t dom_document
lexbor_avl_node_t * style
lxb_css_rule_declaration_list_t * list
lxb_dom_element_t element
lxb_css_stylesheet_t * stylesheet
lxb_html_element_t element
struct lxb_html_style_weak lxb_html_style_weak_t
lxb_status_t lxb_html_element_style_remove(lxb_html_style_element_t *style)
lxb_status_t lxb_html_style_element_parse(lxb_html_style_element_t *element)
LXB_API lxb_css_stylesheet_t * lxb_css_stylesheet_destroy(lxb_css_stylesheet_t *sst, bool destroy_memory)
const lxb_char_t * lxb_html_title_element_strict_text(lxb_html_title_element_t *title, size_t *len)
const lxb_char_t * lxb_html_title_element_text(lxb_html_title_element_t *title, size_t *len)
unsigned int lxb_status_t
ZEND_API void(ZEND_FASTCALL *zend_touch_vm_stack_data)(void *vm_stack_data)