85lxb_dom_node_text_content_concatenate(
lxb_dom_node_t *node,
void *ctx);
95 if (element ==
NULL) {
170 entry = &
data->entry;
265 while (node !=
NULL) {
270 while(node != root && node->
next ==
NULL) {
304 switch (node->
type) {
315 *
len =
sizeof(
"#text") - 1;
322 *
len =
sizeof(
"#cdata-section") - 1;
333 *
len =
sizeof(
"#comment") - 1;
340 *
len =
sizeof(
"#document") - 1;
351 *
len =
sizeof(
"#document-fragment") - 1;
354 return (
const lxb_char_t *)
"#document-fragment";
490 while (parent->first_child !=
NULL) {
506 while (node !=
NULL) {
507 action = walker_cb(node, ctx);
516 while(node != root && node->
next ==
NULL) {
541 prefix_end = memchr(qname,
':', qlen);
543 if (prefix_end !=
NULL) {
544 length = prefix_end - qname;
551 if (prefix_data ==
NULL) {
559 if (length >= qlen) {
568 if (attr_data ==
NULL) {
589 prefix_end = memchr(qname,
':', qlen);
591 if (prefix_end !=
NULL) {
592 length = prefix_end - qname;
599 if (prefix_data ==
NULL) {
607 if (length >= qlen) {
616 if (tag_data ==
NULL) {
633 cb_ctx.
col = collection;
636 if (
len == 1 && *qualified_name == 0x2A) {
643 qualified_name,
len);
653 lxb_dom_node_by_tag_name_cb, &cb_ctx);
701 if (class_name ==
NULL ||
len == 0) {
707 cb_ctx.
col = collection;
708 cb_ctx.
value = class_name;
712 lxb_dom_node_by_class_name_cb, &cb_ctx);
799 const lxb_char_t *qualified_name,
size_t qname_len,
801 bool case_insensitive)
806 cb_ctx.
col = collection;
811 qualified_name, qname_len);
820 if (case_insensitive) {
821 cb_ctx.
cmp_func = lxb_dom_node_by_attr_cmp_full_case;
824 cb_ctx.
cmp_func = lxb_dom_node_by_attr_cmp_full;
835 const lxb_char_t *qualified_name,
size_t qname_len,
837 bool case_insensitive)
842 cb_ctx.
col = collection;
847 qualified_name, qname_len);
856 if (case_insensitive) {
857 cb_ctx.
cmp_func = lxb_dom_node_by_attr_cmp_begin_case;
860 cb_ctx.
cmp_func = lxb_dom_node_by_attr_cmp_begin;
864 lxb_dom_node_by_attr_cb, &cb_ctx);
871 const lxb_char_t *qualified_name,
size_t qname_len,
873 bool case_insensitive)
878 cb_ctx.
col = collection;
883 qualified_name, qname_len);
892 if (case_insensitive) {
893 cb_ctx.
cmp_func = lxb_dom_node_by_attr_cmp_end_case;
896 cb_ctx.
cmp_func = lxb_dom_node_by_attr_cmp_end;
907 const lxb_char_t *qualified_name,
size_t qname_len,
909 bool case_insensitive)
914 cb_ctx.
col = collection;
919 qualified_name, qname_len);
928 if (case_insensitive) {
929 cb_ctx.
cmp_func = lxb_dom_node_by_attr_cmp_contain_case;
932 cb_ctx.
cmp_func = lxb_dom_node_by_attr_cmp_contain;
1090 switch (node->
type) {
1113 if (attr_text ==
NULL) {
1157 text[length] = 0x00;
1181lxb_dom_node_text_content_concatenate(
lxb_dom_node_t *node,
void *ctx)
1203 switch (node->
type) {
1232 content,
len, 0, 0);
1249 while (node !=
NULL) {
1271 while(node != root && node->
next ==
NULL) {
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
@ LXB_DOM_ATTR__LAST_ENTRY
link(string $target, string $link)
lxb_status_t lxb_dom_character_data_replace(lxb_dom_character_data_t *ch_data, const lxb_char_t *data, size_t len, size_t offset, size_t count)
lxb_inline lxb_status_t lxb_dom_collection_append(lxb_dom_collection_t *col, void *value)
@ LXB_STATUS_ERROR_MEMORY_ALLOCATION
@ LXB_STATUS_ERROR_WRONG_ARGS
@ LXB_STATUS_ERROR_NOT_EXISTS
lxb_inline const lxb_char_t * lxb_dom_document_type_name(lxb_dom_document_type_t *doc_type, size_t *len)
struct lxb_dom_document lxb_dom_document_t
#define lxb_dom_interface_element(obj)
#define lxb_dom_interface_attr(obj)
#define lxb_dom_interface_node(obj)
#define lxb_dom_interface_processing_instruction(obj)
struct lxb_dom_node lxb_dom_node_t
struct lxb_dom_character_data lxb_dom_character_data_t
#define lxb_dom_interface_document_type(obj)
struct lxb_dom_attr lxb_dom_attr_t
struct lxb_dom_text lxb_dom_text_t
#define lxb_dom_interface_character_data(obj)
struct lxb_dom_element lxb_dom_element_t
#define lxb_dom_interface_text(obj)
lxb_inline lxb_char_t * lxb_dom_document_create_text(lxb_dom_document_t *document, size_t len)
lxb_inline lxb_dom_document_t * lxb_dom_document_owner(lxb_dom_document_t *document)
@ LXB_DOM_DOCUMENT_CMODE_QUIRKS
lxb_inline lxb_dom_interface_t * lxb_dom_document_destroy_interface(lxb_dom_interface_t *intrfc)
lxb_inline lxb_dom_node_t * lxb_dom_node_prev(lxb_dom_node_t *node)
lxb_inline lxb_tag_id_t lxb_dom_node_tag_id(lxb_dom_node_t *node)
lexbor_action_t(* lxb_dom_node_simple_walker_f)(lxb_dom_node_t *node, void *ctx)
@ LXB_DOM_NODE_TYPE_COMMENT
@ LXB_DOM_NODE_TYPE_CDATA_SECTION
@ LXB_DOM_NODE_TYPE_PROCESSING_INSTRUCTION
@ LXB_DOM_NODE_TYPE_UNDEF
@ LXB_DOM_NODE_TYPE_DOCUMENT
@ LXB_DOM_NODE_TYPE_DOCUMENT_FRAGMENT
@ LXB_DOM_NODE_TYPE_DOCUMENT_TYPE
@ LXB_DOM_NODE_TYPE_ATTRIBUTE
@ LXB_DOM_NODE_TYPE_ELEMENT
lxb_inline lxb_dom_node_t * lxb_dom_node_parent(lxb_dom_node_t *node)
lxb_inline lxb_dom_node_t * lxb_dom_node_last_child(lxb_dom_node_t *node)
lxb_inline lxb_dom_node_t * lxb_dom_node_first_child(lxb_dom_node_t *node)
lxb_inline lxb_dom_node_t * lxb_dom_node_next(lxb_dom_node_t *node)
lxb_inline lxb_char_t * lexbor_hash_entry_str(const lexbor_hash_entry_t *entry)
struct lexbor_hash lexbor_hash_t
struct lexbor_hash_entry lexbor_hash_entry_t
hash(string $algo, string $data, bool $binary=false, array $options=[])
const lxb_char_t * lxb_dom_attr_qualified_name(lxb_dom_attr_t *attr, size_t *len)
lxb_status_t lxb_dom_attr_set_existing_value(lxb_dom_attr_t *attr, const lxb_char_t *value, size_t value_len)
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)
const lxb_dom_attr_data_t * lxb_dom_attr_data_by_id(lexbor_hash_t *hash, lxb_dom_attr_id_t attr_id)
lxb_dom_node_t * lxb_dom_document_import_node(lxb_dom_document_t *doc, lxb_dom_node_t *node, bool deep)
lxb_dom_text_t * lxb_dom_document_create_text_node(lxb_dom_document_t *document, const lxb_char_t *data, size_t len)
const lxb_char_t * lxb_dom_element_tag_name(lxb_dom_element_t *element, size_t *len)
lxb_dom_attr_t * lxb_dom_element_attr_by_id(lxb_dom_element_t *element, lxb_dom_attr_id_t attr_id)
lxb_inline lxb_status_t lxb_dom_node_prepare_by_attr(lxb_dom_document_t *document, lxb_dom_node_cb_ctx_t *cb_ctx, const lxb_char_t *qname, size_t qlen)
LXB_API lxb_dom_attr_data_t * lxb_dom_attr_local_name_append(lexbor_hash_t *hash, const lxb_char_t *name, size_t length)
struct lxb_dom_node_cb_ctx lxb_dom_node_cb_ctx_t
lxb_status_t lxb_dom_node_text_content_set(lxb_dom_node_t *node, const lxb_char_t *content, size_t len)
lxb_dom_node_t * lxb_dom_node_prev_noi(lxb_dom_node_t *node)
lxb_dom_node_t * lxb_dom_node_interface_create(lxb_dom_document_t *document)
void lxb_dom_node_remove_wo_events(lxb_dom_node_t *node)
lxb_dom_node_t * lxb_dom_node_clone(lxb_dom_node_t *node, bool deep)
void lxb_dom_node_remove(lxb_dom_node_t *node)
lxb_dom_node_t * lxb_dom_node_interface_clone(lxb_dom_document_t *document, const lxb_dom_node_t *node, bool is_attr)
lxb_dom_node_t * lxb_dom_node_destroy_deep(lxb_dom_node_t *root)
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_dom_node_t * lxb_dom_node_first_child_noi(lxb_dom_node_t *node)
void lxb_dom_node_insert_after_wo_events(lxb_dom_node_t *to, lxb_dom_node_t *node)
void lxb_dom_node_simple_walk(lxb_dom_node_t *root, lxb_dom_node_simple_walker_f walker_cb, void *ctx)
lxb_status_t lxb_dom_node_interface_copy(lxb_dom_node_t *dst, const lxb_dom_node_t *src, bool is_attr)
LXB_API 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)
void lxb_dom_node_insert_child(lxb_dom_node_t *to, lxb_dom_node_t *node)
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_char_t * lxb_dom_node_text_content(lxb_dom_node_t *node, size_t *len)
lxb_status_t lxb_dom_node_replace_all(lxb_dom_node_t *parent, lxb_dom_node_t *node)
const lxb_char_t * lxb_dom_node_name(lxb_dom_node_t *node, size_t *len)
lxb_inline lxb_status_t lxb_dom_node_prepare_by(lxb_dom_document_t *document, lxb_dom_node_cb_ctx_t *cb_ctx, const lxb_char_t *qname, size_t qlen)
LXB_API const lxb_ns_data_t * lxb_ns_append(lexbor_hash_t *hash, const lxb_char_t *link, size_t length)
void lxb_dom_node_insert_after(lxb_dom_node_t *to, lxb_dom_node_t *node)
bool(* lxb_dom_node_attr_cmp_f)(lxb_dom_node_cb_ctx_t *ctx, lxb_dom_attr_t *attr)
lxb_dom_node_t * lxb_dom_node_destroy(lxb_dom_node_t *node)
lxb_dom_node_t * lxb_dom_node_next_noi(lxb_dom_node_t *node)
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_last_child_noi(lxb_dom_node_t *node)
void lxb_dom_node_insert_before_wo_events(lxb_dom_node_t *to, lxb_dom_node_t *node)
void lxb_dom_node_insert_child_wo_events(lxb_dom_node_t *to, lxb_dom_node_t *node)
bool lxb_dom_node_is_empty(const lxb_dom_node_t *root)
void lxb_dom_node_insert_before(lxb_dom_node_t *to, lxb_dom_node_t *node)
lxb_tag_id_t lxb_dom_node_tag_id_noi(lxb_dom_node_t *node)
lxb_dom_node_t * lxb_dom_node_interface_destroy(lxb_dom_node_t *node)
lxb_dom_node_t * lxb_dom_node_parent_noi(lxb_dom_node_t *node)
void * lexbor_mraw_free(lexbor_mraw_t *mraw, void *data)
void * lexbor_mraw_calloc(lexbor_mraw_t *mraw, size_t size)
uintptr_t lxb_ns_prefix_id_t
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_prefix_data_t * lxb_ns_prefix_data_by_name(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 const char * end
unsigned const char * pos
unsigned const char * text
lxb_inline const lxb_char_t * lxb_dom_processing_instruction_target(lxb_dom_processing_instruction_t *pi, size_t *len)
bool lexbor_str_data_ncmp_contain(const lxb_char_t *where, size_t where_size, const lxb_char_t *what, size_t what_size)
bool lexbor_str_data_ncasecmp(const lxb_char_t *first, const lxb_char_t *sec, size_t size)
bool lexbor_str_data_ncmp_end(const lxb_char_t *first, const lxb_char_t *sec, size_t size)
bool lexbor_str_data_ncasecmp_end(const lxb_char_t *first, const lxb_char_t *sec, size_t size)
bool lexbor_str_data_ncmp(const lxb_char_t *first, const lxb_char_t *sec, size_t size)
bool lexbor_str_data_ncasecmp_contain(const lxb_char_t *where, size_t where_size, const lxb_char_t *what, size_t what_size)
lxb_dom_attr_id_t attr_id
lxb_dom_document_cmode_t compat_mode
lxb_dom_event_remove_f ev_remove
lxb_dom_event_insert_f ev_insert
lxb_dom_event_destroy_f ev_destroy
lxb_dom_attr_t * attr_class
lxb_ns_prefix_id_t prefix_id
lxb_dom_node_attr_cmp_f cmp_func
lxb_dom_collection_t * col
lxb_dom_attr_id_t name_id
lxb_dom_node_t * first_child
lxb_dom_document_t * owner_document
lxb_dom_node_t * last_child
lexbor_hash_entry_t entry
lxb_ns_prefix_id_t prefix_id
lexbor_hash_entry_t entry
const lxb_tag_data_t * lxb_tag_data_by_name(lexbor_hash_t *hash, const lxb_char_t *name, size_t len)
const lxb_tag_data_t * lxb_tag_data_by_id(lxb_tag_id_t tag_id)
unsigned int lxb_status_t
#define lexbor_utils_whitespace(onechar, action, logic)