diff options
Diffstat (limited to 'src/core/node.c')
-rw-r--r-- | src/core/node.c | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/src/core/node.c b/src/core/node.c index 17f93dd..2bd95d3 100644 --- a/src/core/node.c +++ b/src/core/node.c @@ -296,6 +296,36 @@ void _dom_node_finalise(dom_node_internal *node) /* ---------------------------------------------------------------------*/ +/* The public non-virtual function of this interface Node */ + +dom_exception _dom_node_contains(struct dom_node_internal *node, + struct dom_node_internal *other, + bool *contains) +{ + assert(node != NULL); + assert(other != NULL); + assert(contains != NULL); + + if (node->owner != other->owner) { + *contains = false; + return DOM_NO_ERR; + } + + while (other != NULL) { + if (other == node) { + *contains = true; + return DOM_NO_ERR; + } + other = other->parent; + } + + *contains = false; + return DOM_NO_ERR; +} + + +/* ---------------------------------------------------------------------*/ + /* The public virtual function of this interface Node */ /** |