summaryrefslogtreecommitdiff
path: root/src/core/doc_fragment.c
diff options
context:
space:
mode:
authorJohn Mark Bell <jmb@netsurf-browser.org>2011-12-21 22:18:10 +0000
committerJohn Mark Bell <jmb@netsurf-browser.org>2011-12-21 22:18:10 +0000
commit83f3338663c4969eebefd8c2c43bd3fc43587fdd (patch)
treee48ba69628c5ba793533094e308c1fce9acb21aa /src/core/doc_fragment.c
parent4ade8ad1c7b23e6eeeee6681acbdb43fb10cab43 (diff)
downloadlibdom-83f3338663c4969eebefd8c2c43bd3fc43587fdd.tar.gz
libdom-83f3338663c4969eebefd8c2c43bd3fc43587fdd.tar.bz2
Merge branches/jmb/dom-alloc-purge back to trunk
svn path=/trunk/libdom/; revision=13316
Diffstat (limited to 'src/core/doc_fragment.c')
-rw-r--r--src/core/doc_fragment.c69
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;
}