From efd1b61ffdbb92f6557e960a4590cd0c403f58df Mon Sep 17 00:00:00 2001 From: Daniel Silverstone Date: Sat, 24 Mar 2012 16:45:24 +0000 Subject: get_text_content working for all textual nodes modulo processing instructions svn path=/trunk/libdom/; revision=13601 --- src/core/characterdata.c | 16 +++++++++++++++- src/core/characterdata.h | 45 +++++++++++++++++++++++++++++++++++++++++++++ src/core/text.c | 2 +- 3 files changed, 61 insertions(+), 2 deletions(-) diff --git a/src/core/characterdata.c b/src/core/characterdata.c index ff89401..79b5fbe 100644 --- a/src/core/characterdata.c +++ b/src/core/characterdata.c @@ -26,7 +26,7 @@ struct dom_characterdata_vtable characterdata_vtable = { { DOM_NODE_EVENT_TARGET_VTABLE }, - DOM_NODE_VTABLE + DOM_NODE_VTABLE_CHARACTERDATA }, DOM_CHARACTERDATA_VTABLE }; @@ -452,7 +452,21 @@ dom_exception _dom_characterdata_replace_data(struct dom_characterdata *cdata, return _dom_dispatch_subtree_modified_event(doc, c->parent, &success); } +dom_exception _dom_characterdata_get_text_content(dom_node_internal *node, + dom_string **result) +{ + dom_characterdata *cdata = (dom_characterdata *)node; + + return dom_characterdata_get_data(cdata, result); +} +dom_exception _dom_characterdata_set_text_content(dom_node_internal *node, + dom_string *content) +{ + dom_characterdata *cdata = (dom_characterdata *)node; + + return dom_characterdata_set_data(cdata, content); +} /*----------------------------------------------------------------------*/ diff --git a/src/core/characterdata.h b/src/core/characterdata.h index 7b15030..cd1be0a 100644 --- a/src/core/characterdata.h +++ b/src/core/characterdata.h @@ -47,6 +47,12 @@ dom_exception _dom_characterdata_delete_data(struct dom_characterdata *cdata, dom_exception _dom_characterdata_replace_data(struct dom_characterdata *cdata, unsigned long offset, unsigned long count, dom_string *data); +dom_exception _dom_characterdata_get_text_content( + dom_node_internal *node, + dom_string **result); +dom_exception _dom_characterdata_set_text_content( + dom_node_internal *node, + dom_string *content); #define DOM_CHARACTERDATA_VTABLE \ _dom_characterdata_get_data, \ @@ -58,6 +64,45 @@ dom_exception _dom_characterdata_replace_data(struct dom_characterdata *cdata, _dom_characterdata_delete_data, \ _dom_characterdata_replace_data +#define DOM_NODE_VTABLE_CHARACTERDATA \ + _dom_node_get_node_name, \ + _dom_node_get_node_value, \ + _dom_node_set_node_value, \ + _dom_node_get_node_type, \ + _dom_node_get_parent_node, \ + _dom_node_get_child_nodes, \ + _dom_node_get_first_child, \ + _dom_node_get_last_child, \ + _dom_node_get_previous_sibling, \ + _dom_node_get_next_sibling, \ + _dom_node_get_attributes, \ + _dom_node_get_owner_document, \ + _dom_node_insert_before, \ + _dom_node_replace_child, \ + _dom_node_remove_child, \ + _dom_node_append_child, \ + _dom_node_has_child_nodes, \ + _dom_node_clone_node, \ + _dom_node_normalize, \ + _dom_node_is_supported, \ + _dom_node_get_namespace, \ + _dom_node_get_prefix, \ + _dom_node_set_prefix, \ + _dom_node_get_local_name, \ + _dom_node_has_attributes, \ + _dom_node_get_base, \ + _dom_node_compare_document_position, \ + _dom_characterdata_get_text_content, /* override */ \ + _dom_characterdata_set_text_content, /* override */ \ + _dom_node_is_same, \ + _dom_node_lookup_prefix, \ + _dom_node_is_default_namespace, \ + _dom_node_lookup_namespace, \ + _dom_node_is_equal, \ + _dom_node_get_feature, \ + _dom_node_set_user_data, \ + _dom_node_get_user_data + /* Following comes the protected vtable * * Only the _copy function can be used by sub-class of this. diff --git a/src/core/text.c b/src/core/text.c index 1a5adaa..532ee13 100644 --- a/src/core/text.c +++ b/src/core/text.c @@ -26,7 +26,7 @@ struct dom_text_vtable text_vtable = { { DOM_NODE_EVENT_TARGET_VTABLE, }, - DOM_NODE_VTABLE + DOM_NODE_VTABLE_CHARACTERDATA }, DOM_CHARACTERDATA_VTABLE }, -- cgit v1.2.3