|
|
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;
91: char *type;
92: GdomeEventListener *listener;
93: GdomeBoolean useCapture;
94: GdomeBoolean processing;
95: GdomeBoolean toRemove;
96: };
97:
98:
99: typedef struct _Gdome_xml_Node Gdome_xml_Node;
100: struct _Gdome_xml_Node {
101: GdomeNode super;
102: const GdomeNodeVtab *vtab;
103: int refcnt;
104: xmlNode *n;
105: GdomeAccessType accessType;
106: Gdome_xml_ListenerList *ll;
107: };
108:
1.2.4.1 ! paf 109: const GdomeNodeVtab gdome_xml_n_vtab;
! 110:
1.1 paf 111: xmlNode * gdome_xml_n_get_xmlNode (GdomeNode *node);
112: GdomeNode * gdome_xml_n_mkref (xmlNode *n);
113: void gdome_xml_n_ref (GdomeNode *self,
114: GdomeException *exc);
115: void gdome_xml_n_unref (GdomeNode *self,
116: GdomeException *exc);
117: gpointer gdome_xml_n_query_interface (GdomeNode *self,
118: const char *interface,
119: GdomeException *exc);
120: GdomeDOMString * gdome_xml_n_nodeName (GdomeNode *self,
121: GdomeException *exc);
122: GdomeDOMString * gdome_xml_n_nodeValue (GdomeNode *self,
123: GdomeException *exc);
124: void gdome_xml_n_set_nodeValue (GdomeNode *self,
125: GdomeDOMString *nodeValue,
126: GdomeException *exc);
127: unsigned short gdome_xml_n_nodeType (GdomeNode *self,
128: GdomeException *exc);
129: GdomeNode * gdome_xml_n_parentNode (GdomeNode *self,
130: GdomeException *exc);
131: GdomeNodeList * gdome_xml_n_childNodes (GdomeNode *self,
132: GdomeException *exc);
133: GdomeNode * gdome_xml_n_firstChild (GdomeNode *self,
134: GdomeException *exc);
135: GdomeNode * gdome_xml_n_lastChild (GdomeNode *self,
136: GdomeException *exc);
137: GdomeNode * gdome_xml_n_previousSibling (GdomeNode *self,
138: GdomeException *exc);
139: GdomeNode * gdome_xml_n_nextSibling (GdomeNode *self,
140: GdomeException *exc);
141: GdomeNamedNodeMap * gdome_xml_n_attributes (GdomeNode *self,
142: GdomeException *exc);
143: GdomeDocument * gdome_xml_n_ownerDocument (GdomeNode *self,
144: GdomeException *exc);
145: GdomeNode * gdome_xml_n_insertBefore (GdomeNode *self,
146: GdomeNode *newChild,
147: GdomeNode *refChild,
148: GdomeException *exc);
149: GdomeNode * gdome_xml_n_replaceChild (GdomeNode *self,
150: GdomeNode *newChild,
151: GdomeNode *oldChild,
152: GdomeException *exc);
153: GdomeNode * gdome_xml_n_removeChild (GdomeNode *self,
154: GdomeNode *oldChild,
155: GdomeException *exc);
156: GdomeNode * gdome_xml_n_appendChild (GdomeNode *self,
157: GdomeNode *newChild,
158: GdomeException *exc);
159: GdomeBoolean gdome_xml_n_hasChildNodes (GdomeNode *self,
160: GdomeException *exc);
161: GdomeNode * gdome_xml_n_cloneNode (GdomeNode *self,
162: GdomeBoolean deep,
163: GdomeException *exc);
164: void gdome_xml_n_normalize (GdomeNode *self,
165: GdomeException *exc);
166: GdomeBoolean gdome_xml_n_isSupported (GdomeNode *self,
167: GdomeDOMString *feature,
168: GdomeDOMString *version,
169: GdomeException *exc);
170: GdomeDOMString * gdome_xml_n_namespaceURI (GdomeNode *self,
171: GdomeException *exc);
172: GdomeDOMString * gdome_xml_n_prefix (GdomeNode *self,
173: GdomeException *exc);
174: void gdome_xml_n_set_prefix (GdomeNode *self,
175: GdomeDOMString *prefix,
176: GdomeException *exc);
177: GdomeDOMString * gdome_xml_n_localName (GdomeNode *self,
178: GdomeException *exc);
179: GdomeBoolean gdome_xml_n_hasAttributes (GdomeNode *self,
180: GdomeException *exc);
181: void gdome_xml_n_addEventListener (GdomeNode *self,
182: GdomeDOMString *type,
183: GdomeEventListener *listener,
184: GdomeBoolean useCapture,
185: GdomeException *exc);
186: void gdome_xml_n_removeEventListener (GdomeNode *self,
187: GdomeDOMString *type,
188: GdomeEventListener *listener,
189: GdomeBoolean useCapture,
190: GdomeException *exc);
191: GdomeBoolean gdome_xml_n_dispatchEvent (GdomeNode *self,
192: GdomeEvent *evt,
193: GdomeException *exc);
194: GdomeNode * gdome_xml_n_appendChild (GdomeNode *self,
195: GdomeNode *newChild,
196: GdomeException *exc);
197: void gdome_xml_n_subTreeDispatchEvent (GdomeNode *self,
198: GdomeEvent *evt,
199: GdomeException *exc);
200: GdomeBoolean gdome_xml_n_canAppend (GdomeNode *self,
201: GdomeNode *newChild,
202: GdomeException *exc);
203:
1.2.4.1 ! paf 204: //paf const GdomeNodeVtab gdome_xml_n_vtab;
1.1 paf 205:
206: #endif /* GDOME_NODE_FILE */