From 279a99067e1167a8bb1388cd49e6ba23393f93f6 Mon Sep 17 00:00:00 2001 From: Bo Yang Date: Thu, 19 Mar 2009 14:00:05 +0000 Subject: Convert DOMFragment to use vtable structure. svn path=/trunk/dom/; revision=6806 --- src/core/doc_fragment.c | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) (limited to 'src/core/doc_fragment.c') 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 */ +#include + #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); +} -- cgit v1.2.3