diff options
Diffstat (limited to 'src/core/doc_fragment.c')
-rw-r--r-- | src/core/doc_fragment.c | 69 |
1 files changed, 31 insertions, 38 deletions
diff --git a/src/core/doc_fragment.c b/src/core/doc_fragment.c index 1d320b5..96cc707 100644 --- a/src/core/doc_fragment.c +++ b/src/core/doc_fragment.c @@ -6,7 +6,7 @@ * Copyright 2009 Bo Yang <struggleyb.nku@gmail.com> */ -#include <libwapcaplet/libwapcaplet.h> +#include <stdlib.h> #include <dom/core/node.h> @@ -19,10 +19,13 @@ * A DOM document fragment */ struct dom_document_fragment { - struct dom_node_internal base; /**< Base node */ + dom_node_internal base; /**< Base node */ }; static struct dom_node_vtable df_vtable = { + { + DOM_NODE_EVENT_TARGET_VTABLE + }, DOM_NODE_VTABLE }; @@ -44,20 +47,17 @@ static struct dom_node_protect_vtable df_protect_vtable = { * * The returned node will already be referenced. */ -dom_exception _dom_document_fragment_create(struct dom_document *doc, - struct lwc_string_s *name, dom_string *value, - struct dom_document_fragment **result) +dom_exception _dom_document_fragment_create(dom_document *doc, + dom_string *name, dom_string *value, + dom_document_fragment **result) { - struct dom_document_fragment *f; + dom_document_fragment *f; dom_exception err; - /* Allocate the comment node */ - f = _dom_document_alloc(doc, NULL, - sizeof(struct dom_document_fragment)); + f = malloc(sizeof(dom_document_fragment)); if (f == NULL) return DOM_NO_MEM_ERR; - f->base.base.vtable = &df_vtable; f->base.vtable = &df_protect_vtable; @@ -65,7 +65,7 @@ dom_exception _dom_document_fragment_create(struct dom_document *doc, err = _dom_document_fragment_initialise(&f->base, doc, DOM_DOCUMENT_FRAGMENT_NODE, name, value, NULL, NULL); if (err != DOM_NO_ERR) { - _dom_document_alloc(doc, f, 0); + free(f); return err; } @@ -77,19 +77,17 @@ dom_exception _dom_document_fragment_create(struct dom_document *doc, /** * Destroy a document fragment * - * \param doc The owning document * \param frag The document fragment to destroy * * The contents of ::frag will be destroyed and ::frag will be freed. */ -void _dom_document_fragment_destroy(struct dom_document *doc, - struct dom_document_fragment *frag) +void _dom_document_fragment_destroy(dom_document_fragment *frag) { /* Finalise base class */ - _dom_document_fragment_finalise(doc, &frag->base); + _dom_document_fragment_finalise(&frag->base); /* Destroy fragment */ - _dom_document_alloc(doc, frag, 0); + free(frag); } /*-----------------------------------------------------------------------*/ @@ -97,34 +95,29 @@ void _dom_document_fragment_destroy(struct dom_document *doc, /* Overload protected functions */ /* The virtual destroy function of this class */ -void _dom_df_destroy(struct dom_node_internal *node) +void _dom_df_destroy(dom_node_internal *node) { - _dom_document_fragment_destroy(node->owner, - (struct dom_document_fragment *) node); + _dom_document_fragment_destroy((dom_document_fragment *) node); } -/* The memory allocator of this class */ -dom_exception _dom_df_alloc(struct dom_document *doc, - struct dom_node_internal *n, struct dom_node_internal **ret) +/* The copy constructor of this class */ +dom_exception _dom_df_copy(dom_node_internal *old, dom_node_internal **copy) { - UNUSED(n); - struct dom_document_fragment *a; - - a = _dom_document_alloc(doc, NULL, - sizeof(struct dom_document_fragment)); - if (a == NULL) + dom_document_fragment *new_f; + dom_exception err; + + new_f = malloc(sizeof(dom_document_fragment)); + if (new_f == NULL) return DOM_NO_MEM_ERR; - - *ret = (dom_node_internal *) a; - dom_node_set_owner(*ret, doc); - return DOM_NO_ERR; -} + err = dom_node_copy_internal(old, new_f); + if (err != DOM_NO_ERR) { + free(new_f); + return err; + } -/* The copy constructor of this class */ -dom_exception _dom_df_copy(struct dom_node_internal *new, - struct dom_node_internal *old) -{ - return _dom_node_copy(new, old); + *copy = (dom_node_internal *) new_f; + + return DOM_NO_ERR; } |