From 99a601a856a2bd6c9974db589b0ef3f54e04aeca Mon Sep 17 00:00:00 2001 From: John Mark Bell Date: Wed, 21 Dec 2011 22:18:10 +0000 Subject: Merge branches/jmb/dom-alloc-purge back to trunk svn path=/trunk/libdom/; revision=13316 --- src/core/entity_ref.c | 69 ++++++++++++++++++++++++--------------------------- 1 file changed, 32 insertions(+), 37 deletions(-) (limited to 'src/core/entity_ref.c') 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 */ -#include +#include #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; } -- cgit v1.2.3