|
|
1.1 paf 1: /* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 2; tab-width: 2 -*- */
2: /* gdome-xml-node.h
3: *
4: * Copyright (C) 1999 Raph Levien <raph@acm.org>
5: * Copyright (C) 2000 Mathieu Lacage <mathieu@gnu.org>
6: * Copyright (C) 2001 Paolo Casarini <paolo@casarini.org>
7: *
8: * This library is free software; you can redistribute it and/or
9: * modify it under the terms of the GNU Lesser General Public
10: * License as published by the Free Software Foundation; either
11: * version 2.1 of the License, or (at your option) any later version.
12: *
13: * This library is distributed in the hope that it will be useful,
14: * but WITHOUT ANY WARRANTY; without even the implied warranty of
15: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16: * Lesser General Public License for more details.
17: *
18: * You should have received a copy of the GNU Lesser General Public
19: * License along with this library; if not, write to the Free Software
20: * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
21: */
22:
23:
24: /* -------------------------------------------------------------- */
25: /* --------------------------- Node --------------------------- */
26: /* -------------------------------------------------------------- */
27:
28:
29:
30: #ifndef GDOME_NODE_FILE
31: #define GDOME_NODE_FILE
32:
33: struct _GdomeNodeVtab {
34: void (*ref) (GdomeNode *self, GdomeException *exc);
35: void (*unref) (GdomeNode *self, GdomeException *exc);
36: gpointer (*query_interface) (GdomeNode *self, const char *interface,
37: GdomeException *exc);
38: GdomeDOMString * (*nodeName) (GdomeNode *self, GdomeException *exc);
39: GdomeDOMString * (*nodeValue) (GdomeNode *self, GdomeException *exc);
40: void (*set_nodeValue) (GdomeNode *self, GdomeDOMString *nodeValue,
41: GdomeException *exc);
42: unsigned short (*nodeType) (GdomeNode *self, GdomeException *exc);
43: GdomeNode * (*parentNode) (GdomeNode *self, GdomeException *exc);
44: GdomeNodeList * (*childNodes) (GdomeNode *self, GdomeException *exc);
45: GdomeNode * (*firstChild) (GdomeNode *self, GdomeException *exc);
46: GdomeNode * (*lastChild) (GdomeNode *self, GdomeException *exc);
47: GdomeNode * (*previousSibling) (GdomeNode *self, GdomeException *exc);
48: GdomeNode * (*nextSibling) (GdomeNode *self, GdomeException *exc);
49: GdomeNamedNodeMap * (*attributes) (GdomeNode *self, GdomeException *exc);
50: GdomeDocument * (*ownerDocument) (GdomeNode *self, GdomeException *exc);
51: GdomeNode * (*insertBefore) (GdomeNode *self, GdomeNode *newChild,
52: GdomeNode *refChild, GdomeException *exc);
53: GdomeNode * (*replaceChild) (GdomeNode *self, GdomeNode *newChild,
54: GdomeNode *oldChild, GdomeException *exc);
55: GdomeNode * (*removeChild) (GdomeNode *self, GdomeNode *oldChild,
56: GdomeException *exc);
57: GdomeNode * (*appendChild) (GdomeNode *self, GdomeNode *newChild,
58: GdomeException *exc);
59: GdomeBoolean (*hasChildNodes) (GdomeNode *self, GdomeException *exc);
60: GdomeNode * (*cloneNode) (GdomeNode *self, GdomeBoolean deep,
61: GdomeException *exc);
62: void (*normalize) (GdomeNode *self, GdomeException *exc);
63: GdomeBoolean (*isSupported) (GdomeNode *self, GdomeDOMString *feature,
64: GdomeDOMString *version, GdomeException *exc);
65: GdomeDOMString * (*namespaceURI) (GdomeNode *self, GdomeException *exc);
66: GdomeDOMString * (*prefix) (GdomeNode *self, GdomeException *exc);
67: void (*set_prefix) (GdomeNode *self, GdomeDOMString *prefix,
68: GdomeException *exc);
69: GdomeDOMString * (*localName) (GdomeNode *self, GdomeException *exc);
70: GdomeBoolean (*hasAttributes) (GdomeNode *self, GdomeException *exc);
71: void (*addEventListener) (GdomeNode *self, GdomeDOMString *type,
72: GdomeEventListener *listener,
73: GdomeBoolean useCapture,
74: GdomeException *exc);
75: void (*removeEventListener) (GdomeNode *self, GdomeDOMString *type,
76: GdomeEventListener *listener,
77: GdomeBoolean useCapture, GdomeException *exc);
78: GdomeBoolean (*dispatchEvent) (GdomeNode *self, GdomeEvent *evt,
79: GdomeException *exc);
80: void (*subTreeDispatchEvent) (GdomeNode *self, GdomeEvent *evt,
81: GdomeException *exc);
82: GdomeBoolean (*canAppend) (GdomeNode *self,
83: GdomeNode *newChild,
84: GdomeException *exc);
85: };
86:
87: /* structure used for the Node events */
88: typedef struct _Gdome_xml_ListenerList Gdome_xml_ListenerList;
89: struct _Gdome_xml_ListenerList {
90: Gdome_xml_ListenerList *next;
1.3 ! paf 91: guint32 type;
1.1 paf 92: GdomeEventListener *listener;
93: GdomeBoolean useCapture;
94: };
95:
96:
97: typedef struct _Gdome_xml_Node Gdome_xml_Node;
98: struct _Gdome_xml_Node {
99: GdomeNode super;
100: const GdomeNodeVtab *vtab;
101: int refcnt;
102: xmlNode *n;
103: GdomeAccessType accessType;
104: Gdome_xml_ListenerList *ll;
105: };
106:
107: xmlNode * gdome_xml_n_get_xmlNode (GdomeNode *node);
108: GdomeNode * gdome_xml_n_mkref (xmlNode *n);
109: void gdome_xml_n_ref (GdomeNode *self,
110: GdomeException *exc);
111: void gdome_xml_n_unref (GdomeNode *self,
112: GdomeException *exc);
113: gpointer gdome_xml_n_query_interface (GdomeNode *self,
114: const char *interface,
115: GdomeException *exc);
116: GdomeDOMString * gdome_xml_n_nodeName (GdomeNode *self,
117: GdomeException *exc);
118: GdomeDOMString * gdome_xml_n_nodeValue (GdomeNode *self,
119: GdomeException *exc);
120: void gdome_xml_n_set_nodeValue (GdomeNode *self,
121: GdomeDOMString *nodeValue,
122: GdomeException *exc);
123: unsigned short gdome_xml_n_nodeType (GdomeNode *self,
124: GdomeException *exc);
125: GdomeNode * gdome_xml_n_parentNode (GdomeNode *self,
126: GdomeException *exc);
127: GdomeNodeList * gdome_xml_n_childNodes (GdomeNode *self,
128: GdomeException *exc);
129: GdomeNode * gdome_xml_n_firstChild (GdomeNode *self,
130: GdomeException *exc);
131: GdomeNode * gdome_xml_n_lastChild (GdomeNode *self,
132: GdomeException *exc);
133: GdomeNode * gdome_xml_n_previousSibling (GdomeNode *self,
134: GdomeException *exc);
135: GdomeNode * gdome_xml_n_nextSibling (GdomeNode *self,
136: GdomeException *exc);
137: GdomeNamedNodeMap * gdome_xml_n_attributes (GdomeNode *self,
138: GdomeException *exc);
139: GdomeDocument * gdome_xml_n_ownerDocument (GdomeNode *self,
140: GdomeException *exc);
141: GdomeNode * gdome_xml_n_insertBefore (GdomeNode *self,
142: GdomeNode *newChild,
143: GdomeNode *refChild,
144: GdomeException *exc);
145: GdomeNode * gdome_xml_n_replaceChild (GdomeNode *self,
146: GdomeNode *newChild,
147: GdomeNode *oldChild,
148: GdomeException *exc);
149: GdomeNode * gdome_xml_n_removeChild (GdomeNode *self,
150: GdomeNode *oldChild,
151: GdomeException *exc);
152: GdomeNode * gdome_xml_n_appendChild (GdomeNode *self,
153: GdomeNode *newChild,
154: GdomeException *exc);
155: GdomeBoolean gdome_xml_n_hasChildNodes (GdomeNode *self,
156: GdomeException *exc);
157: GdomeNode * gdome_xml_n_cloneNode (GdomeNode *self,
158: GdomeBoolean deep,
159: GdomeException *exc);
160: void gdome_xml_n_normalize (GdomeNode *self,
161: GdomeException *exc);
162: GdomeBoolean gdome_xml_n_isSupported (GdomeNode *self,
163: GdomeDOMString *feature,
164: GdomeDOMString *version,
165: GdomeException *exc);
166: GdomeDOMString * gdome_xml_n_namespaceURI (GdomeNode *self,
167: GdomeException *exc);
168: GdomeDOMString * gdome_xml_n_prefix (GdomeNode *self,
169: GdomeException *exc);
170: void gdome_xml_n_set_prefix (GdomeNode *self,
171: GdomeDOMString *prefix,
172: GdomeException *exc);
173: GdomeDOMString * gdome_xml_n_localName (GdomeNode *self,
174: GdomeException *exc);
175: GdomeBoolean gdome_xml_n_hasAttributes (GdomeNode *self,
176: GdomeException *exc);
177: void gdome_xml_n_addEventListener (GdomeNode *self,
178: GdomeDOMString *type,
179: GdomeEventListener *listener,
180: GdomeBoolean useCapture,
181: GdomeException *exc);
182: void gdome_xml_n_removeEventListener (GdomeNode *self,
183: GdomeDOMString *type,
184: GdomeEventListener *listener,
185: GdomeBoolean useCapture,
186: GdomeException *exc);
187: GdomeBoolean gdome_xml_n_dispatchEvent (GdomeNode *self,
188: GdomeEvent *evt,
189: GdomeException *exc);
190: GdomeNode * gdome_xml_n_appendChild (GdomeNode *self,
191: GdomeNode *newChild,
192: GdomeException *exc);
193: void gdome_xml_n_subTreeDispatchEvent (GdomeNode *self,
194: GdomeEvent *evt,
195: GdomeException *exc);
196: GdomeBoolean gdome_xml_n_canAppend (GdomeNode *self,
197: GdomeNode *newChild,
198: GdomeException *exc);
1.3 ! paf 199: GdomeBoolean gdome_xml_n_eventEnabledByCode (GdomeNode *self,
! 200: guint32 code);
1.1 paf 201:
1.2 paf 202: extern const GdomeNodeVtab gdome_xml_n_vtab;
1.1 paf 203:
204: #endif /* GDOME_NODE_FILE */