diff options
Diffstat (limited to 'src/dom/watcher.h')
-rw-r--r-- | src/dom/watcher.h | 36 |
1 files changed, 35 insertions, 1 deletions
diff --git a/src/dom/watcher.h b/src/dom/watcher.h index a6f2568..0883fd2 100644 --- a/src/dom/watcher.h +++ b/src/dom/watcher.h @@ -15,15 +15,49 @@ struct dom_document; struct nsl_dom_watcher; /** + * DOM watcher's mutation types + */ +enum nsl_dom_watcher_type { + NSL_DOM_WATCHER_NODE_INSERTED, + NSL_DOM_WATCHER_NODE_REMOVED, + NSL_DOM_WATCHER_SUBTREE_MODIFIED, + NSL_DOM_WATCHER_ATTR_MODIFIED, + NSL_DOM_WATCHER_CHAR_DATA_MODIFIED, + NSL_DOM_WATCHER__COUNT, +}; + + +/** + * Callback function for dom modifications. + * + * \param[in] type The mutation type. + * \param[in] node The target node. (Caller yields ownership.) + * \param[in] node_type The type of node. + * \param[in] pw The dom watcher owner's private data. + * \return NSLAYOUT_OK on success, appropriate error otherwise. + */ +typedef nslayout_error (*nsl_dom_watcher_cb)( + enum nsl_dom_watcher_type type, + dom_event_target *node, + dom_node_type node_type, + void *pw); + + +/** * Create DOM change watcher for a DOM document. * * \param[out] watcher_out Returns a dom watcher object for layout. * \param[in] document DOM document to create watcher for. + * \param[in] watcher_cb Function to call when dom modification happens. + * \param[in] pw Private data passed back to `watcher_cb`. * \return NSLAYOUT_OK on success, appropriate error otherwise. */ nslayout_error nsl_dom_watcher_create( struct nsl_dom_watcher **watcher_out, - dom_document *document); + dom_document *document, + nsl_dom_watcher_cb watcher_cb, + void *pw); + /** * Destroy a document change DOM change watcher. |