mirror of
https://github.com/rkd77/elinks.git
synced 2025-04-18 00:47:36 -04:00
Add get_dom_node_prev() which gets the previous sibling of a DOM node
This commit is contained in:
parent
4e6b05394d
commit
768f97c38e
@ -225,16 +225,15 @@ get_dom_node_map_entry(struct dom_node_list *list, enum dom_node_type type,
|
|||||||
return dom_node_list_bsearch(&search, list);
|
return dom_node_list_bsearch(&search, list);
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
static int
|
||||||
get_dom_node_list_index(struct dom_node *parent, struct dom_node *node)
|
get_dom_node_list_pos(struct dom_node_list *list, struct dom_node *node)
|
||||||
{
|
{
|
||||||
struct dom_node_list **list = get_dom_node_list(parent, node);
|
|
||||||
struct dom_node *entry;
|
struct dom_node *entry;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
if (!list) return -1;
|
assert(list);
|
||||||
|
|
||||||
foreach_dom_node (*list, entry, i) {
|
foreach_dom_node (list, entry, i) {
|
||||||
if (entry == node)
|
if (entry == node)
|
||||||
return i;
|
return i;
|
||||||
}
|
}
|
||||||
@ -242,6 +241,32 @@ get_dom_node_list_index(struct dom_node *parent, struct dom_node *node)
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
get_dom_node_list_index(struct dom_node *parent, struct dom_node *node)
|
||||||
|
{
|
||||||
|
struct dom_node_list **list = get_dom_node_list(parent, node);
|
||||||
|
|
||||||
|
return list ? get_dom_node_list_pos(*list, node) : -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
struct dom_node *
|
||||||
|
get_dom_node_prev(struct dom_node *node)
|
||||||
|
{
|
||||||
|
struct dom_node_list **list;
|
||||||
|
int index;
|
||||||
|
|
||||||
|
assert(node->parent);
|
||||||
|
|
||||||
|
list = get_dom_node_list(node->parent, node);
|
||||||
|
if (!list) return NULL;
|
||||||
|
|
||||||
|
index = get_dom_node_list_pos(*list, node);
|
||||||
|
if (index > 0)
|
||||||
|
return (*list)->entries[index - 1];
|
||||||
|
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
/* Nodes */
|
/* Nodes */
|
||||||
|
|
||||||
struct dom_node *
|
struct dom_node *
|
||||||
|
@ -243,6 +243,9 @@ int get_dom_node_list_index(struct dom_node *parent, struct dom_node *node);
|
|||||||
* @list is already sorted properly. */
|
* @list is already sorted properly. */
|
||||||
int get_dom_node_map_index(struct dom_node_list *list, struct dom_node *node);
|
int get_dom_node_map_index(struct dom_node_list *list, struct dom_node *node);
|
||||||
|
|
||||||
|
/* Returns the previous sibling to the node. */
|
||||||
|
struct dom_node *get_dom_node_prev(struct dom_node *node);
|
||||||
|
|
||||||
/* Looks up the @node_map for a node matching the requested type and name.
|
/* Looks up the @node_map for a node matching the requested type and name.
|
||||||
* The @subtype maybe be 0 indication unknown subtype and only name should be
|
* The @subtype maybe be 0 indication unknown subtype and only name should be
|
||||||
* tested else it will indicate either the element or attribute private
|
* tested else it will indicate either the element or attribute private
|
||||||
|
Loading…
x
Reference in New Issue
Block a user