diff options
author | John Mark Bell <jmb@netsurf-browser.org> | 2011-12-21 22:18:10 +0000 |
---|---|---|
committer | John Mark Bell <jmb@netsurf-browser.org> | 2011-12-21 22:18:10 +0000 |
commit | 99a601a856a2bd6c9974db589b0ef3f54e04aeca (patch) | |
tree | e48ba69628c5ba793533094e308c1fce9acb21aa /src/core/entity_ref.c | |
parent | 05a3cf37e14017a3593ed9e17e4a83b003ef29d6 (diff) | |
download | libdom-99a601a856a2bd6c9974db589b0ef3f54e04aeca.tar.gz libdom-99a601a856a2bd6c9974db589b0ef3f54e04aeca.tar.bz2 |
Merge branches/jmb/dom-alloc-purge back to trunk
svn path=/trunk/libdom/; revision=13316
Diffstat (limited to 'src/core/entity_ref.c')
-rw-r--r-- | src/core/entity_ref.c | 69 |
1 files changed, 32 insertions, 37 deletions
diff --git a/src/core/entity_ref.c b/src/core/entity_ref.c index f35b306..aa32111 100644 --- a/src/core/entity_ref.c +++ b/src/core/entity_ref.c @@ -6,7 +6,7 @@ * Copyright 2009 Bo Yang <struggleyb.nku@gmail.com> */ -#include <libwapcaplet/libwapcaplet.h> +#include <stdlib.h> #include "core/document.h" #include "core/entity_ref.h" @@ -17,10 +17,13 @@ * A DOM entity reference */ struct dom_entity_reference { - struct dom_node_internal base; /**< Base node */ + dom_node_internal base; /**< Base node */ }; static struct dom_node_vtable er_vtable = { + { + DOM_NODE_EVENT_TARGET_VTABLE + }, DOM_NODE_VTABLE }; @@ -42,16 +45,15 @@ static struct dom_node_protect_vtable er_protect_vtable = { * * The returned node will already be referenced. */ -dom_exception _dom_entity_reference_create(struct dom_document *doc, - struct lwc_string_s *name, dom_string *value, - struct dom_entity_reference **result) +dom_exception _dom_entity_reference_create(dom_document *doc, + dom_string *name, dom_string *value, + dom_entity_reference **result) { - struct dom_entity_reference *e; + dom_entity_reference *e; dom_exception err; /* Allocate the comment node */ - e = _dom_document_alloc(doc, NULL, - sizeof(struct dom_entity_reference)); + e = malloc(sizeof(dom_entity_reference)); if (e == NULL) return DOM_NO_MEM_ERR; @@ -62,7 +64,7 @@ dom_exception _dom_entity_reference_create(struct dom_document *doc, err = _dom_entity_reference_initialise(&e->base, doc, DOM_ENTITY_REFERENCE_NODE, name, value, NULL, NULL); if (err != DOM_NO_ERR) { - _dom_document_alloc(doc, e, 0); + free(e); return err; } @@ -74,19 +76,17 @@ dom_exception _dom_entity_reference_create(struct dom_document *doc, /** * Destroy an entity reference * - * \param doc The owning document * \param entity The entity reference to destroy * * The contents of ::entity will be destroyed and ::entity will be freed. */ -void _dom_entity_reference_destroy(struct dom_document *doc, - struct dom_entity_reference *entity) +void _dom_entity_reference_destroy(dom_entity_reference *entity) { /* Finalise base class */ - _dom_entity_reference_finalise(doc, &entity->base); + _dom_entity_reference_finalise(&entity->base); /* Destroy fragment */ - _dom_document_alloc(doc, entity, 0); + free(entity); } /** @@ -101,7 +101,7 @@ void _dom_entity_reference_destroy(struct dom_document *doc, * finished with it. */ dom_exception _dom_entity_reference_get_textual_representation( - struct dom_entity_reference *entity, dom_string **result) + dom_entity_reference *entity, dom_string **result) { UNUSED(entity); UNUSED(result); @@ -114,34 +114,29 @@ dom_exception _dom_entity_reference_get_textual_representation( /* Following comes the protected vtable */ /* The virtual destroy function of this class */ -void _dom_er_destroy(struct dom_node_internal *node) +void _dom_er_destroy(dom_node_internal *node) { - _dom_entity_reference_destroy(node->owner, - (struct dom_entity_reference *) node); + _dom_entity_reference_destroy((dom_entity_reference *) node); } -/* The memory allocator of this class */ -dom_exception _dom_er_alloc(struct dom_document *doc, - struct dom_node_internal *n, struct dom_node_internal **ret) +/* The copy constructor of this class */ +dom_exception _dom_er_copy(dom_node_internal *old, dom_node_internal **copy) { - UNUSED(n); - dom_entity_reference *a; - - a = _dom_document_alloc(doc, NULL, sizeof(struct dom_entity_reference)); - if (a == NULL) + dom_entity_reference *new_er; + dom_exception err; + + new_er = malloc(sizeof(dom_entity_reference)); + if (new_er == 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_er); + if (err != DOM_NO_ERR) { + free(new_er); + return err; + } -/* The copy constructor of this class */ -dom_exception _dom_er_copy(struct dom_node_internal *new, - struct dom_node_internal *old) -{ - return _dom_node_copy(new, old); + *copy = (dom_node_internal *) new_er; + + return DOM_NO_ERR; } |