mirror of
https://github.com/rkd77/elinks.git
synced 2024-10-01 03:36:26 -04:00
Use a (for now bogus) DOM stack context for holding DOM select data
This commit is contained in:
parent
225e3a6764
commit
da33827771
@ -655,10 +655,13 @@ match_attribute_selectors(struct dom_select_node *base, struct dom_node *node)
|
|||||||
#define has_element_match(selector, name) \
|
#define has_element_match(selector, name) \
|
||||||
((selector)->match.element & (name))
|
((selector)->match.element & (name))
|
||||||
|
|
||||||
|
/* XXX: Assume it is the first context added. */
|
||||||
|
#define get_dom_select_data(stack) ((stack)->contexts->data)
|
||||||
|
|
||||||
static void
|
static void
|
||||||
dom_select_push_element(struct dom_stack *stack, struct dom_node *node, void *data)
|
dom_select_push_element(struct dom_stack *stack, struct dom_node *node, void *data)
|
||||||
{
|
{
|
||||||
struct dom_select_data *select_data = stack->data;
|
struct dom_select_data *select_data = get_dom_select_data(stack);
|
||||||
struct dom_stack_state *state;
|
struct dom_stack_state *state;
|
||||||
int pos;
|
int pos;
|
||||||
|
|
||||||
@ -728,7 +731,7 @@ dom_select_push_element(struct dom_stack *stack, struct dom_node *node, void *da
|
|||||||
static void
|
static void
|
||||||
dom_select_pop_element(struct dom_stack *stack, struct dom_node *node, void *data)
|
dom_select_pop_element(struct dom_stack *stack, struct dom_node *node, void *data)
|
||||||
{
|
{
|
||||||
struct dom_select_data *select_data = stack->data;
|
struct dom_select_data *select_data = get_dom_select_data(stack);
|
||||||
struct dom_stack_state *state;
|
struct dom_stack_state *state;
|
||||||
int index;
|
int index;
|
||||||
|
|
||||||
@ -761,7 +764,7 @@ dom_select_pop_element(struct dom_stack *stack, struct dom_node *node, void *dat
|
|||||||
static void
|
static void
|
||||||
dom_select_push_text(struct dom_stack *stack, struct dom_node *node, void *data)
|
dom_select_push_text(struct dom_stack *stack, struct dom_node *node, void *data)
|
||||||
{
|
{
|
||||||
struct dom_select_data *select_data = stack->data;
|
struct dom_select_data *select_data = get_dom_select_data(stack);
|
||||||
struct dom_stack_state *state = get_dom_stack_top(&select_data->stack);
|
struct dom_stack_state *state = get_dom_stack_top(&select_data->stack);
|
||||||
struct dom_select_node *selector = (void *) state->node;
|
struct dom_select_node *selector = (void *) state->node;
|
||||||
struct dom_select_node *text_sel = get_child_dom_select_node(selector, DOM_NODE_TEXT);
|
struct dom_select_node *text_sel = get_child_dom_select_node(selector, DOM_NODE_TEXT);
|
||||||
@ -819,6 +822,41 @@ static struct dom_stack_context_info dom_select_context_info = {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static struct dom_stack_context_info dom_select_data_context_info = {
|
||||||
|
/* Push: */
|
||||||
|
{
|
||||||
|
/* */ NULL,
|
||||||
|
/* DOM_NODE_ELEMENT */ NULL,
|
||||||
|
/* DOM_NODE_ATTRIBUTE */ NULL,
|
||||||
|
/* DOM_NODE_TEXT */ NULL,
|
||||||
|
/* DOM_NODE_CDATA_SECTION */ NULL,
|
||||||
|
/* DOM_NODE_ENTITY_REFERENCE */ NULL,
|
||||||
|
/* DOM_NODE_ENTITY */ NULL,
|
||||||
|
/* DOM_NODE_PROC_INSTRUCTION */ NULL,
|
||||||
|
/* DOM_NODE_COMMENT */ NULL,
|
||||||
|
/* DOM_NODE_DOCUMENT */ NULL,
|
||||||
|
/* DOM_NODE_DOCUMENT_TYPE */ NULL,
|
||||||
|
/* DOM_NODE_DOCUMENT_FRAGMENT */ NULL,
|
||||||
|
/* DOM_NODE_NOTATION */ NULL,
|
||||||
|
},
|
||||||
|
/* Pop: */
|
||||||
|
{
|
||||||
|
/* */ NULL,
|
||||||
|
/* DOM_NODE_ELEMENT */ NULL,
|
||||||
|
/* DOM_NODE_ATTRIBUTE */ NULL,
|
||||||
|
/* DOM_NODE_TEXT */ NULL,
|
||||||
|
/* DOM_NODE_CDATA_SECTION */ NULL,
|
||||||
|
/* DOM_NODE_ENTITY_REFERENCE */ NULL,
|
||||||
|
/* DOM_NODE_ENTITY */ NULL,
|
||||||
|
/* DOM_NODE_PROC_INSTRUCTION */ NULL,
|
||||||
|
/* DOM_NODE_COMMENT */ NULL,
|
||||||
|
/* DOM_NODE_DOCUMENT */ NULL,
|
||||||
|
/* DOM_NODE_DOCUMENT_TYPE */ NULL,
|
||||||
|
/* DOM_NODE_DOCUMENT_FRAGMENT */ NULL,
|
||||||
|
/* DOM_NODE_NOTATION */ NULL,
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
struct dom_node_list *
|
struct dom_node_list *
|
||||||
select_dom_nodes(struct dom_select *select, struct dom_node *root)
|
select_dom_nodes(struct dom_select *select, struct dom_node *root)
|
||||||
{
|
{
|
||||||
@ -835,6 +873,9 @@ select_dom_nodes(struct dom_select *select, struct dom_node *root)
|
|||||||
&dom_select_context_info);
|
&dom_select_context_info);
|
||||||
|
|
||||||
init_dom_stack(&select_data.stack, &select_data, obj_size, 1);
|
init_dom_stack(&select_data.stack, &select_data, obj_size, 1);
|
||||||
|
add_dom_stack_context(&stack, &select_data,
|
||||||
|
&dom_select_data_context_info);
|
||||||
|
|
||||||
|
|
||||||
if (push_dom_node(&select_data.stack, &select->selector->node)) {
|
if (push_dom_node(&select_data.stack, &select->selector->node)) {
|
||||||
get_dom_stack_top(&select_data.stack)->immutable = 1;
|
get_dom_stack_top(&select_data.stack)->immutable = 1;
|
||||||
|
Loading…
Reference in New Issue
Block a user