Subversion Repositories Kolibri OS

Rev

Go to most recent revision | Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
3584 sourcerer 1
/*
2
 * This file is part of libdom.
3
 * Licensed under the MIT License,
4
 *                http://www.opensource.org/licenses/mit-license.php
5
 * Copyright 2009 Bo Yang 
6
 */
7
 
8
#ifndef dom_internal_html_element_h_
9
#define dom_internal_html_element_h_
10
 
11
#include 
12
 
13
#include "core/element.h"
14
 
15
struct dom_html_document;
16
 
17
/**
18
 * The dom_html_element class
19
 *
20
 */
21
struct dom_html_element {
22
	struct dom_element base;
23
			/**< The base class */
24
};
25
 
26
dom_exception _dom_html_element_create(struct dom_html_document *doc,
27
		dom_string *name, dom_string *namespace,
28
		dom_string *prefix, dom_html_element **result);
29
 
30
dom_exception _dom_html_element_initialise(struct dom_html_document *doc,
31
		struct dom_html_element *el, dom_string *name,
32
		dom_string *namespace, dom_string *prefix);
33
 
34
void _dom_html_element_finalise(struct dom_html_element *ele);
35
 
36
/* Virtual functions */
37
dom_exception _dom_html_element_get_elements_by_tag_name(
38
		struct dom_element *element, dom_string *name,
39
		struct dom_nodelist **result);
40
 
41
dom_exception _dom_html_element_get_elements_by_tag_name_ns(
42
		struct dom_element *element, dom_string *namespace,
43
		dom_string *localname, struct dom_nodelist **result);
44
 
45
 
46
/* The protected virtual functions */
47
void _dom_html_element_destroy(dom_node_internal *node);
48
dom_exception _dom_html_element_copy(dom_node_internal *old,
49
		dom_node_internal **copy);
50
 
51
#define DOM_ELEMENT_VTABLE_HTML_ELEMENT \
52
	_dom_element_get_tag_name, \
53
	_dom_element_get_attribute, \
54
	_dom_element_set_attribute, \
55
	_dom_element_remove_attribute, \
56
	_dom_element_get_attribute_node, \
57
	_dom_element_set_attribute_node, \
58
	_dom_element_remove_attribute_node, \
59
	_dom_html_element_get_elements_by_tag_name, \
60
	_dom_element_get_attribute_ns, \
61
	_dom_element_set_attribute_ns, \
62
	_dom_element_remove_attribute_ns, \
63
	_dom_element_get_attribute_node_ns, \
64
	_dom_element_set_attribute_node_ns, \
65
	_dom_html_element_get_elements_by_tag_name_ns, \
66
	_dom_element_has_attribute, \
67
	_dom_element_has_attribute_ns, \
68
	_dom_element_get_schema_type_info, \
69
	_dom_element_set_id_attribute, \
70
	_dom_element_set_id_attribute_ns, \
71
	_dom_element_set_id_attribute_node, \
72
	_dom_element_get_classes, \
73
	_dom_element_has_class
74
 
75
#define DOM_HTML_ELEMENT_PROTECT_VTABLE \
76
	_dom_html_element_destroy, \
77
	_dom_html_element_copy
78
 
79
 
80
/* The API functions */
81
dom_exception _dom_html_element_get_id(dom_html_element *element,
82
                                       dom_string **id);
83
dom_exception _dom_html_element_set_id(dom_html_element *element,
84
                                       dom_string *id);
85
dom_exception _dom_html_element_get_title(dom_html_element *element,
86
                                       dom_string **title);
87
dom_exception _dom_html_element_set_title(dom_html_element *element,
88
                                       dom_string *title);
89
dom_exception _dom_html_element_get_lang(dom_html_element *element,
90
                                       dom_string **lang);
91
dom_exception _dom_html_element_set_lang(dom_html_element *element,
92
                                       dom_string *lang);
93
dom_exception _dom_html_element_get_dir(dom_html_element *element,
94
                                       dom_string **dir);
95
dom_exception _dom_html_element_set_dir(dom_html_element *element,
96
                                       dom_string *dir);
97
dom_exception _dom_html_element_get_class_name(dom_html_element *element,
98
                                       dom_string **class_name);
99
dom_exception _dom_html_element_set_class_name(dom_html_element *element,
100
                                       dom_string *class_name);
101
 
102
#define DOM_HTML_ELEMENT_VTABLE \
103
	_dom_html_element_get_id, \
104
	_dom_html_element_set_id, \
105
	_dom_html_element_get_title, \
106
	_dom_html_element_set_title, \
107
	_dom_html_element_get_lang, \
108
	_dom_html_element_set_lang, \
109
	_dom_html_element_get_dir, \
110
	_dom_html_element_set_dir, \
111
	_dom_html_element_get_class_name, \
112
	_dom_html_element_set_class_name
113
 
114
/* Some common functions used by all child classes */
115
dom_exception dom_html_element_get_bool_property(dom_html_element *ele,
116
		const char *name, uint32_t len, bool *has);
117
dom_exception dom_html_element_set_bool_property(dom_html_element *ele,
118
		const char *name, uint32_t len, bool has);
119
 
120
dom_exception dom_html_element_get_int32_t_property(dom_html_element *ele,
121
		const char *name, uint32_t len, int32_t *value);
122
dom_exception dom_html_element_set_int32_t_property(dom_html_element *ele,
123
		const char *name, uint32_t len, uint32_t value);
124
 
125
extern struct dom_html_element_vtable _dom_html_element_vtable;
126
 
127
#endif
128