summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorBo Yang <struggleyb.nku@gmail.com>2009-03-19 14:00:05 +0000
committerBo Yang <struggleyb.nku@gmail.com>2009-03-19 14:00:05 +0000
commit366e21e1dc75ab4f334091582b05aa02a85574d6 (patch)
tree01ff711d0a8f488d504b57d68e91f1ce5dd3e3e0 /src
parent2d2b525d83419bffbd7dc32c5a046f6eb4d2943a (diff)
downloadlibdom-366e21e1dc75ab4f334091582b05aa02a85574d6.tar.gz
libdom-366e21e1dc75ab4f334091582b05aa02a85574d6.tar.bz2
Convert DOMFragment to use vtable structure.
svn path=/trunk/dom/; revision=6806
Diffstat (limited to 'src')
-rw-r--r--src/core/doc_fragment.c20
1 files changed, 18 insertions, 2 deletions
diff --git a/src/core/doc_fragment.c b/src/core/doc_fragment.c
index b6dbd26..d9eb272 100644
--- a/src/core/doc_fragment.c
+++ b/src/core/doc_fragment.c
@@ -5,6 +5,8 @@
* Copyright 2007 John-Mark Bell <jmb@netsurf-browser.org>
*/
+#include <dom/core/node.h>
+
#include "core/document.h"
#include "core/doc_fragment.h"
#include "core/node.h"
@@ -13,9 +15,11 @@
* A DOM document fragment
*/
struct dom_document_fragment {
- struct dom_node base; /**< Base node */
+ struct dom_node_internal base; /**< Base node */
};
+void _dom_document_fragment_destroy(struct dom_node_internal *node);
+
/**
* Create a document fragment
*
@@ -51,6 +55,9 @@ dom_exception dom_document_fragment_create(struct dom_document *doc,
return err;
}
+ /* Set the virtual function of destroy */
+ f->base.destroy = &_dom_document_fragment_destroy;
+
*result = f;
return DOM_NO_ERR;
@@ -67,7 +74,7 @@ dom_exception dom_document_fragment_create(struct dom_document *doc,
void dom_document_fragment_destroy(struct dom_document *doc,
struct dom_document_fragment *frag)
{
- struct dom_node *c, *d;
+ struct dom_node_internal *c, *d;
/* Destroy children of this node */
for (c = frag->base.first_child; c != NULL; c = d) {
@@ -97,3 +104,12 @@ void dom_document_fragment_destroy(struct dom_document *doc,
/* Destroy fragment */
dom_document_alloc(doc, frag, 0);
}
+
+void _dom_document_fragment_destroy(struct dom_node_internal *node)
+{
+ struct dom_document *doc;
+ dom_node_get_owner_document(node, &doc);
+
+ dom_document_fragment_destroy(doc,
+ (struct dom_document_fragment *) node);
+}