82 lxb_css_selector_destroy_undef,
83 lxb_css_selector_destroy_any,
84 lxb_css_selector_destroy_any,
85 lxb_css_selector_destroy_id,
86 lxb_css_selector_destroy_id,
87 lxb_css_selector_destroy_attribute,
88 lxb_css_selector_destroy_undef,
89 lxb_css_selector_destroy_pseudo_class_function,
90 lxb_css_selector_destroy_undef,
91 lxb_css_selector_destroy_pseudo_element_function
97 lxb_css_selector_serialize_undef,
98 lxb_css_selector_serialize_any,
99 lxb_css_selector_serialize_any,
100 lxb_css_selector_serialize_id,
101 lxb_css_selector_serialize_class,
102 lxb_css_selector_serialize_attribute,
103 lxb_css_selector_serialize_pseudo_class,
104 lxb_css_selector_serialize_pseudo_class_function,
105 lxb_css_selector_serialize_pseudo_element,
106 lxb_css_selector_serialize_pseudo_element_function
114 if (selector ==
NULL) {
118 selector->
list = list;
128 if (selector !=
NULL) {
131 lxb_selector_destroy_map[selector->
type](selector, memory);
141 while (selector !=
NULL) {
163 if (selector->
list->
last == selector) {
201 if (selectors->
list == list) {
224 while (list !=
NULL) {
294 switch (pseudo->
type) {
318 anbof = pseudo->
data;
346 return lxb_selector_serialize_map[selector->
type](selector,
cb, ctx);
357 if (selector ==
NULL) {
376 selector = selector->
next;
378 while (selector !=
NULL) {
398 selector = selector->
next;
435 if (out_length !=
NULL) {
443 if (out_length !=
NULL) {
492 if (out_length !=
NULL) {
500 if (out_length !=
NULL) {
524 while (list !=
NULL) {
569 if (out_length !=
NULL) {
577 if (out_length !=
NULL) {
651 status = lxb_css_selector_serialize_any(selector,
cb, ctx);
662 switch (
attr->match) {
686 p =
attr->value.data;
714 switch (
attr->modifier) {
735 return lxb_css_selector_serialize_pseudo_single(selector,
cb, ctx,
true);
748 pfunc = &lxb_css_selectors_pseudo_data_pseudo_class_function[pseudo->
type];
754 switch (pseudo->
type) {
810 return lxb_css_selector_serialize_pseudo_single(selector,
cb, ctx,
false);
832 pclass = &lxb_css_selectors_pseudo_data_pseudo_class[pseudo->
type];
836 pclass = &lxb_css_selectors_pseudo_data_pseudo_element[pseudo->
type];
872 if (out_length !=
NULL) {*out_length = 1;}
876 if (out_length !=
NULL) {*out_length = 0;}
880 if (out_length !=
NULL) {*out_length = 1;}
884 if (out_length !=
NULL) {*out_length = 1;}
888 if (out_length !=
NULL) {*out_length = 1;}
892 if (out_length !=
NULL) {*out_length = 2;}
896 if (out_length !=
NULL) {*out_length = 0;}
911 list->
first = selector;
914 list->
last = selector;
lxb_status_t lxb_css_syntax_anb_serialize(lxb_css_syntax_anb_t *anb, lexbor_serialize_cb_f cb, void *ctx)
lxb_status_t(* lexbor_serialize_cb_f)(const lxb_char_t *data, size_t len, void *ctx)
@ LXB_STATUS_ERROR_UNEXPECTED_DATA
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)
struct lxb_css_selector lxb_css_selector_t
struct lxb_css_selector_list lxb_css_selector_list_t
struct lxb_css_selectors lxb_css_selectors_t
#define lxb_css_selector_serialize_write(data, length)
void * lexbor_dobject_calloc(lexbor_dobject_t *dobject)
void * lexbor_dobject_free(lexbor_dobject_t *dobject, void *data)
LXB_API void * lexbor_free(void *dst)
LXB_API void * lexbor_malloc(size_t size)
void * lexbor_mraw_free(lexbor_mraw_t *mraw, void *data)
unsigned const char * end
@ LXB_CSS_SELECTOR_PSEUDO_CLASS_FUNCTION_NTH_LAST_COL
@ LXB_CSS_SELECTOR_PSEUDO_CLASS_FUNCTION_NTH_LAST_OF_TYPE
@ LXB_CSS_SELECTOR_PSEUDO_CLASS_FUNCTION_IS
@ LXB_CSS_SELECTOR_PSEUDO_CLASS_FUNCTION_DIR
@ LXB_CSS_SELECTOR_PSEUDO_CLASS_FUNCTION_HAS
@ LXB_CSS_SELECTOR_PSEUDO_CLASS_FUNCTION_NTH_COL
@ LXB_CSS_SELECTOR_PSEUDO_CLASS_FUNCTION_CURRENT
@ LXB_CSS_SELECTOR_PSEUDO_CLASS_FUNCTION_LANG
@ LXB_CSS_SELECTOR_PSEUDO_CLASS_FUNCTION_WHERE
@ LXB_CSS_SELECTOR_PSEUDO_CLASS_FUNCTION_NTH_CHILD
@ LXB_CSS_SELECTOR_PSEUDO_CLASS_FUNCTION_NTH_OF_TYPE
@ LXB_CSS_SELECTOR_PSEUDO_CLASS_FUNCTION_NOT
@ LXB_CSS_SELECTOR_PSEUDO_CLASS_FUNCTION_NTH_LAST_CHILD
lxb_css_selector_list_t * lxb_css_selector_list_create(lxb_css_memory_t *mem)
void lxb_css_selector_list_remove(lxb_css_selector_list_t *list)
void lxb_css_selector_remove(lxb_css_selector_t *selector)
lxb_status_t(* lxb_css_selector_serialize_f)(lxb_css_selector_t *selector, lexbor_serialize_cb_f cb, void *ctx)
void lxb_css_selector_list_destroy_memory(lxb_css_selector_list_t *list)
lxb_char_t * lxb_css_selector_serialize_chain_char(lxb_css_selector_t *selector, size_t *out_length)
lxb_char_t * lxb_css_selector_serialize_list_chain_char(lxb_css_selector_list_t *list, size_t *out_length)
void lxb_css_selector_destroy_chain(lxb_css_selector_t *selector)
void lxb_css_selector_list_append_next(lxb_css_selector_list_t *dist, lxb_css_selector_list_t *src)
lxb_status_t lxb_css_selector_serialize_list(lxb_css_selector_list_t *list, lexbor_serialize_cb_f cb, void *ctx)
lxb_css_selector_t * lxb_css_selector_create(lxb_css_selector_list_t *list)
void lxb_css_selector_list_destroy(lxb_css_selector_list_t *list)
void lxb_css_selector_append_next(lxb_css_selector_t *dist, lxb_css_selector_t *src)
void lxb_css_selector_list_destroy_chain(lxb_css_selector_list_t *list)
lxb_status_t lxb_css_selector_serialize(lxb_css_selector_t *selector, lexbor_serialize_cb_f cb, void *ctx)
lxb_status_t lxb_css_selector_serialize_list_chain(lxb_css_selector_list_t *list, lexbor_serialize_cb_f cb, void *ctx)
lxb_status_t lxb_css_selector_serialize_anb_of(lxb_css_selector_anb_of_t *anbof, lexbor_serialize_cb_f cb, void *ctx)
lxb_char_t * lxb_css_selector_serialize_list_char(lxb_css_selector_list_t *list, size_t *out_length)
lxb_char_t * lxb_css_selector_combinator(lxb_css_selector_t *selector, size_t *out_length)
void lxb_css_selector_list_append(lxb_css_selector_list_t *list, lxb_css_selector_t *selector)
void lxb_css_selector_list_selectors_remove(lxb_css_selectors_t *selectors, lxb_css_selector_list_t *list)
lxb_status_t lxb_css_selector_serialize_chain(lxb_css_selector_t *selector, lexbor_serialize_cb_f cb, void *ctx)
void(* lxb_css_selector_destroy_f)(lxb_css_selector_t *selector, lxb_css_memory_t *mem)
void lxb_css_selector_destroy(lxb_css_selector_t *selector)
@ LXB_CSS_SELECTOR_COMBINATOR_CELL
@ LXB_CSS_SELECTOR_COMBINATOR_CLOSE
@ LXB_CSS_SELECTOR_COMBINATOR_DESCENDANT
@ LXB_CSS_SELECTOR_COMBINATOR_SIBLING
@ LXB_CSS_SELECTOR_COMBINATOR_CHILD
@ LXB_CSS_SELECTOR_COMBINATOR_FOLLOWING
@ LXB_CSS_SELECTOR_TYPE__LAST_ENTRY
@ LXB_CSS_SELECTOR_MODIFIER_UNSET
@ LXB_CSS_SELECTOR_MODIFIER_S
@ LXB_CSS_SELECTOR_MODIFIER_I
@ LXB_CSS_SELECTOR_MATCH_PREFIX
@ LXB_CSS_SELECTOR_MATCH_SUBSTRING
@ LXB_CSS_SELECTOR_MATCH_DASH
@ LXB_CSS_SELECTOR_MATCH_SUFFIX
@ LXB_CSS_SELECTOR_MATCH_INCLUDE
@ LXB_CSS_SELECTOR_MATCH_EQUAL
lxb_status_t lexbor_serialize_length_cb(const lxb_char_t *data, size_t length, void *ctx)
lxb_status_t lexbor_serialize_copy_cb(const lxb_char_t *data, size_t length, void *ctx)
lxb_css_selector_list_t * of
lxb_css_selector_list_t * next
lxb_css_memory_t * memory
lxb_css_selector_t * last
lxb_css_selector_list_t * prev
lxb_css_selector_t * first
lxb_css_selector_type_t type
lxb_css_selector_t * next
lxb_css_selector_t * prev
lxb_css_selector_list_t * list
union lxb_css_selector::lxb_css_selector_u u
lxb_css_selector_combinator_t combinator
lxb_css_selector_list_t * list_last
lxb_css_selector_list_t * list
unsigned int lxb_status_t
lxb_css_selector_attribute_t attribute
lxb_css_selector_pseudo_t pseudo
ZEND_API void(ZEND_FASTCALL *zend_touch_vm_stack_data)(void *vm_stack_data)