39 if (element ==
NULL) {
78 attr_next =
attr->next;
133 memcpy(&
key[prefix_len + 1], lname, lname_len);
135 lname_len = prefix_len + lname_len + 1;
137 key[prefix_len] =
':';
138 key[lname_len] =
'\0';
148 if (tag_data ==
NULL) {
159 const lxb_char_t *local_name,
size_t lname_len,
180 if (tag_data ==
NULL) {
184 if (ns_link !=
NULL) {
191 if (ns_data ==
NULL) {
197 if (element ==
NULL) {
203 if (ns_prefix ==
NULL) {
210 local_name, lname_len);
250 const lxb_char_t *qualified_name,
size_t qn_len,
299 const lxb_char_t *qualified_name,
size_t qn_len,
306 if (value_len !=
NULL) {
318 const lxb_char_t *qualified_name,
size_t qn_len)
340 const lxb_char_t *qualified_name,
size_t qn_len)
386 attr->owner = element;
407 const lxb_char_t *qualified_name,
size_t length)
428 if (
attr->node.local_name ==
data->attr_id
429 ||
attr->qualified_name ==
data->attr_id)
447 if (
attr->node.local_name ==
data->attr_id
448 ||
attr->qualified_name ==
data->attr_id)
466 if (
attr->node.local_name == attr_id) {
483 || first->node.ns != second->
node.
ns
490 while (f_attr !=
NULL && s_attr !=
NULL) {
491 f_attr = f_attr->
next;
492 s_attr = s_attr->
next;
495 if (f_attr !=
NULL || s_attr !=
NULL) {
500 f_attr = first->first_attr;
502 while (f_attr !=
NULL) {
505 while (s_attr !=
NULL) {
510 s_attr = s_attr->
next;
513 if (s_attr ==
NULL) {
517 f_attr = f_attr->
next;
525 const lxb_char_t *qualified_name,
size_t length)
531 qualified_name, length);
537 if (
attr->node.local_name ==
data->attr_id
538 ||
attr->qualified_name ==
data->attr_id)
590 collection, qname,
len);
599 collection, class_name,
len);
607 bool case_insensitive)
610 collection, qname, qname_len,
611 value, value_len, case_insensitive);
619 bool case_insensitive)
622 collection, qname, qname_len,
623 value, value_len, case_insensitive);
631 bool case_insensitive)
634 collection, qname, qname_len,
635 value, value_len, case_insensitive);
643 bool case_insensitive)
646 collection, qname, qname_len,
647 value, value_len, case_insensitive);
675 return lxb_dom_element_upper_update(element,
len);
lxb_inline const lxb_char_t * lxb_dom_attr_value(lxb_dom_attr_t *attr, size_t *len)
uintptr_t lxb_dom_attr_id_t
link(string $target, string $link)
@ LXB_STATUS_ERROR_MEMORY_ALLOCATION
struct lxb_dom_document lxb_dom_document_t
#define lxb_dom_interface_node(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_inline lxb_dom_interface_t * lxb_dom_document_create_interface(lxb_dom_document_t *document, lxb_tag_id_t tag_id, lxb_ns_id_t ns)
lxb_inline lxb_dom_document_t * lxb_dom_document_owner(lxb_dom_document_t *document)
lxb_inline lxb_dom_interface_t * lxb_dom_document_destroy_interface(lxb_dom_interface_t *intrfc)
@ LXB_DOM_DOCUMENT_DTYPE_HTML
lxb_inline lxb_dom_attr_t * lxb_dom_element_first_attribute(lxb_dom_element_t *element)
@ LXB_DOM_ELEMENT_CUSTOM_STATE_UNDEFINED
@ LXB_DOM_ELEMENT_CUSTOM_STATE_UNCUSTOMIZED
lxb_inline bool lxb_dom_element_custom_is_defined(lxb_dom_element_t *element)
lxb_inline lxb_dom_attr_t * lxb_dom_element_prev_attribute(lxb_dom_attr_t *attr)
lxb_inline lxb_dom_attr_t * lxb_dom_element_next_attribute(lxb_dom_attr_t *attr)
lxb_inline bool lxb_dom_element_is_custom(lxb_dom_element_t *element)
lxb_inline lxb_dom_attr_t * lxb_dom_element_last_attribute(lxb_dom_element_t *element)
lxb_inline lxb_dom_attr_t * lxb_dom_element_id_attribute(lxb_dom_element_t *element)
lxb_inline lxb_dom_attr_t * lxb_dom_element_class_attribute(lxb_dom_element_t *element)
lxb_inline const lxb_char_t * lxb_dom_element_class(lxb_dom_element_t *element, size_t *len)
lxb_inline const lxb_char_t * lxb_dom_element_id(lxb_dom_element_t *element, size_t *len)
@ LXB_DOM_NODE_TYPE_ELEMENT
void * lexbor_hash_insert(lexbor_hash_t *hash, const lexbor_hash_insert_t *insert, const lxb_char_t *key, size_t length)
LXB_API const lexbor_hash_insert_t * lexbor_hash_insert_upper
lxb_inline lxb_char_t * lexbor_hash_entry_str(const lexbor_hash_entry_t *entry)
struct lexbor_hash lexbor_hash_t
hash(string $algo, string $data, bool $binary=false, array $options=[])
const lxb_dom_attr_data_t * lxb_dom_attr_data_by_qualified_name(lexbor_hash_t *hash, const lxb_char_t *name, size_t length)
void lxb_dom_attr_remove(lxb_dom_attr_t *attr)
lxb_status_t lxb_dom_attr_set_name(lxb_dom_attr_t *attr, const lxb_char_t *name, size_t length, bool to_lowercase)
lxb_dom_attr_t * lxb_dom_attr_interface_create(lxb_dom_document_t *document)
lxb_dom_attr_t * lxb_dom_attr_interface_clone(lxb_dom_document_t *document, const lxb_dom_attr_t *attr)
bool lxb_dom_attr_compare(lxb_dom_attr_t *first, lxb_dom_attr_t *second)
const lxb_dom_attr_data_t * lxb_dom_attr_data_by_local_name(lexbor_hash_t *hash, const lxb_char_t *name, size_t length)
lxb_dom_attr_t * lxb_dom_attr_interface_destroy(lxb_dom_attr_t *attr)
lxb_status_t lxb_dom_attr_set_value(lxb_dom_attr_t *attr, const lxb_char_t *value, size_t value_len)
bool lxb_dom_element_has_attribute(lxb_dom_element_t *element, const lxb_char_t *qualified_name, size_t qn_len)
lxb_status_t lxb_dom_element_attr_remove(lxb_dom_element_t *element, lxb_dom_attr_t *attr)
lxb_dom_attr_t * lxb_dom_element_class_attribute_noi(lxb_dom_element_t *element)
lxb_dom_attr_t * lxb_dom_element_attr_by_name(lxb_dom_element_t *element, const lxb_char_t *qualified_name, size_t length)
bool lxb_dom_element_compare(lxb_dom_element_t *first, lxb_dom_element_t *second)
lxb_status_t lxb_dom_element_is_set(lxb_dom_element_t *element, const lxb_char_t *is, size_t is_len)
lxb_status_t lxb_dom_elements_by_attr_end(lxb_dom_element_t *root, lxb_dom_collection_t *collection, const lxb_char_t *qname, size_t qname_len, const lxb_char_t *value, size_t value_len, bool case_insensitive)
lxb_status_t lxb_dom_elements_by_tag_name(lxb_dom_element_t *root, lxb_dom_collection_t *collection, const lxb_char_t *qname, size_t len)
lxb_dom_attr_t * lxb_dom_element_set_attribute(lxb_dom_element_t *element, const lxb_char_t *qualified_name, size_t qn_len, const lxb_char_t *value, size_t value_len)
lxb_dom_attr_t * lxb_dom_element_first_attribute_noi(lxb_dom_element_t *element)
lxb_dom_element_t * lxb_dom_element_create(lxb_dom_document_t *document, const lxb_char_t *local_name, size_t lname_len, const lxb_char_t *ns_link, size_t ns_len, const lxb_char_t *prefix, size_t prefix_len, const lxb_char_t *is, size_t is_len, bool sync_custom)
bool lxb_dom_element_custom_is_defined_noi(lxb_dom_element_t *element)
lxb_status_t lxb_dom_element_interface_copy(lxb_dom_element_t *dst, const lxb_dom_element_t *src)
bool lxb_dom_element_has_attributes(lxb_dom_element_t *element)
lxb_status_t lxb_dom_elements_by_attr_contain(lxb_dom_element_t *root, lxb_dom_collection_t *collection, const lxb_char_t *qname, size_t qname_len, const lxb_char_t *value, size_t value_len, bool case_insensitive)
lxb_status_t lxb_dom_element_remove_attribute(lxb_dom_element_t *element, const lxb_char_t *qualified_name, size_t qn_len)
const lxb_char_t * lxb_dom_element_qualified_name(lxb_dom_element_t *element, size_t *len)
const lxb_char_t * lxb_dom_element_prefix(lxb_dom_element_t *element, size_t *len)
const lxb_char_t * lxb_dom_element_tag_name(lxb_dom_element_t *element, size_t *len)
lxb_status_t lxb_dom_elements_by_attr(lxb_dom_element_t *root, lxb_dom_collection_t *collection, const lxb_char_t *qname, size_t qname_len, const lxb_char_t *value, size_t value_len, bool case_insensitive)
lxb_status_t lxb_dom_element_attr_append(lxb_dom_element_t *element, lxb_dom_attr_t *attr)
LXB_API lxb_status_t lxb_dom_element_qualified_name_set(lxb_dom_element_t *element, const lxb_char_t *prefix, size_t prefix_len, const lxb_char_t *lname, size_t lname_len)
lxb_dom_element_t * lxb_dom_element_interface_create(lxb_dom_document_t *document)
const lxb_char_t * lxb_dom_element_qualified_name_upper(lxb_dom_element_t *element, size_t *len)
bool lxb_dom_element_is_custom_noi(lxb_dom_element_t *element)
lxb_dom_attr_t * lxb_dom_element_attr_by_id(lxb_dom_element_t *element, lxb_dom_attr_id_t attr_id)
const lxb_char_t * lxb_dom_element_local_name(lxb_dom_element_t *element, size_t *len)
lxb_dom_attr_t * lxb_dom_element_attr_is_exist(lxb_dom_element_t *element, const lxb_char_t *qualified_name, size_t length)
const lxb_char_t * lxb_dom_element_get_attribute(lxb_dom_element_t *element, const lxb_char_t *qualified_name, size_t qn_len, size_t *value_len)
lxb_status_t lxb_dom_elements_by_class_name(lxb_dom_element_t *root, lxb_dom_collection_t *collection, const lxb_char_t *class_name, size_t len)
lxb_dom_attr_t * lxb_dom_element_id_attribute_noi(lxb_dom_element_t *element)
lxb_dom_attr_t * lxb_dom_element_prev_attribute_noi(lxb_dom_attr_t *attr)
lxb_status_t lxb_dom_elements_by_attr_begin(lxb_dom_element_t *root, lxb_dom_collection_t *collection, const lxb_char_t *qname, size_t qname_len, const lxb_char_t *value, size_t value_len, bool case_insensitive)
lxb_dom_attr_t * lxb_dom_element_attr_by_local_name_data(lxb_dom_element_t *element, const lxb_dom_attr_data_t *data)
lxb_dom_element_t * lxb_dom_element_destroy(lxb_dom_element_t *element)
const lxb_char_t * lxb_dom_element_id_noi(lxb_dom_element_t *element, size_t *len)
lxb_dom_attr_t * lxb_dom_element_last_attribute_noi(lxb_dom_element_t *element)
const lxb_char_t * lxb_dom_element_class_noi(lxb_dom_element_t *element, size_t *len)
const lxb_tag_data_t * lxb_tag_append(lexbor_hash_t *hash, lxb_tag_id_t tag_id, const lxb_char_t *name, size_t length)
const lxb_ns_data_t * lxb_ns_append(lexbor_hash_t *hash, const lxb_char_t *link, size_t length)
lxb_dom_attr_t * lxb_dom_element_next_attribute_noi(lxb_dom_attr_t *attr)
const lxb_tag_data_t * lxb_tag_append_lower(lexbor_hash_t *hash, const lxb_char_t *name, size_t length)
lxb_dom_element_t * lxb_dom_element_interface_destroy(lxb_dom_element_t *element)
lxb_dom_element_t * lxb_dom_element_interface_clone(lxb_dom_document_t *document, const lxb_dom_element_t *element)
lxb_status_t lxb_dom_node_by_attr_begin(lxb_dom_node_t *root, lxb_dom_collection_t *collection, const lxb_char_t *qualified_name, size_t qname_len, const lxb_char_t *value, size_t value_len, bool case_insensitive)
lxb_status_t lxb_dom_node_by_attr_end(lxb_dom_node_t *root, lxb_dom_collection_t *collection, const lxb_char_t *qualified_name, size_t qname_len, const lxb_char_t *value, size_t value_len, bool case_insensitive)
lxb_status_t lxb_dom_node_interface_copy(lxb_dom_node_t *dst, const lxb_dom_node_t *src, bool is_attr)
lxb_status_t lxb_dom_node_by_tag_name(lxb_dom_node_t *root, lxb_dom_collection_t *collection, const lxb_char_t *qualified_name, size_t len)
lxb_status_t lxb_dom_node_by_class_name(lxb_dom_node_t *root, lxb_dom_collection_t *collection, const lxb_char_t *class_name, size_t len)
lxb_status_t lxb_dom_node_by_attr(lxb_dom_node_t *root, lxb_dom_collection_t *collection, const lxb_char_t *qualified_name, size_t qname_len, const lxb_char_t *value, size_t value_len, bool case_insensitive)
lxb_status_t lxb_dom_node_by_attr_contain(lxb_dom_node_t *root, lxb_dom_collection_t *collection, const lxb_char_t *qualified_name, size_t qname_len, const lxb_char_t *value, size_t value_len, bool case_insensitive)
lxb_dom_node_t * lxb_dom_node_interface_destroy(lxb_dom_node_t *node)
LXB_API void * lexbor_free(void *dst)
LXB_API void * lexbor_malloc(size_t size)
void * lexbor_mraw_calloc(lexbor_mraw_t *mraw, size_t size)
const lxb_ns_prefix_data_t * lxb_ns_prefix_append(lexbor_hash_t *hash, const lxb_char_t *prefix, size_t length)
const lxb_ns_data_t * lxb_ns_data_by_id(lexbor_hash_t *hash, lxb_ns_id_t ns_id)
const lxb_ns_prefix_data_t * lxb_ns_prefix_data_by_id(lexbor_hash_t *hash, lxb_ns_prefix_id_t prefix_id)
unsigned char key[REFLECTION_KEY_LEN]
lxb_char_t * lexbor_str_append(lexbor_str_t *str, lexbor_mraw_t *mraw, const lxb_char_t *buff, size_t length)
lxb_char_t * lexbor_str_init(lexbor_str_t *str, lexbor_mraw_t *mraw, size_t size)
lxb_dom_document_dtype_t type
lxb_dom_event_insert_f ev_insert
lxb_dom_attr_id_t upper_name
lxb_dom_element_custom_state_t custom_state
lxb_dom_attr_t * attr_class
lxb_dom_attr_t * last_attr
lxb_dom_attr_t * first_attr
lxb_dom_attr_id_t qualified_name
lxb_dom_document_t * owner_document
lxb_ns_prefix_id_t prefix_id
const lxb_tag_data_t * lxb_tag_data_by_id(lxb_tag_id_t tag_id)
unsigned int lxb_status_t
ZEND_API void(ZEND_FASTCALL *zend_touch_vm_stack_data)(void *vm_stack_data)