diff --git a/include/dom/core/node.h b/include/dom/core/node.h index 90026a1..c7eac8a 100644 --- a/include/dom/core/node.h +++ b/include/dom/core/node.h @@ -210,6 +210,9 @@ dom_exception _dom_node_contains(struct dom_node_internal *node, #define dom_node_contains(n, o, c) \ _dom_node_contains((dom_node_internal *)(n), (dom_node_internal *)(o), (c)) +void *_dom_node_get_embedder_data(struct dom_node_internal *node); +void _dom_node_set_embedder_data(struct dom_node_internal *node, void *data); + /* All the rest are virtual */ static inline dom_exception dom_node_get_node_name(struct dom_node *node, diff --git a/src/core/node.c b/src/core/node.c index 014f11c..87eb265 100644 --- a/src/core/node.c +++ b/src/core/node.c @@ -149,6 +149,7 @@ dom_exception _dom_node_initialise(dom_node_internal *node, dom_string *namespace, dom_string *prefix) { node->owner = doc; + node->embedder_data = NULL; if (name != NULL) node->name = dom_string_ref(name); @@ -323,6 +324,23 @@ dom_exception _dom_node_contains(struct dom_node_internal *node, return DOM_NO_ERR; } +/** + * Retrieves the embedders data +**/ +void *_dom_node_get_embedder_data(struct dom_node_internal *node) +{ + assert(node != NULL); + return node->embedder_data; +} + +/** + * set the embedders data +**/ +void _dom_node_set_embedder_data(struct dom_node_internal *node, void *data) +{ + assert(node != NULL); + node->embedder_data = data; +} /* ---------------------------------------------------------------------*/ diff --git a/src/core/node.h b/src/core/node.h index ec1cb6d..6af48cc 100644 --- a/src/core/node.h +++ b/src/core/node.h @@ -76,6 +76,8 @@ struct dom_node_internal { struct list_entry pending_list; /**< The document delete pending list */ dom_event_target_internal eti; /**< The EventTarget interface */ + + void *embedder_data; /* arbitrary embedders data to associate with this node */ }; dom_node_internal * _dom_node_create(void);