From 67c6d527e52e3a3a27e75f6d41858b8fb97c7338 Mon Sep 17 00:00:00 2001 From: Karl Seguin Date: Sat, 17 May 2025 13:13:33 +0800 Subject: [PATCH] Add embedder data to internal node Add embedder data getter and setter. --- include/dom/core/node.h | 3 +++ src/core/node.c | 18 ++++++++++++++++++ src/core/node.h | 2 ++ 3 files changed, 23 insertions(+) diff --git a/include/dom/core/node.h b/include/dom/core/node.h index 90026a10..c7eac8af 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 014f11ce..87eb265e 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 ec1cb6d6..6af48ccf 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);