1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
|
/*
* This file is part of libdom.
* Licensed under the MIT License,
* http://www.opensource.org/licenses/mit-license.php
* Copyright 2009 Bo Yang <struggleyb.nku@gmail.com>
*/
#include "events/text_event.h"
#include "core/document.h"
static void _virtual_dom_text_event_destroy(struct dom_event *evt);
static struct dom_event_private_vtable _event_vtable = {
_virtual_dom_text_event_destroy
};
/* Constructor */
dom_exception _dom_text_event_create(struct dom_document *doc,
struct dom_text_event **evt)
{
*evt = _dom_document_alloc(doc, NULL, sizeof(dom_text_event));
if (*evt == NULL)
return DOM_NO_MEM_ERR;
((struct dom_event *) *evt)->vtable = &_event_vtable;
return _dom_text_event_initialise(doc, *evt);
}
/* Destructor */
void _dom_text_event_destroy(struct dom_document *doc,
struct dom_text_event *evt)
{
_dom_text_event_finalise(doc, evt);
_dom_document_alloc(doc, evt, 0);
}
/* Initialise function */
dom_exception _dom_text_event_initialise(struct dom_document *doc,
struct dom_text_event *evt)
{
evt->data = NULL;
return _dom_ui_event_initialise(doc, &evt->base);
}
/* Finalise function */
void _dom_text_event_finalise(struct dom_document *doc,
struct dom_text_event *evt)
{
dom_string_unref(evt->data);
_dom_ui_event_finalise(doc, &evt->base);
}
/* The virtual destroy function */
void _virtual_dom_text_event_destroy(struct dom_event *evt)
{
_dom_text_event_destroy(evt->doc, (dom_text_event *) evt);
}
/*----------------------------------------------------------------------*/
/* The public API */
/**
* Get the internal data of this event
*
* \param evt The Event object
* \param data The internal data of this Event
* \return DOM_NO_ERR.
*/
dom_exception _dom_text_event_get_data(dom_text_event *evt,
dom_string **data)
{
*data = evt->data;
dom_string_ref(*data);
return DOM_NO_ERR;
}
/**
* Initialise the TextEvent
*
* \param evt The Event object
* \param type The type of this UIEvent
* \param bubble Whether this event can bubble
* \param cancelable Whether this event is cancelable
* \param view The AbstractView of this UIEvent
* \param data The text data
* \return DOM_NO_ERR on success, appropriate dom_exception on failure.
*/
dom_exception _dom_text_event_init(dom_text_event *evt,
dom_string *type, bool bubble, bool cancelable,
struct dom_abstract_view *view, dom_string *data)
{
evt->data = data;
dom_string_ref(data);
return _dom_ui_event_init(&evt->base, type, bubble, cancelable,
view, 0);
}
/**
* Initialise the TextEvent with namespace
*
* \param evt The Event object
* \param namespace The namespace of this Event
* \param type The type of this UIEvent
* \param bubble Whether this event can bubble
* \param cancelable Whether this event is cancelable
* \param view The AbstractView of this UIEvent
* \param data The text data
* \return DOM_NO_ERR on success, appropriate dom_exception on failure.
*/
dom_exception _dom_text_event_init_ns(dom_text_event *evt,
dom_string *namespace, dom_string *type,
bool bubble, bool cancelable, struct dom_abstract_view *view,
dom_string *data)
{
evt->data = data;
dom_string_ref(data);
return _dom_ui_event_init_ns(&evt->base, namespace, type, bubble,
cancelable, view, 0);
}
|