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 guint32 type; 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); 199 GdomeBoolean gdome_xml_n_eventEnabledByCode (GdomeNode *self, 200 guint32 code); 201 202 extern const GdomeNodeVtab gdome_xml_n_vtab; 203 204 #endif /* GDOME_NODE_FILE */ 205