summaryrefslogtreecommitdiff
path: root/include/dom/core/attr.h
blob: 89bf8a2ecac3f6757b5a4b56ac5f6e1948124002 (plain)
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
/*
 * This file is part of libdom.
 * Licensed under the MIT License,
 *                http://www.opensource.org/licenses/mit-license.php
 * Copyright 2007 John-Mark Bell <jmb@netsurf-browser.org>
 */

#ifndef dom_core_attr_h_
#define dom_core_attr_h_

#include <stdbool.h>

#include <dom/core/exceptions.h>
#include <dom/core/node.h>

struct dom_element;
struct dom_type_info;
struct dom_node;
struct dom_attr;
struct dom_string;

/* DOM Attr vtable */
typedef struct dom_attr_vtable {
	struct dom_node_vtable base;

	dom_exception (*dom_attr_get_name)(struct dom_attr *attr,
			struct dom_string **result);
	dom_exception (*dom_attr_get_specified)(struct dom_attr *attr, bool *result);
	dom_exception (*dom_attr_get_value)(struct dom_attr *attr,
			struct dom_string **result);
	dom_exception (*dom_attr_set_value)(struct dom_attr *attr,
			struct dom_string *value);
	dom_exception (*dom_attr_get_owner)(struct dom_attr *attr,
			struct dom_element **result);
	dom_exception (*dom_attr_get_schema_type_info)(struct dom_attr *attr,
			struct dom_type_info **result);
	dom_exception (*dom_attr_is_id)(struct dom_attr *attr, bool *result);
} dom_attr_vtable;

static inline dom_exception dom_attr_get_name(struct dom_attr *attr,
		struct dom_string **result)
{
	return ((dom_attr_vtable *) ((dom_node *) attr)->vtable)->
			dom_attr_get_name(attr, result);
}
#define dom_attr_get_name(a, r) dom_attr_get_name((struct dom_attr *) (a), \
		(struct dom_string **) (r))

static inline dom_exception dom_attr_get_specified(struct dom_attr *attr, bool *result)
{
	return ((dom_attr_vtable *) ((dom_node *) attr)->vtable)->
			dom_attr_get_specified(attr, result);
}
#define dom_attr_get_specified(a, r) dom_attr_get_specified( \
		(struct dom_attr *) (a), (struct dom_string **) (r))

static inline dom_exception dom_attr_get_value(struct dom_attr *attr,
		struct dom_string **result)
{
	return ((dom_attr_vtable *) ((dom_node *) attr)->vtable)->
			dom_attr_get_value(attr, result);
}
#define dom_attr_get_value(a, r) dom_attr_get_value((struct dom_attr *) (a), \
		(struct dom_string **) (r))

static inline dom_exception dom_attr_set_value(struct dom_attr *attr,
		struct dom_string *value)
{
	return ((dom_attr_vtable *) ((dom_node *) attr)->vtable)->
			dom_attr_set_value(attr, value);
}
#define dom_attr_set_value(a, v) dom_attr_set_value((struct dom_attr *) (a), \
		(struct dom_string *) (v))

static inline dom_exception dom_attr_get_owner(struct dom_attr *attr,
		struct dom_element **result)
{
	return ((dom_attr_vtable *) ((dom_node *) attr)->vtable)->
			dom_attr_get_owner(attr, result);
}
#define dom_attr_get_owner(a, r) dom_attr_get_owner((struct dom_attr *) (a), \
		(struct dom_element **) (r))

static inline dom_exception dom_attr_get_schema_type_info(struct dom_attr *attr,
		struct dom_type_info **result)
{
	return ((dom_attr_vtable *) ((dom_node *) attr)->vtable)->
			dom_attr_get_schema_type_info(attr, result);
}
#define dom_attr_get_schema_type_info(a, r) dom_attr_get_schema_type_info( \
		(struct dom_attr *) (a), (struct dom_type_info **) (r))

static inline dom_exception dom_attr_is_id(struct dom_attr *attr, bool *result)
{
	return ((dom_attr_vtable *) ((dom_node *) attr)->vtable)->
			dom_attr_is_id(attr, result);
}
#define dom_attr_is_id(a, r) dom_attr_is_id((struct dom_attr *) (a), \
		(bool *) (r))

#endif