summaryrefslogtreecommitdiff
path: root/src/core/entity_ref.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/core/entity_ref.c')
-rw-r--r--src/core/entity_ref.c69
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;
}