22#if defined(HAVE_LIBXML) && defined(HAVE_DOM)
33} dom_query_selector_all_ctx;
36 const xmlNode *reference;
38} dom_query_selector_matches_ctx;
50 xmlNodePtr *
result = (xmlNodePtr *) ctx;
51 *
result = (xmlNodePtr) node;
57 dom_query_selector_all_ctx *qsa_ctx = (dom_query_selector_all_ctx *) ctx;
66 dom_query_selector_matches_ctx *matches_ctx = (dom_query_selector_matches_ctx *) ctx;
67 if (node == matches_ctx->reference) {
68 matches_ctx->result =
true;
96 if (nr_of_messages > 0) {
148 dom_selector_cleanup(&parser, &selectors, list);
173 dom_selector_cleanup(&parser, &selectors, list);
178static const xmlNode *dom_query_closest(
193 dom_query_selector_matches_ctx ctx = {
current,
false };
207 dom_selector_cleanup(&parser, &selectors, list);
217 if (dom_query_selector_common(
221 dom_query_selector_find_single_callback,
235 dom_query_selector_all_ctx ctx = { list, intern };
237 if (dom_query_selector_common(
241 dom_query_selector_find_array_callback,
251 ZVAL_ARR(&mapptr->baseobj_zv, list);
259 dom_query_selector_matches_ctx ctx = { thisp,
false };
261 if (dom_query_matches(
276 const xmlNode *
result = dom_query_closest(thisp, intern, selectors_str);
lxb_inline size_t lexbor_array_obj_length(lexbor_array_obj_t *array)
lxb_inline void * lexbor_array_obj_get(const lexbor_array_obj_t *array, size_t idx)
struct lxb_css_parser lxb_css_parser_t
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)
struct lxb_css_selector_list lxb_css_selector_list_t
lxb_css_selector_list_t * lxb_css_selectors_parse(lxb_css_parser_t *parser, const lxb_char_t *data, size_t length)
void php_dom_throw_error_with_message(dom_exception_code error_code, const char *error_message, bool strict_error)
memset(ptr, 0, type->size)
void dom_element_closest(xmlNodePtr thisp, dom_object *intern, zval *return_value, const zend_string *selectors_str)
void dom_parent_node_query_selector(xmlNodePtr thisp, dom_object *intern, zval *return_value, const zend_string *selectors_str)
void dom_parent_node_query_selector_all(xmlNodePtr thisp, dom_object *intern, zval *return_value, const zend_string *selectors_str)
void dom_element_matches(xmlNodePtr thisp, dom_object *intern, zval *return_value, const zend_string *selectors_str)
void php_dom_create_iterator(zval *return_value, dom_iterator_type iterator_type, bool modern)
PHP_JSON_API size_t int options
void lxb_css_selector_list_destroy_memory(lxb_css_selector_list_t *list)
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)
struct lxb_selectors lxb_selectors_t
lxb_inline void lxb_selectors_opt_set(lxb_selectors_t *selectors, lxb_selectors_opt_t opt)
@ LXB_SELECTORS_OPT_DEFAULT
@ LXB_SELECTORS_OPT_QUIRKS_MODE
@ LXB_SELECTORS_OPT_MATCH_FIRST
lxb_status_t(* lxb_selectors_cb_f)(const xmlNode *node, lxb_css_selector_specificity_t spec, void *ctx)
php_libxml_ref_obj * document
lexbor_array_obj_t messages
unsigned int lxb_status_t
struct _dom_object dom_object
#define DOM_RET_OBJ(obj, domobject)
PHP_DOM_EXPORT bool php_dom_create_object(xmlNodePtr obj, zval *return_value, dom_object *domobj)
ZEND_API size_t zend_spprintf(char **message, size_t max_len, const char *format,...)
ZEND_API ZEND_COLD void zend_argument_value_error(uint32_t arg_num, const char *format,...)
ZEND_API void(ZEND_FASTCALL *zend_touch_vm_stack_data)(void *vm_stack_data)
ZEND_API zval *ZEND_FASTCALL zend_hash_next_index_insert_new(HashTable *ht, zval *pData)
ZEND_API void ZEND_FASTCALL zend_array_destroy(HashTable *ht)
#define zend_new_array(size)
struct _zend_string zend_string
#define EXPECTED(condition)
#define UNEXPECTED(condition)
struct _zend_array HashTable