1/*
2 *  Copyright (C) 2014 Igalia S.L.
3 *
4 *  This library is free software; you can redistribute it and/or
5 *  modify it under the terms of the GNU Lesser General Public
6 *  License as published by the Free Software Foundation; either
7 *  version 2 of the License, or (at your option) any later version.
8 *
9 *  This library is distributed in the hope that it will be useful,
10 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
11 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12 *  Lesser General Public License for more details.
13 *
14 *  You should have received a copy of the GNU Lesser General Public
15 *  License along with this library; if not, write to the Free Software
16 *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
17 */
18
19#ifndef WebKitDOMNodeFilter_h
20#define WebKitDOMNodeFilter_h
21
22#include <glib-object.h>
23#include <webkitdom/webkitdomdefines.h>
24
25G_BEGIN_DECLS
26
27#define WEBKIT_DOM_TYPE_NODE_FILTER            (webkit_dom_node_filter_get_type ())
28#define WEBKIT_DOM_NODE_FILTER(obj)            (G_TYPE_CHECK_INSTANCE_CAST ((obj), WEBKIT_DOM_TYPE_NODE_FILTER, WebKitDOMNodeFilter))
29#define WEBKIT_DOM_NODE_FILTER_CLASS(obj)      (G_TYPE_CHECK_CLASS_CAST ((obj), WEBKIT_DOM_TYPE_NODE_FILTER, WebKitDOMNodeFilterIface))
30#define WEBKIT_DOM_IS_NODE_FILTER(obj)         (G_TYPE_CHECK_INSTANCE_TYPE ((obj), WEBKIT_DOM_TYPE_NODE_FILTER))
31#define WEBKIT_DOM_NODE_FILTER_GET_IFACE(obj)  (G_TYPE_INSTANCE_GET_INTERFACE ((obj), WEBKIT_DOM_TYPE_NODE_FILTER, WebKitDOMNodeFilterIface))
32
33/**
34 * WEBKIT_DOM_NODE_FILTER_ACCEPT:
35 *
36 * Accept the node. Use this macro as return value of webkit_dom_node_filter_accept_node()
37 * implementation to accept the given #WebKitDOMNode
38 *
39 * Since: 2.6
40 */
41#define WEBKIT_DOM_NODE_FILTER_ACCEPT 1
42
43/**
44 * WEBKIT_DOM_NODE_FILTER_REJECT:
45 *
46 * Reject the node. Use this macro as return value of webkit_dom_node_filter_accept_node()
47 * implementation to reject the given #WebKitDOMNode. The children of the given node will
48 * be rejected too.
49 *
50 * Since: 2.6
51 */
52#define WEBKIT_DOM_NODE_FILTER_REJECT 2
53
54/**
55 * WEBKIT_DOM_NODE_FILTER_SKIP:
56 *
57 * Skip the node. Use this macro as return value of webkit_dom_node_filter_accept_node()
58 * implementation to skip the given #WebKitDOMNode. The children of the given node will
59 * not be skipped.
60 *
61 * Since: 2.6
62 */
63#define WEBKIT_DOM_NODE_FILTER_SKIP   3
64
65/**
66 * WEBKIT_DOM_NODE_FILTER_SHOW_ALL:
67 *
68 * Show all nodes.
69 *
70 * Since: 2.6
71 */
72#define WEBKIT_DOM_NODE_FILTER_SHOW_ALL                    0xFFFFFFFF
73
74/**
75 * WEBKIT_DOM_NODE_FILTER_SHOW_ELEMENT:
76 *
77 * Show #WebKitDOMElement nodes.
78 *
79 * Since: 2.6
80 */
81#define WEBKIT_DOM_NODE_FILTER_SHOW_ELEMENT                0x00000001
82
83/**
84 * WEBKIT_DOM_NODE_FILTER_SHOW_ATTRIBUTE:
85 *
86 * Show #WebKitDOMAttr nodes.
87 *
88 * Since: 2.6
89 */
90#define WEBKIT_DOM_NODE_FILTER_SHOW_ATTRIBUTE              0x00000002
91
92/**
93 * WEBKIT_DOM_NODE_FILTER_SHOW_TEXT:
94 *
95 * Show #WebKitDOMText nodes.
96 *
97 * Since: 2.6
98 */
99#define WEBKIT_DOM_NODE_FILTER_SHOW_TEXT                   0x00000004
100
101/**
102 * WEBKIT_DOM_NODE_FILTER_SHOW_CDATA_SECTION:
103 *
104 * Show #WebKitDOMCDataSection nodes.
105 *
106 * Since: 2.6
107 */
108#define WEBKIT_DOM_NODE_FILTER_SHOW_CDATA_SECTION          0x00000008
109
110/**
111 * WEBKIT_DOM_NODE_FILTER_SHOW_ENTITY_REFERENCE:
112 *
113 * Show #WebKitDOMEntityReference nodes.
114 *
115 * Since: 2.6
116 */
117#define WEBKIT_DOM_NODE_FILTER_SHOW_ENTITY_REFERENCE       0x00000010
118
119/**
120 * WEBKIT_DOM_NODE_FILTER_SHOW_ENTITY:
121 *
122 * Show #WebKitDOMEntity nodes.
123 *
124 * Since: 2.6
125 */
126#define WEBKIT_DOM_NODE_FILTER_SHOW_ENTITY                 0x00000020
127
128/**
129 * WEBKIT_DOM_NODE_FILTER_SHOW_PROCESSING_INSTRUCTION:
130 *
131 * Show #WebKitDOMProcessingInstruction nodes.
132 *
133 * Since: 2.6
134 */
135#define WEBKIT_DOM_NODE_FILTER_SHOW_PROCESSING_INSTRUCTION 0x00000040
136
137/**
138 * WEBKIT_DOM_NODE_FILTER_SHOW_COMMENT:
139 *
140 * Show #WebKitDOMComment nodes.
141 *
142 * Since: 2.6
143 */
144#define WEBKIT_DOM_NODE_FILTER_SHOW_COMMENT                0x00000080
145
146/**
147 * WEBKIT_DOM_NODE_FILTER_SHOW_DOCUMENT:
148 *
149 * Show #WebKitDOMDocument nodes.
150 *
151 * Since: 2.6
152 */
153#define WEBKIT_DOM_NODE_FILTER_SHOW_DOCUMENT               0x00000100
154
155/**
156 * WEBKIT_DOM_NODE_FILTER_SHOW_DOCUMENT_TYPE:
157 *
158 * Show #WebKitDOMDocumentType nodes.
159 *
160 * Since: 2.6
161 */
162#define WEBKIT_DOM_NODE_FILTER_SHOW_DOCUMENT_TYPE          0x00000200
163
164/**
165 * WEBKIT_DOM_NODE_FILTER_SHOW_DOCUMENT_FRAGMENT:
166 *
167 * Show #WebKitDOMDocumentFragment nodes.
168 *
169 * Since: 2.6
170 */
171#define WEBKIT_DOM_NODE_FILTER_SHOW_DOCUMENT_FRAGMENT      0x00000400
172
173/**
174 * WEBKIT_DOM_NODE_FILTER_SHOW_NOTATION:
175 *
176 * Show #WebKitDOMNotation nodes.
177 *
178 * Since: 2.6
179 */
180#define WEBKIT_DOM_NODE_FILTER_SHOW_NOTATION               0x00000800
181
182struct _WebKitDOMNodeFilterIface {
183    GTypeInterface gIface;
184
185    /* virtual table */
186    gshort (* accept_node)(WebKitDOMNodeFilter *filter,
187                           WebKitDOMNode       *node);
188
189    void (*_webkitdom_reserved0) (void);
190    void (*_webkitdom_reserved1) (void);
191    void (*_webkitdom_reserved2) (void);
192    void (*_webkitdom_reserved3) (void);
193};
194
195
196WEBKIT_API GType webkit_dom_node_filter_get_type(void) G_GNUC_CONST;
197
198/**
199 * webkit_dom_node_filter_accept_node:
200 * @filter: A #WebKitDOMNodeFilter
201 * @node: A #WebKitDOMNode
202 *
203 * Returns: a #gshort
204 */
205WEBKIT_API gshort webkit_dom_node_filter_accept_node(WebKitDOMNodeFilter *filter,
206                                                     WebKitDOMNode       *node);
207
208G_END_DECLS
209
210#endif /* WebKitDOMNodeFilter_h */
211