summaryrefslogtreecommitdiff
path: root/src/core/element.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/core/element.h')
-rw-r--r--src/core/element.h89
1 files changed, 89 insertions, 0 deletions
diff --git a/src/core/element.h b/src/core/element.h
index 35e1323..7a674e3 100644
--- a/src/core/element.h
+++ b/src/core/element.h
@@ -17,14 +17,33 @@ struct dom_element;
struct dom_namednodemap;
struct dom_node;
struct dom_string;
+struct dom_attr;
+struct dom_type_info;
+
+/**
+ * DOM element node
+ */
+struct dom_element {
+ struct dom_node_internal base; /**< Base node */
+
+ struct dom_attr *attributes; /**< Element attributes */
+
+ struct dom_type_info *schema_type_info; /**< Type information */
+};
dom_exception dom_element_create(struct dom_document *doc,
struct dom_string *name, struct dom_string *namespace,
struct dom_string *prefix, struct dom_element **result);
+dom_exception dom_element_initialize(struct dom_element *el,
+ struct dom_string *name, struct dom_string *namespace,
+ struct dom_string *prefix, struct dom_element **result);
+
void dom_element_destroy(struct dom_document *doc,
struct dom_element *element);
+void _dom_element_destroy(struct dom_node_internal *node);
+
dom_exception dom_element_get_attributes(struct dom_element *element,
struct dom_namednodemap **result);
@@ -33,4 +52,74 @@ dom_exception dom_element_has_attributes(struct dom_element *element,
struct dom_node *dom_element_get_first_attribute(struct dom_element *element);
+/* The virtual functions of dom_element */
+dom_exception _dom_element_get_tag_name(struct dom_element *element,
+ struct dom_string **name);
+dom_exception _dom_element_get_attribute(struct dom_element *element,
+ struct dom_string *name, struct dom_string **value);
+dom_exception _dom_element_set_attribute(struct dom_element *element,
+ struct dom_string *name, struct dom_string *value);
+dom_exception _dom_element_remove_attribute(struct dom_element *element,
+ struct dom_string *name);
+dom_exception _dom_element_get_attribute_node(struct dom_element *element,
+ struct dom_string *name, struct dom_attr **result);
+dom_exception _dom_element_set_attribute_node(struct dom_element *element,
+ struct dom_attr *attr, struct dom_attr **result);
+dom_exception _dom_element_remove_attribute_node(struct dom_element *element,
+ struct dom_attr *attr, struct dom_attr **result);
+dom_exception _dom_element_get_elements_by_tag_name(struct dom_element *element,
+ struct dom_string *name, struct dom_nodelist **result);
+dom_exception _dom_element_get_attribute_ns(struct dom_element *element,
+ struct dom_string *namespace, struct dom_string *localname,
+ struct dom_string **value);
+dom_exception _dom_element_set_attribute_ns(struct dom_element *element,
+ struct dom_string *namespace, struct dom_string *qname,
+ struct dom_string *value);
+dom_exception _dom_element_remove_attribute_ns(struct dom_element *element,
+ struct dom_string *namespace, struct dom_string *localname);
+dom_exception _dom_element_get_attribute_node_ns(struct dom_element *element,
+ struct dom_string *namespace, struct dom_string *localname,
+ struct dom_attr **result);
+dom_exception _dom_element_set_attribute_node_ns(struct dom_element *element,
+ struct dom_attr *attr, struct dom_attr **result);
+dom_exception _dom_element_get_elements_by_tag_name_ns(
+ struct dom_element *element, struct dom_string *namespace,
+ struct dom_string *localname, struct dom_nodelist **result);
+dom_exception _dom_element_has_attribute(struct dom_element *element,
+ struct dom_string *name, bool *result);
+dom_exception _dom_element_has_attribute_ns(struct dom_element *element,
+ struct dom_string *namespace, struct dom_string *localname,
+ bool *result);
+dom_exception _dom_element_get_schema_type_info(struct dom_element *element,
+ struct dom_type_info **result);
+dom_exception _dom_element_set_id_attribute(struct dom_element *element,
+ struct dom_string *name, bool is_id);
+dom_exception _dom_element_set_id_attribute_ns(struct dom_element *element,
+ struct dom_string *namespace, struct dom_string *localname,
+ bool is_id);
+dom_exception _dom_element_set_id_attribute_node(struct dom_element *element,
+ struct dom_attr *id_attr, bool is_id);
+
+#define DOM_ELEMENT_VTABLE \
+ _dom_element_get_tag_name, \
+ _dom_element_get_attribute, \
+ _dom_element_set_attribute, \
+ _dom_element_remove_attribute, \
+ _dom_element_get_attribute_node, \
+ _dom_element_set_attribute_node, \
+ _dom_element_remove_attribute_node, \
+ _dom_element_get_elements_by_tag_name, \
+ _dom_element_get_attribute_ns, \
+ _dom_element_set_attribute_ns, \
+ _dom_element_remove_attribute_ns, \
+ _dom_element_get_attribute_node_ns, \
+ _dom_element_set_attribute_node_ns, \
+ _dom_element_get_elements_by_tag_name_ns, \
+ _dom_element_has_attribute, \
+ _dom_element_has_attribute_ns, \
+ _dom_element_get_schema_type_info, \
+ _dom_element_set_id_attribute, \
+ _dom_element_set_id_attribute_ns, \
+ _dom_element_set_id_attribute_node
+
#endif