Annotation of win32/gnome/gdome2-x.x.x/libgdome/gdome.c, revision 1.1

1.1     ! paf         1: /* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 2; tab-width: 2 -*- */
        !             2: /* gdome.c
        !             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 file is generated automatically.  To make changes, edit
        !             9:  * test/apigen/core.xml
        !            10:  *
        !            11:  * This library is free software; you can redistribute it and/or
        !            12:  * modify it under the terms of the GNU Lesser General Public
        !            13:  * License as published by the Free Software Foundation; either
        !            14:  * version 2.1 of the License, or (at your option) any later version.
        !            15:  * 
        !            16:  * This library is distributed in the hope that it will be useful,
        !            17:  * but WITHOUT ANY WARRANTY; without even the implied warranty of
        !            18:  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
        !            19:  * Lesser General Public License for more details.
        !            20:  * 
        !            21:  * You should have received a copy of the GNU Lesser General Public
        !            22:  * License along with this library; if not, write to the Free Software
        !            23:  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
        !            24:  */
        !            25: 
        !            26: #include <libxml/parser.h>
        !            27: #include <libxml/hash.h>
        !            28: #include "gdome.h"
        !            29: #include "gdome-xml-str.h"
        !            30: #include "gdome-xml-domimpl.h"
        !            31: #include "gdome-xml-nnodem.h"
        !            32: #include "gdome-xml-nodel.h"
        !            33: #include "gdome-xml-domimpl.h"
        !            34: #include "gdome-xml-node.h"
        !            35: #include "gdome-xml-cdata.h"
        !            36: #include "gdome-xml-text.h"
        !            37: #include "gdome-xml-cdatas.h"
        !            38: #include "gdome-xml-comment.h"
        !            39: #include "gdome-xml-document.h"
        !            40: #include "gdome-xml-documentf.h"
        !            41: #include "gdome-xml-documentt.h"
        !            42: #include "gdome-xml-attribute.h"
        !            43: #include "gdome-xml-element.h"
        !            44: #include "gdome-xml-entity.h"
        !            45: #include "gdome-xml-entityref.h"
        !            46: #include "gdome-xml-pi.h"
        !            47: #include "gdome-xml-xmldtdutil.h"
        !            48: #include "gdome-xml-notation.h"
        !            49: #include "gdome-xml-xpns.h"
        !            50: 
        !            51: 
        !            52: /******************************************************************************
        !            53:           GdomeDOMString interface API
        !            54:  ******************************************************************************/
        !            55: /**
        !            56:  * gdome_str_mkref:
        !            57:  * @str:  a %NULL terminated string
        !            58:  *
        !            59:  * Creates a #GdomeDOMString from a statically allocated string.
        !            60:  * Returns: the new DOMString object.
        !            61:  */
        !            62: GdomeDOMString *
        !            63: gdome_str_mkref (const gchar *str)
        !            64: {
        !            65:  return gdome_xml_str_mkref (str);
        !            66: }
        !            67: /**
        !            68:  * gdome_str_mkref_own:
        !            69:  * @str:  a %NULL terminated string
        !            70:  *
        !            71:  * Creates a #GdomeDOMString from a dynamically allocated gchar buffer.
        !            72:  * Returns: the new DOMString object.
        !            73:  */
        !            74: GdomeDOMString *
        !            75: gdome_str_mkref_own (gchar *str)
        !            76: {
        !            77:  return gdome_xml_str_mkref_own (str);
        !            78: }
        !            79: /**
        !            80:  * gdome_str_mkref_xml:
        !            81:  * @str:  a %NULL terminated string
        !            82:  *
        !            83:  * Creates a #GdomeDOMString from a xmlChar buffer already allocated by libxml.
        !            84:  * DEPRECATED
        !            85:  * Returns: the new DOMString object.
        !            86:  */
        !            87: GdomeDOMString *
        !            88: gdome_str_mkref_xml (const xmlChar *str)
        !            89: {
        !            90:  return gdome_xml_str_mkref_xml (str);
        !            91: }
        !            92: /**
        !            93:  * gdome_str_mkref_dup:
        !            94:  * @str:  a %NULL terminated string
        !            95:  *
        !            96:  * Creates a #GdomeDOMString from a static or dynamically allocated gchar
        !            97:  * buffer, but a copy of the initializing string is done before construction.
        !            98:  * Returns: the new DOMString object.
        !            99:  */
        !           100: GdomeDOMString *
        !           101: gdome_str_mkref_dup (const gchar *str)
        !           102: {
        !           103:  return gdome_xml_str_mkref_dup (str);
        !           104: }
        !           105: /**
        !           106:  * gdome_str_ref:
        !           107:  * @self:  DOMString Object ref
        !           108:  *
        !           109:  * Increase the reference count of the specified #GdomeDOMString.
        !           110:  */
        !           111: void
        !           112: gdome_str_ref (GdomeDOMString *self)
        !           113: {
        !           114:  gdome_xml_str_ref (self);
        !           115: }
        !           116: /**
        !           117:  * gdome_str_unref:
        !           118:  * @self:  DOMString Object ref
        !           119:  *
        !           120:  * Decrease the reference count of the specified #GdomeDOMString. Free the
        !           121:  * structure if the object will have zero reference.
        !           122:  */
        !           123: void
        !           124: gdome_str_unref (GdomeDOMString *self)
        !           125: {
        !           126:  gdome_xml_str_unref (self);
        !           127: }
        !           128: /**
        !           129:  * gdome_str_equal:
        !           130:  * @self:  DOMString Object ref
        !           131:  * @str:  DOMString to be compared
        !           132:  *
        !           133:  * Returns: %TRUE if the strings are equal, %FALSE otherwise.
        !           134:  */
        !           135: GdomeBoolean
        !           136: gdome_str_equal (GdomeDOMString *self, GdomeDOMString *str)
        !           137: {
        !           138:  return gdome_xml_str_equal (self, str);
        !           139: }
        !           140: /**
        !           141:  * gdome_str_equalIgnoreCase:
        !           142:  * @self:  DOMString Object ref
        !           143:  * @str:  DOMString to be compared
        !           144:  *
        !           145:  * Returns: %TRUE if the strings are equal ignoring case, %FALSE otherwise.
        !           146:  */
        !           147: GdomeBoolean
        !           148: gdome_str_equalIgnoreCase (GdomeDOMString *self, GdomeDOMString *str)
        !           149: {
        !           150:  return gdome_xml_str_equalIgnoreCase (self, str);
        !           151: }
        !           152: /**
        !           153:  * gdome_str_charAt:
        !           154:  * @self:  DOMString Object ref
        !           155:  * @index:  the index of the character wanted
        !           156:  *
        !           157:  * Returns: the @index -th character in the specified string
        !           158:  */
        !           159: gchar
        !           160: gdome_str_charAt (GdomeDOMString *self, int index)
        !           161: {
        !           162:  return gdome_xml_str_charAt (self, index);
        !           163: }
        !           164: /**
        !           165:  * gdome_str_concat:
        !           166:  * @self:  DOMString Object ref
        !           167:  * @str:  DOMString to be appended
        !           168:  *
        !           169:  * Returns: a new #GdomeDOMString that is the concatenation of this string
        !           170:  * with @str. If @str is %NULL a new reference to this string is returned.
        !           171:  */
        !           172: GdomeDOMString *
        !           173: gdome_str_concat (GdomeDOMString *self, GdomeDOMString *str)
        !           174: {
        !           175:  return gdome_xml_str_concat (self, str);
        !           176: }
        !           177: /**
        !           178:  * gdome_str_isEmpty:
        !           179:  * @self:  DOMString Object ref
        !           180:  *
        !           181:  * Returns: %TRUE if this string is empty, %FALSE otherwise.
        !           182:  */
        !           183: GdomeBoolean
        !           184: gdome_str_isEmpty (GdomeDOMString *self)
        !           185: {
        !           186:  return gdome_xml_str_isEmpty (self);
        !           187: }
        !           188: /**
        !           189:  * gdome_str_endsWith:
        !           190:  * @self:  DOMString Object ref
        !           191:  * @suffix:  DOMString to check
        !           192:  *
        !           193:  * Returns: %TRUE if this string ends with @str.
        !           194:  */
        !           195: GdomeBoolean
        !           196: gdome_str_endsWith (GdomeDOMString *self, GdomeDOMString *suffix)
        !           197: {
        !           198:  return gdome_xml_str_endsWith (self, suffix);
        !           199: }
        !           200: /**
        !           201:  * gdome_str_startsWith:
        !           202:  * @self:  DOMString Object ref
        !           203:  * @prefix:  DOMString to check
        !           204:  *
        !           205:  * Returns: %TRUE if this string starts with @str.
        !           206:  */
        !           207: GdomeBoolean
        !           208: gdome_str_startsWith (GdomeDOMString *self, GdomeDOMString *prefix)
        !           209: {
        !           210:  return gdome_xml_str_startsWith (self, prefix);
        !           211: }
        !           212: /**
        !           213:  * gdome_str_length:
        !           214:  * @self:  DOMString Object ref
        !           215:  *
        !           216:  * Returns: the length of this string.
        !           217:  */
        !           218: int
        !           219: gdome_str_length (GdomeDOMString *self)
        !           220: {
        !           221:  return gdome_xml_str_length (self);
        !           222: }
        !           223: 
        !           224: /******************************************************************************
        !           225:           GdomeDOMImplementation interface API
        !           226:  ******************************************************************************/
        !           227: /**
        !           228:  * gdome_di_mkref:
        !           229:  *
        !           230:  * Constructor of the DOMImplementation interface.
        !           231:  * Returns: the reference to the DOMImplementation structure.
        !           232:  */
        !           233: GdomeDOMImplementation *
        !           234: gdome_di_mkref (void)
        !           235: {
        !           236:  return gdome_xml_di_mkref ();
        !           237: }
        !           238: /**
        !           239:  * gdome_di_ref:
        !           240:  * @self:  DOMImplementation Object ref
        !           241:  * @exc:  Exception Object ref
        !           242:  *
        !           243:  * Increase the reference count of the DOMImplementation structure.
        !           244:  */
        !           245: void
        !           246: gdome_di_ref (GdomeDOMImplementation *self, GdomeException *exc)
        !           247: {
        !           248:  if (self == NULL) {
        !           249:    *exc = GDOME_NULL_POINTER_ERR;
        !           250:    return;
        !           251:  }
        !           252:  *exc = 0;
        !           253:  ((Gdome_xml_DOMImplementation *)self)->vtab->ref (self, exc);
        !           254: }
        !           255: /**
        !           256:  * gdome_di_unref:
        !           257:  * @self:  DOMImplementation Object ref
        !           258:  * @exc:  Exception Object ref
        !           259:  *
        !           260:  * Decrease the reference count of the DOMImplementation. Free the structure
        !           261:  * if DOMImplementation will have zero reference.
        !           262:  */
        !           263: void
        !           264: gdome_di_unref (GdomeDOMImplementation *self, GdomeException *exc)
        !           265: {
        !           266:  if (self == NULL) {
        !           267:    *exc = GDOME_NULL_POINTER_ERR;
        !           268:    return;
        !           269:  }
        !           270:  *exc = 0;
        !           271:  ((Gdome_xml_DOMImplementation *)self)->vtab->unref (self, exc);
        !           272: }
        !           273: /**
        !           274:  * gdome_di_query_interface:
        !           275:  * @self:  DOMImplementation Object ref
        !           276:  * @interface:  interface needed
        !           277:  * @exc:  Exception Object ref
        !           278:  *
        !           279:  * Returns: a reference to this object that implements the @interface needed,
        !           280:  *          or %NULL if the @interface is not supported by this Object.
        !           281:  */
        !           282: gpointer
        !           283: gdome_di_query_interface (GdomeDOMImplementation *self, const char *interface, GdomeException *exc)
        !           284: {
        !           285:  if (self == NULL) {
        !           286:    *exc = GDOME_NULL_POINTER_ERR;
        !           287:    return NULL;
        !           288:  }
        !           289:  *exc = 0;
        !           290:  return ((Gdome_xml_DOMImplementation *)self)->vtab->query_interface (self, interface, exc);
        !           291: }
        !           292: /**
        !           293:  * gdome_di_createDocument:
        !           294:  * @self:  DOMImplementation Object ref
        !           295:  * @namespaceURI:  The namespace URI of the document element to create
        !           296:  * @qualifiedName:  The qualified name of the document element to be created
        !           297:  * @doctype:  The type of document to be created or NULL
        !           298:  * @exc:  Exception Object ref
        !           299:  *
        !           300:  * Creates an XML Document object of the specified type with its document
        !           301:  * element.
        !           302:  *
        !           303:  * %GDOME_NAMESPACE_ERR: Raised if the @qualifiedName is malformed, if the
        !           304:  * @qualifiedName has a prefix and the @namespaceURI is %NULL, or if the
        !           305:  * @qualifiedName has a prefix that is "xml" and the @namespaceURI is different
        !           306:  * from "http://www.w3.org/XML/1998/namespace"
        !           307:  * %GDOME_WRONG_DOCUMENT_ERR: Raised if @doctype has already been used with a
        !           308:  * different document.
        !           309:  * Returns: a new Document node.
        !           310:  */
        !           311: GdomeDocument *
        !           312: gdome_di_createDocument (GdomeDOMImplementation *self, GdomeDOMString *namespaceURI, GdomeDOMString *qualifiedName, GdomeDocumentType *doctype, GdomeException *exc)
        !           313: {
        !           314:  if (self == NULL) {
        !           315:    *exc = GDOME_NULL_POINTER_ERR;
        !           316:    return NULL;
        !           317:  }
        !           318:  *exc = 0;
        !           319:  return ((Gdome_xml_DOMImplementation *)self)->vtab->createDocument (self, namespaceURI, qualifiedName, doctype, exc);
        !           320: }
        !           321: /**
        !           322:  * gdome_di_createDocumentType:
        !           323:  * @self:  The DOMImplementation Object ref
        !           324:  * @qualifiedName:  The qualified name of the document type to be created
        !           325:  * @publicID:  The external subset public identifier
        !           326:  * @systemID:  The external subset system identifier
        !           327:  * @exc:  The Exception Object ref
        !           328:  *
        !           329:  * Creates an empty DocumentType node. Entity declarations and notations are
        !           330:  * not made available. Entity reference expansions and default attribute
        !           331:  * additions do not occur. It is expected that a future version of the DOM will
        !           332:  * provide a way for populating a DocumentType.
        !           333:  *
        !           334:  * %GDOME_NAMESPACE_ERR: Raised if the qualifiedName is malformed.
        !           335:  * Returns: A new DocumentType node.
        !           336:  */
        !           337: GdomeDocumentType *
        !           338: gdome_di_createDocumentType (GdomeDOMImplementation *self, GdomeDOMString *qualifiedName, GdomeDOMString *publicId, GdomeDOMString *systemId, GdomeException *exc)
        !           339: {
        !           340:  if (self == NULL) {
        !           341:    *exc = GDOME_NULL_POINTER_ERR;
        !           342:    return NULL;
        !           343:  }
        !           344:  *exc = 0;
        !           345:  return ((Gdome_xml_DOMImplementation *)self)->vtab->createDocumentType (self, qualifiedName, publicId, systemId, exc);
        !           346: }
        !           347: /**
        !           348:  * gdome_di_hasFeature:
        !           349:  * @self:  The DOMImplementation Object ref
        !           350:  * @feature:  The name of the feature to test (case-insensitive).
        !           351:  * @version:  This is the version number of the feature to test. In Level 2,
        !           352:  *            version 1, this is the string "2.0". If the version is not
        !           353:  *            specified, supporting any version of the feature will cause the
        !           354:  *            method to return %TRUE.
        !           355:  * @exc:  Exception Object ref
        !           356:  *
        !           357:  * Tests whether the DOM implementation implements a specific feature.
        !           358:  * Returns: %TRUE if the feature is supported, %FALSE otherwise.
        !           359:  */
        !           360: GdomeBoolean
        !           361: gdome_di_hasFeature (GdomeDOMImplementation *self, GdomeDOMString *feature, GdomeDOMString *version, GdomeException *exc)
        !           362: {
        !           363:  if (self == NULL) {
        !           364:    *exc = GDOME_NULL_POINTER_ERR;
        !           365:    return FALSE;
        !           366:  }
        !           367:  *exc = 0;
        !           368:  return ((Gdome_xml_DOMImplementation *)self)->vtab->hasFeature (self, feature, version, exc);
        !           369: }
        !           370: /**
        !           371:  * gdome_di_freeDoc:
        !           372:  * @self:  DOMImplementation Object ref
        !           373:  * @doc:  The Document Object ref to be freed
        !           374:  * @exc:  Exception Object ref
        !           375:  *
        !           376:  * DEPRECATED!
        !           377:  * Free all objects and structures associated to the Document specified.
        !           378:  */
        !           379: void
        !           380: gdome_di_freeDoc (GdomeDOMImplementation *self, GdomeDocument *doc, GdomeException *exc)
        !           381: {
        !           382:  if (self == NULL) {
        !           383:    *exc = GDOME_NULL_POINTER_ERR;
        !           384:    return;
        !           385:  }
        !           386:  *exc = 0;
        !           387:  ((Gdome_xml_DOMImplementation *)self)->vtab->freeDoc (self, doc, exc);
        !           388: }
        !           389: /**
        !           390:  * gdome_di_createDocFromURI:
        !           391:  * @self:  DOMImplementation Object ref
        !           392:  * @uri:  the uri of XML file to load
        !           393:  * @mode:  specifies if the document is to be parsed, validated or recovered
        !           394:  *         and if the entity substitution has to be done.
        !           395:  * @exc:  Exception Object ref
        !           396:  *
        !           397:  * Loads a XML Document from a URI and build a DOM tree. If @mode is
        !           398:  * %GDOME_LOAD_PARSING the document must be well formed, if @mode is
        !           399:  * %GDOME_LOAD_VALIDATING the document must valid and if @mode is
        !           400:  * %GDOME_LOAD_RECOVERING a tree is built anyway.
        !           401:  * If the %GDOME_LOAD_SUBSTITUTE_ENTITIES flag is added, entity substitution is
        !           402:  * performed (es. @mode = %GDOME_LOAD_PARSING | %GDOME_LOAD_SUBSTITUTE_ENTITIES
        !           403:  * ).
        !           404:  * If the %GDOME_LOAD_COMPLETE_ATTR flag is set, the tree is populated
        !           405:  * with default attributes from the DTD.
        !           406:  * Returns: The Document Object of the created tree or %NULL if an error occur.
        !           407:  */
        !           408: GdomeDocument *
        !           409: gdome_di_createDocFromURI (GdomeDOMImplementation *self, const char *uri, unsigned int mode, GdomeException *exc)
        !           410: {
        !           411:  if (self == NULL) {
        !           412:    *exc = GDOME_NULL_POINTER_ERR;
        !           413:    return NULL;
        !           414:  }
        !           415:  *exc = 0;
        !           416:  return ((Gdome_xml_DOMImplementation *)self)->vtab->createDocFromURI (self, uri, mode, exc);
        !           417: }
        !           418: /**
        !           419:  * gdome_di_createDocFromMemory:
        !           420:  * @self:  DOMImplementation Object ref
        !           421:  * @buffer:  a pointer to char array that holds the XML document
        !           422:  * @mode:  specifies if the document is to be parsed, validated or recovered
        !           423:  *         and if the entity substitution has to be done.
        !           424:  * @exc:  Exception Object ref
        !           425:  *
        !           426:  * Loads a XML Document from a memory buffer and build a DOM tree. If @mode is
        !           427:  * %GDOME_LOAD_PARSING the document must be well formed, if @mode is
        !           428:  * %GDOME_LOAD_VALIDATING the document must valid and if @mode is
        !           429:  * %GDOME_LOAD_RECOVERING a tree is built anyway.
        !           430:  * If the %GDOME_LOAD_SUBSTITUTE_ENTITIES flag is added, entity substitution is
        !           431:  * performed (es. @mode = %GDOME_LOAD_PARSING | %GDOME_LOAD_SUBSTITUTE_ENTITIES
        !           432:  * ).
        !           433:  * If the %GDOME_LOAD_COMPLETE_ATTR flag is set, the tree is populated
        !           434:  * with default attributes from the DTD.
        !           435:  * Returns: The Document Object of the created tree or %NULL if an error occur.
        !           436:  */
        !           437: GdomeDocument *
        !           438: gdome_di_createDocFromMemory (GdomeDOMImplementation *self, char *buffer, unsigned int mode, GdomeException *exc)
        !           439: {
        !           440:  if (self == NULL) {
        !           441:    *exc = GDOME_NULL_POINTER_ERR;
        !           442:    return NULL;
        !           443:  }
        !           444:  *exc = 0;
        !           445:  return ((Gdome_xml_DOMImplementation *)self)->vtab->createDocFromMemory (self, buffer, mode, exc);
        !           446: }
        !           447: /**
        !           448:  * gdome_di_createDocFromURIWithEntitiesTable:
        !           449:  * @self:  DOMImplementation Object ref
        !           450:  * @uri:  the uri of XML file to load
        !           451:  * @entityTable:  array of #GdomeEntitiesTableEntry that define name, value,
        !           452:  *                publicID ans systemID of entities used but not declared
        !           453:  *                in DTD. The array must be NULL terminated.
        !           454:  * @mode:  specifies if the document is to be parsed, validated or recovered
        !           455:  *         and if the entity substitution has to be done.
        !           456:  * @exc:  Exception Object ref
        !           457:  *
        !           458:  * Loads a XML Document using also entity declaration specified in @entityTable
        !           459:  * from a URI and build a DOM tree. If @mode is %GDOME_LOAD_PARSING the
        !           460:  * document must be well formed, if @mode is %GDOME_LOAD_VALIDATING the
        !           461:  * document must valid and if @mode is %GDOME_LOAD_RECOVERING a tree is built
        !           462:  * anyway.
        !           463:  * If the %GDOME_LOAD_SUBSTITUTE_ENTITIES flag is added, entity substitution is
        !           464:  * performed (es. @mode = %GDOME_LOAD_PARSING | %GDOME_LOAD_SUBSTITUTE_ENTITIES
        !           465:  * ).
        !           466:  * If the %GDOME_LOAD_COMPLETE_ATTR flag is set, the tree is populated
        !           467:  * with default attributes from the DTD.
        !           468:  * Returns: The Document Object of the created tree or %NULL if an error occur.
        !           469:  */
        !           470: GdomeDocument *
        !           471: gdome_di_createDocFromURIWithEntitiesTable (GdomeDOMImplementation *self, const char *uri, const GdomeEntitiesTableEntry entityTable[], unsigned int mode, GdomeException *exc)
        !           472: {
        !           473:  if (self == NULL) {
        !           474:    *exc = GDOME_NULL_POINTER_ERR;
        !           475:    return NULL;
        !           476:  }
        !           477:  *exc = 0;
        !           478:  return ((Gdome_xml_DOMImplementation *)self)->vtab->createDocFromURIWithEntitiesTable (self, uri, entityTable, mode, exc);
        !           479: }
        !           480: /**
        !           481:  * gdome_di_createDocFromMemoryWithEntitiesTable:
        !           482:  * @self:  DOMImplementation Object ref
        !           483:  * @buffer:  a pointer to char array that holds the XML document
        !           484:  * @entityTable:  array of #GdomeEntitiesTableEntry that define name, value,
        !           485:  *                publicID ans systemID of entities used but not declared
        !           486:  *                in DTD. The array must be NULL terminated.
        !           487:  * @mode:  specifies if the document is to be parsed, validated or recovered
        !           488:  *         and if the entity substitution has to be done.
        !           489:  * @exc:  Exception Object ref
        !           490:  *
        !           491:  * Loads a XML Document using also entity declaration specified in @entityTable
        !           492:  * from a memory buffer and build a DOM tree. If @mode is %GDOME_LOAD_PARSING
        !           493:  * the document must be well formed, if @mode is %GDOME_LOAD_VALIDATING the
        !           494:  * document must valid and if @mode is %GDOME_LOAD_RECOVERING a tree is built
        !           495:  * anyway.
        !           496:  * If the %GDOME_LOAD_SUBSTITUTE_ENTITIES flag is added, entity substitution is
        !           497:  * performed (es. @mode = %GDOME_LOAD_PARSING | %GDOME_LOAD_SUBSTITUTE_ENTITIES
        !           498:  * ).
        !           499:  * If the %GDOME_LOAD_COMPLETE_ATTR flag is set, the tree is populated
        !           500:  * with default attributes from the DTD.
        !           501:  * Returns: The Document Object of the created tree or %NULL if an error occur.
        !           502:  */
        !           503: GdomeDocument *
        !           504: gdome_di_createDocFromMemoryWithEntitiesTable (GdomeDOMImplementation *self, char *buffer, const GdomeEntitiesTableEntry entityTable[], unsigned int mode, GdomeException *exc)
        !           505: {
        !           506:  if (self == NULL) {
        !           507:    *exc = GDOME_NULL_POINTER_ERR;
        !           508:    return NULL;
        !           509:  }
        !           510:  *exc = 0;
        !           511:  return ((Gdome_xml_DOMImplementation *)self)->vtab->createDocFromMemoryWithEntitiesTable (self, buffer, entityTable, mode, exc);
        !           512: }
        !           513: /**
        !           514:  * gdome_di_saveDocToFile:
        !           515:  * @self:  DOMImplementation Object ref
        !           516:  * @doc:  the Document of which the tree is wanted to be saved
        !           517:  * @filename:  the XML filename to save
        !           518:  * @mode:  the indentation mode wanted
        !           519:  * @exc:  Exception Object ref
        !           520:  *
        !           521:  * Save the DOM tree of the Document specified to file.
        !           522:  * Returns: %FALSE in case of failure, %TRUE otherwise.
        !           523:  */
        !           524: GdomeBoolean
        !           525: gdome_di_saveDocToFile (GdomeDOMImplementation *self, GdomeDocument *doc, const char *filename, GdomeSavingCode mode, GdomeException *exc)
        !           526: {
        !           527:  if (self == NULL) {
        !           528:    *exc = GDOME_NULL_POINTER_ERR;
        !           529:    return FALSE;
        !           530:  }
        !           531:  *exc = 0;
        !           532:  return ((Gdome_xml_DOMImplementation *)self)->vtab->saveDocToFile (self, doc, filename, mode, exc);
        !           533: }
        !           534: /**
        !           535:  * gdome_di_saveDocToFileEnc:
        !           536:  * @self:  DOMImplementation Object ref
        !           537:  * @doc:  the Document of which the tree is wanted to be saved
        !           538:  * @filename:  the XML filename to save
        !           539:  * @encoding:  character encoding to use when generating XML text
        !           540:  * @mode:  the indentation mode wanted
        !           541:  * @exc:  Exception Object ref
        !           542:  *
        !           543:  * Save the DOM tree of the Document specified to file with the specified
        !           544:  * Character encoding.
        !           545:  * Returns: %FALSE in case of failure, %TRUE otherwise.
        !           546:  */
        !           547: GdomeBoolean
        !           548: gdome_di_saveDocToFileEnc (GdomeDOMImplementation *self, GdomeDocument *doc, const char *filename, const char *encoding, GdomeSavingCode mode, GdomeException *exc)
        !           549: {
        !           550:  if (self == NULL) {
        !           551:    *exc = GDOME_NULL_POINTER_ERR;
        !           552:    return FALSE;
        !           553:  }
        !           554:  *exc = 0;
        !           555:  return ((Gdome_xml_DOMImplementation *)self)->vtab->saveDocToFileEnc (self, doc, filename, encoding, mode, exc);
        !           556: }
        !           557: /**
        !           558:  * gdome_di_saveDocToMemory:
        !           559:  * @self:  DOMImplementation Object ref
        !           560:  * @doc:  the Document of which the tree is wanted to be saved
        !           561:  * @mem:  the memory pointer where the saved document is returned
        !           562:  * @mode:  the indentation mode wanted
        !           563:  * @exc:  Exception Object ref
        !           564:  *
        !           565:  * Save the DOM tree of the Document specified to a new allocated memory and
        !           566:  * return it in the @mem pointer.
        !           567:  * Returns: %FALSE in case of failure, %TRUE otherwise.
        !           568:  */
        !           569: GdomeBoolean
        !           570: gdome_di_saveDocToMemory (GdomeDOMImplementation *self, GdomeDocument *doc, char **mem, GdomeSavingCode mode, GdomeException *exc)
        !           571: {
        !           572:  if (self == NULL) {
        !           573:    *exc = GDOME_NULL_POINTER_ERR;
        !           574:    return FALSE;
        !           575:  }
        !           576:  *exc = 0;
        !           577:  return ((Gdome_xml_DOMImplementation *)self)->vtab->saveDocToMemory (self, doc, mem, mode, exc);
        !           578: }
        !           579: /**
        !           580:  * gdome_di_saveDocToMemoryEnc:
        !           581:  * @self:  DOMImplementation Object ref
        !           582:  * @doc:  the Document of which the tree is wanted to be saved
        !           583:  * @mem:  the memory pointer where the saved document is returned
        !           584:  * @encoding:  character encoding to use when generating XML text
        !           585:  * @mode:  the indentation mode wanted
        !           586:  * @exc:  Exception Object ref
        !           587:  *
        !           588:  * Save the DOM tree of the Document specified using the specified character
        !           589:  * encoding standard to a new allocated memory and return it in the @mem
        !           590:  * pointer.
        !           591:  * Returns: %FALSE in case of failure, %TRUE otherwise.
        !           592:  */
        !           593: GdomeBoolean
        !           594: gdome_di_saveDocToMemoryEnc (GdomeDOMImplementation *self, GdomeDocument *doc, char **mem, const char *encoding, GdomeSavingCode mode, GdomeException *exc)
        !           595: {
        !           596:  if (self == NULL) {
        !           597:    *exc = GDOME_NULL_POINTER_ERR;
        !           598:    return FALSE;
        !           599:  }
        !           600:  *exc = 0;
        !           601:  return ((Gdome_xml_DOMImplementation *)self)->vtab->saveDocToMemoryEnc (self, doc, mem, encoding, mode, exc);
        !           602: }
        !           603: /**
        !           604:  * gdome_di_enableEvent:
        !           605:  * @self:  DOMImplementation Object ref
        !           606:  * @doc:  the Document on which we want to enable events
        !           607:  * @name:  the name of the event type to enable
        !           608:  * @exc:  Exception Object ref
        !           609:  *
        !           610:  * Enables the propagation of the event type specified.
        !           611:  */
        !           612: void
        !           613: gdome_di_enableEvent (GdomeDOMImplementation *self, GdomeDocument *doc, const char *name, GdomeException *exc)
        !           614: {
        !           615:  if (self == NULL) {
        !           616:    *exc = GDOME_NULL_POINTER_ERR;
        !           617:    return;
        !           618:  }
        !           619:  *exc = 0;
        !           620:  ((Gdome_xml_DOMImplementation *)self)->vtab->enableEvent (self, doc, name, exc);
        !           621: }
        !           622: /**
        !           623:  * gdome_di_disableEvent:
        !           624:  * @self:  DOMImplementation Object ref
        !           625:  * @doc:  the Document on which we want to disable events
        !           626:  * @name:  the name of the event type to disable
        !           627:  * @exc:  Exception Object ref
        !           628:  *
        !           629:  * Disables the propagation of the event type specified.
        !           630:  */
        !           631: void
        !           632: gdome_di_disableEvent (GdomeDOMImplementation *self, GdomeDocument *doc, const char *name, GdomeException *exc)
        !           633: {
        !           634:  if (self == NULL) {
        !           635:    *exc = GDOME_NULL_POINTER_ERR;
        !           636:    return;
        !           637:  }
        !           638:  *exc = 0;
        !           639:  ((Gdome_xml_DOMImplementation *)self)->vtab->disableEvent (self, doc, name, exc);
        !           640: }
        !           641: /**
        !           642:  * gdome_di_eventIsEnabled:
        !           643:  * @self:  DOMImplementation Object ref
        !           644:  * @doc:  the Document on which we want to make the check
        !           645:  * @name:  the name of the event type to check
        !           646:  * @exc:  Exception Object ref
        !           647:  *
        !           648:  * Checks if the specified event type is enabled.
        !           649:  * Returns: %TRUE if the event type specified is enabled, %FALSE otherwise.
        !           650:  */
        !           651: GdomeBoolean
        !           652: gdome_di_eventIsEnabled (GdomeDOMImplementation *self, GdomeDocument *doc, const char *name, GdomeException *exc)
        !           653: {
        !           654:  if (self == NULL) {
        !           655:    *exc = GDOME_NULL_POINTER_ERR;
        !           656:    return FALSE;
        !           657:  }
        !           658:  *exc = 0;
        !           659:  return ((Gdome_xml_DOMImplementation *)self)->vtab->eventIsEnabled (self, doc, name, exc);
        !           660: }
        !           661: 
        !           662: /******************************************************************************
        !           663:           GdomeNode interface API
        !           664:  ******************************************************************************/
        !           665: /**
        !           666:  * gdome_n_attributes:
        !           667:  * @self:  Node Object ref
        !           668:  * @exc:  Exception Object ref
        !           669:  *
        !           670:  * Returns: a NamedNodeMap containing the attributes of this node (if it is an
        !           671:  * Element) or %NULL otherwise.
        !           672:  */
        !           673: GdomeNamedNodeMap *
        !           674: gdome_n_attributes (GdomeNode *self, GdomeException *exc)
        !           675: {
        !           676:  if (self == NULL) {
        !           677:    *exc = GDOME_NULL_POINTER_ERR;
        !           678:    return NULL;
        !           679:  }
        !           680:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !           681:    *exc = GDOME_INVALID_STATE_ERR;
        !           682:    return NULL;
        !           683:  }
        !           684:  *exc = 0;
        !           685:  return ((Gdome_xml_Node *)self)->vtab->attributes (self, exc);
        !           686: }
        !           687: /**
        !           688:  * gdome_n_childNodes:
        !           689:  * @self:  Node Object ref
        !           690:  * @exc:  Exception Object ref
        !           691:  *
        !           692:  * Returns: a NodeList that contains all children of this node. If there are no
        !           693:  * children, this is a NodeList containing no nodes.  Note that attributes are
        !           694:  * not considered to be children of element nodes - use gdome_n_attributes to
        !           695:  * obtain the attributes.
        !           696:  */
        !           697: GdomeNodeList *
        !           698: gdome_n_childNodes (GdomeNode *self, GdomeException *exc)
        !           699: {
        !           700:  if (self == NULL) {
        !           701:    *exc = GDOME_NULL_POINTER_ERR;
        !           702:    return NULL;
        !           703:  }
        !           704:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !           705:    *exc = GDOME_INVALID_STATE_ERR;
        !           706:    return NULL;
        !           707:  }
        !           708:  *exc = 0;
        !           709:  return ((Gdome_xml_Node *)self)->vtab->childNodes (self, exc);
        !           710: }
        !           711: /**
        !           712:  * gdome_n_firstChild:
        !           713:  * @self:  Node Object ref
        !           714:  * @exc:  Exception Object ref
        !           715:  * 
        !           716:  * Returns: the first child of this node. If there is no such node,
        !           717:  * this returns %NULL.
        !           718:  */
        !           719: GdomeNode *
        !           720: gdome_n_firstChild (GdomeNode *self, GdomeException *exc)
        !           721: {
        !           722:  if (self == NULL) {
        !           723:    *exc = GDOME_NULL_POINTER_ERR;
        !           724:    return NULL;
        !           725:  }
        !           726:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !           727:    *exc = GDOME_INVALID_STATE_ERR;
        !           728:    return NULL;
        !           729:  }
        !           730:  *exc = 0;
        !           731:  return ((Gdome_xml_Node *)self)->vtab->firstChild (self, exc);
        !           732: }
        !           733: /**
        !           734:  * gdome_n_lastChild:
        !           735:  * @self:  Node Object ref
        !           736:  * @exc:  Exception Object ref
        !           737:  *
        !           738:  * Returns: the last child of this node. If there is no such node,
        !           739:  * this returns %NULL.
        !           740:  */
        !           741: GdomeNode *
        !           742: gdome_n_lastChild (GdomeNode *self, GdomeException *exc)
        !           743: {
        !           744:  if (self == NULL) {
        !           745:    *exc = GDOME_NULL_POINTER_ERR;
        !           746:    return NULL;
        !           747:  }
        !           748:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !           749:    *exc = GDOME_INVALID_STATE_ERR;
        !           750:    return NULL;
        !           751:  }
        !           752:  *exc = 0;
        !           753:  return ((Gdome_xml_Node *)self)->vtab->lastChild (self, exc);
        !           754: }
        !           755: /**
        !           756:  * gdome_n_localName:
        !           757:  * @self:  Node Objects ref
        !           758:  * @exc:  Exception Object ref
        !           759:  *
        !           760:  * Returns: the local part of the qualified name of this node.
        !           761:  * For nodes of any type other than %GDOME_ELEMENT_NODE and
        !           762:  * %GDOME_ATTRIBUTE_NODE and nodes created with a DOM Level 1 method, this is
        !           763:  * always %NULL.
        !           764:  */
        !           765: GdomeDOMString *
        !           766: gdome_n_localName (GdomeNode *self, GdomeException *exc)
        !           767: {
        !           768:  if (self == NULL) {
        !           769:    *exc = GDOME_NULL_POINTER_ERR;
        !           770:    return NULL;
        !           771:  }
        !           772:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !           773:    *exc = GDOME_INVALID_STATE_ERR;
        !           774:    return NULL;
        !           775:  }
        !           776:  *exc = 0;
        !           777:  return ((Gdome_xml_Node *)self)->vtab->localName (self, exc);
        !           778: }
        !           779: /**
        !           780:  * gdome_n_namespaceURI:
        !           781:  * @self:  Node Objects ref
        !           782:  * @exc:  Exception Object ref
        !           783:  *
        !           784:  * Returns: the namespace URI of this node, or %NULL if it is unspecified.
        !           785:  * For nodes of any type other than %GDOME_ELEMENT_NODE and
        !           786:  * %GDOME_ATTRIBUTE_NODE and nodes created with a DOM Level 1 method, this is
        !           787:  * always %NULL.
        !           788:  */
        !           789: GdomeDOMString *
        !           790: gdome_n_namespaceURI (GdomeNode *self, GdomeException *exc)
        !           791: {
        !           792:  if (self == NULL) {
        !           793:    *exc = GDOME_NULL_POINTER_ERR;
        !           794:    return NULL;
        !           795:  }
        !           796:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !           797:    *exc = GDOME_INVALID_STATE_ERR;
        !           798:    return NULL;
        !           799:  }
        !           800:  *exc = 0;
        !           801:  return ((Gdome_xml_Node *)self)->vtab->namespaceURI (self, exc);
        !           802: }
        !           803: /**
        !           804:  * gdome_n_nextSibling:
        !           805:  * @self:  Node Object ref
        !           806:  * @exc:  Exception Object ref
        !           807:  *
        !           808:  * Returns: the node immediately following this node. If there is no such
        !           809:  * node, this returns %NULL.
        !           810:  */
        !           811: GdomeNode *
        !           812: gdome_n_nextSibling (GdomeNode *self, GdomeException *exc)
        !           813: {
        !           814:  if (self == NULL) {
        !           815:    *exc = GDOME_NULL_POINTER_ERR;
        !           816:    return NULL;
        !           817:  }
        !           818:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !           819:    *exc = GDOME_INVALID_STATE_ERR;
        !           820:    return NULL;
        !           821:  }
        !           822:  *exc = 0;
        !           823:  return ((Gdome_xml_Node *)self)->vtab->nextSibling (self, exc);
        !           824: }
        !           825: /**
        !           826:  * gdome_n_nodeName:
        !           827:  * @self:  Node Object ref
        !           828:  * @exc:  Exception Object ref
        !           829:  *
        !           830:  * Returns: the name of this node, depending on its type.
        !           831:  */
        !           832: GdomeDOMString *
        !           833: gdome_n_nodeName (GdomeNode *self, GdomeException *exc)
        !           834: {
        !           835:  if (self == NULL) {
        !           836:    *exc = GDOME_NULL_POINTER_ERR;
        !           837:    return NULL;
        !           838:  }
        !           839:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !           840:    *exc = GDOME_INVALID_STATE_ERR;
        !           841:    return NULL;
        !           842:  }
        !           843:  *exc = 0;
        !           844:  return ((Gdome_xml_Node *)self)->vtab->nodeName (self, exc);
        !           845: }
        !           846: /**
        !           847:  * gdome_n_nodeType:
        !           848:  * @self:  Node Object ref
        !           849:  * @exc:  Exception Object ref
        !           850:  *
        !           851:  * Returns: an integer bigger than %0 representing the type of the underlying
        !           852:  * object or %0 on error.
        !           853:  */
        !           854: unsigned short
        !           855: gdome_n_nodeType (GdomeNode *self, GdomeException *exc)
        !           856: {
        !           857:  if (self == NULL) {
        !           858:    *exc = GDOME_NULL_POINTER_ERR;
        !           859:    return 0;
        !           860:  }
        !           861:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !           862:    *exc = GDOME_INVALID_STATE_ERR;
        !           863:    return 0;
        !           864:  }
        !           865:  *exc = 0;
        !           866:  return ((Gdome_xml_Node *)self)->vtab->nodeType (self, exc);
        !           867: }
        !           868: /**
        !           869:  * gdome_n_nodeValue:
        !           870:  * @self:  Node Object ref
        !           871:  * @exc:  Exception Object ref
        !           872:  *
        !           873:  * Returns: the value of this node, depending on its type.
        !           874:  */
        !           875: GdomeDOMString *
        !           876: gdome_n_nodeValue (GdomeNode *self, GdomeException *exc)
        !           877: {
        !           878:  if (self == NULL) {
        !           879:    *exc = GDOME_NULL_POINTER_ERR;
        !           880:    return NULL;
        !           881:  }
        !           882:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !           883:    *exc = GDOME_INVALID_STATE_ERR;
        !           884:    return NULL;
        !           885:  }
        !           886:  *exc = 0;
        !           887:  return ((Gdome_xml_Node *)self)->vtab->nodeValue (self, exc);
        !           888: }
        !           889: /**
        !           890:  * gdome_n_set_nodeValue:
        !           891:  * @self:  Node Object ref
        !           892:  * @nodeValue:  The new value for this node.
        !           893:  * @exc:  Exception Object ref
        !           894:  *
        !           895:  * Sets The value of this node, depending on its type.
        !           896:  *
        !           897:  * %GDOME_NO_MODIFICATION_ALLOWED_ERR: Raised when the node is readonly.
        !           898:  */
        !           899: void
        !           900: gdome_n_set_nodeValue (GdomeNode *self, GdomeDOMString *nodeValue, GdomeException *exc)
        !           901: {
        !           902:  if (self == NULL) {
        !           903:    *exc = GDOME_NULL_POINTER_ERR;
        !           904:    return;
        !           905:  }
        !           906:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !           907:    *exc = GDOME_INVALID_STATE_ERR;
        !           908:    return;
        !           909:  }
        !           910:  *exc = 0;
        !           911:  ((Gdome_xml_Node *)self)->vtab->set_nodeValue (self, nodeValue, exc);
        !           912: }
        !           913: /**
        !           914:  * gdome_n_ownerDocument:
        !           915:  * @self:  Node Objects ref
        !           916:  * @exc:  Exception Object ref
        !           917:  *
        !           918:  * Returns: the documment object associated with this node. This is also the
        !           919:  * Document object used to create new nodes. When this node is a Document or a
        !           920:  * DocumentType which is not used with any Document yet, this is %NULL.
        !           921:  */
        !           922: GdomeDocument *
        !           923: gdome_n_ownerDocument (GdomeNode *self, GdomeException *exc)
        !           924: {
        !           925:  if (self == NULL) {
        !           926:    *exc = GDOME_NULL_POINTER_ERR;
        !           927:    return NULL;
        !           928:  }
        !           929:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !           930:    *exc = GDOME_INVALID_STATE_ERR;
        !           931:    return NULL;
        !           932:  }
        !           933:  *exc = 0;
        !           934:  return ((Gdome_xml_Node *)self)->vtab->ownerDocument (self, exc);
        !           935: }
        !           936: /**
        !           937:  * gdome_n_parentNode:
        !           938:  * @self: Node Object ref
        !           939:  * @exc: Exception Object ref
        !           940:  *
        !           941:  * Returns: the parent of this node. All nodes, except Attr,
        !           942:  * Document, DocumentFragment, Entity, and Notation may have a parent. However,
        !           943:  * if a node has just been created and not yet added to the tree, or if it has
        !           944:  * been removed from the tree, this is %NULL.
        !           945:  */
        !           946: GdomeNode *
        !           947: gdome_n_parentNode (GdomeNode *self, GdomeException *exc)
        !           948: {
        !           949:  if (self == NULL) {
        !           950:    *exc = GDOME_NULL_POINTER_ERR;
        !           951:    return NULL;
        !           952:  }
        !           953:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !           954:    *exc = GDOME_INVALID_STATE_ERR;
        !           955:    return NULL;
        !           956:  }
        !           957:  *exc = 0;
        !           958:  return ((Gdome_xml_Node *)self)->vtab->parentNode (self, exc);
        !           959: }
        !           960: /**
        !           961:  * gdome_n_prefix:
        !           962:  * @self:  Node Objects ref
        !           963:  * @exc:  Exception Object ref
        !           964:  *
        !           965:  * Returns: the namespace prefix of this node, or %NULL if it is unspecified.
        !           966:  * For nodes of any type other than %GDOME_ELEMENT_NODE and
        !           967:  * %GDOME_ATTRIBUTE_NODE and nodes created with a DOM Level 1 method, this is
        !           968:  * always %NULL.
        !           969:  */
        !           970: GdomeDOMString *
        !           971: gdome_n_prefix (GdomeNode *self, GdomeException *exc)
        !           972: {
        !           973:  if (self == NULL) {
        !           974:    *exc = GDOME_NULL_POINTER_ERR;
        !           975:    return NULL;
        !           976:  }
        !           977:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !           978:    *exc = GDOME_INVALID_STATE_ERR;
        !           979:    return NULL;
        !           980:  }
        !           981:  *exc = 0;
        !           982:  return ((Gdome_xml_Node *)self)->vtab->prefix (self, exc);
        !           983: }
        !           984: /**
        !           985:  * gdome_n_set_prefix:
        !           986:  * @self:  Node Object ref
        !           987:  * @prefix:  The new prefix for this node.
        !           988:  * @exc:  Exception Object ref
        !           989:  *
        !           990:  * Sets a new nemaspace prefix for this node.
        !           991:  *
        !           992:  * %GDOME_NO_MODIFICATION_ALLOWED_ERR: Raised when the node is readonly.
        !           993:  * %GDOME_NAMESPACE_ERR: Raised if the specified @prefix is malformed per the
        !           994:  * Namespaces in XML specification, if the namespaceURI of this node is %NULL,
        !           995:  * if the specified prefix is "xml" and the namespaceURI of this node is
        !           996:  * different from "http://www.w3.org/XML/1998/namespace", if this node is an
        !           997:  * attribute and the specified prefix is "xmlns" and the namespaceURI of this
        !           998:  * node is different from "http://www.w3.org/2000/xmlns/", or if this node is
        !           999:  * an attribute and the qualifiedName of this node is "xmlns".
        !          1000:  */
        !          1001: void
        !          1002: gdome_n_set_prefix (GdomeNode *self, GdomeDOMString *prefix, GdomeException *exc)
        !          1003: {
        !          1004:  if (self == NULL) {
        !          1005:    *exc = GDOME_NULL_POINTER_ERR;
        !          1006:    return;
        !          1007:  }
        !          1008:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          1009:    *exc = GDOME_INVALID_STATE_ERR;
        !          1010:    return;
        !          1011:  }
        !          1012:  *exc = 0;
        !          1013:  ((Gdome_xml_Node *)self)->vtab->set_prefix (self, prefix, exc);
        !          1014: }
        !          1015: /**
        !          1016:  * gdome_n_previousSibling:
        !          1017:  * @self:  Node Object ref
        !          1018:  * @exc:  Exception Object ref
        !          1019:  *
        !          1020:  * Returns: the node immediately preceding this node. If there is no such
        !          1021:  * node, this returns %NULL.
        !          1022:  */
        !          1023: GdomeNode *
        !          1024: gdome_n_previousSibling (GdomeNode *self, GdomeException *exc)
        !          1025: {
        !          1026:  if (self == NULL) {
        !          1027:    *exc = GDOME_NULL_POINTER_ERR;
        !          1028:    return NULL;
        !          1029:  }
        !          1030:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          1031:    *exc = GDOME_INVALID_STATE_ERR;
        !          1032:    return NULL;
        !          1033:  }
        !          1034:  *exc = 0;
        !          1035:  return ((Gdome_xml_Node *)self)->vtab->previousSibling (self, exc);
        !          1036: }
        !          1037: /**
        !          1038:  * gdome_n_ref:
        !          1039:  * @self:  Node Object ref
        !          1040:  * @exc:  Exception Object ref
        !          1041:  *
        !          1042:  * Increase the reference count of the specified Node.
        !          1043:  */
        !          1044: void
        !          1045: gdome_n_ref (GdomeNode *self, GdomeException *exc)
        !          1046: {
        !          1047:  if (self == NULL) {
        !          1048:    *exc = GDOME_NULL_POINTER_ERR;
        !          1049:    return;
        !          1050:  }
        !          1051:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          1052:    *exc = GDOME_INVALID_STATE_ERR;
        !          1053:    return;
        !          1054:  }
        !          1055:  *exc = 0;
        !          1056:  ((Gdome_xml_Node *)self)->vtab->ref (self, exc);
        !          1057: }
        !          1058: /**
        !          1059:  * gdome_n_unref:
        !          1060:  * @self:  Node Object ref
        !          1061:  * @exc:  Exception Object ref
        !          1062:  *
        !          1063:  * Decrease the reference count of the specified Node. Free the Node structure
        !          1064:  * if the Node will have zero reference.
        !          1065:  */
        !          1066: void
        !          1067: gdome_n_unref (GdomeNode *self, GdomeException *exc)
        !          1068: {
        !          1069:  if (self == NULL) {
        !          1070:    *exc = GDOME_NULL_POINTER_ERR;
        !          1071:    return;
        !          1072:  }
        !          1073:  *exc = 0;
        !          1074:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          1075:    if (((Gdome_xml_Node *)self)->refcnt > 0)
        !          1076:      ((Gdome_xml_Node *)self)->refcnt--;
        !          1077: 
        !          1078:    if (((Gdome_xml_Node *)self)->refcnt == 0 && ((Gdome_xml_Node *)self)->ll == NULL) {
        !          1079: #ifdef DEBUG_REFCNT
        !          1080:      gdome_refdbg_delRef ((void *)self, GDOME_REFDBG_NODE);
        !          1081: #endif
        !          1082:      g_free (self);
        !          1083:    }
        !          1084:    return;
        !          1085:  }
        !          1086:  ((Gdome_xml_Node *)self)->vtab->unref (self, exc);
        !          1087: }
        !          1088: /**
        !          1089:  * gdome_n_query_interface:
        !          1090:  * @self:  Node Object ref
        !          1091:  * @interface:  interface needed
        !          1092:  * @exc:  Exception Object ref
        !          1093:  *
        !          1094:  * Returns: a reference to this object that implements the @interface needed,
        !          1095:  *          or %NULL if the @interface is not supported by this Object.
        !          1096:  */
        !          1097: gpointer
        !          1098: gdome_n_query_interface (GdomeNode *self, const char *interface, GdomeException *exc)
        !          1099: {
        !          1100:  if (self == NULL) {
        !          1101:    *exc = GDOME_NULL_POINTER_ERR;
        !          1102:    return NULL;
        !          1103:  }
        !          1104:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          1105:    *exc = GDOME_INVALID_STATE_ERR;
        !          1106:    return NULL;
        !          1107:  }
        !          1108:  *exc = 0;
        !          1109:  return ((Gdome_xml_Node *)self)->vtab->query_interface (self, interface, exc);
        !          1110: }
        !          1111: /**
        !          1112:  * gdome_n_appendChild:
        !          1113:  * @self:  Node Object ref
        !          1114:  * @newChild:  The node to add
        !          1115:  * @exc:  Exception Object ref
        !          1116:  *
        !          1117:  * Adds the node @newChild to the end of the list of children of this node.
        !          1118:  * If the @newChild is already in the tree, it is first removed. If it is a
        !          1119:  * DocumentFragment node, the entire contents of the document fragment are
        !          1120:  * moved into the child list of this node
        !          1121:  *
        !          1122:  * %GDOME_HIERARCHY_REQUEST_ERR: Raised if this node is of a type that does not
        !          1123:  * allow children of the type of the @newChild node, or if the node to append is
        !          1124:  * one of this node's ancestors or this node itself.
        !          1125:  * %GDOME_WRONG_DOCUMENT_ERR: Raised if @newChild was created from a different
        !          1126:  * document than the one that created this node.
        !          1127:  * %GDOME_NO_MODIFICATION_ALLOWED_ERR: Raised when the node is readonly.
        !          1128:  * Returns: the node added.
        !          1129:  */
        !          1130: GdomeNode *
        !          1131: gdome_n_appendChild (GdomeNode *self, GdomeNode *newChild, GdomeException *exc)
        !          1132: {
        !          1133:  if (self == NULL) {
        !          1134:    *exc = GDOME_NULL_POINTER_ERR;
        !          1135:    return NULL;
        !          1136:  }
        !          1137:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          1138:    *exc = GDOME_INVALID_STATE_ERR;
        !          1139:    return NULL;
        !          1140:  }
        !          1141:  *exc = 0;
        !          1142:  return ((Gdome_xml_Node *)self)->vtab->appendChild (self, newChild, exc);
        !          1143: }
        !          1144: /**
        !          1145:  * gdome_n_cloneNode:
        !          1146:  * @self:  Node Object ref
        !          1147:  * @deep:  If true, recursively clone the subtree under the specified node;
        !          1148:  *         if false, clone only the node itself (and its attributes, if it is
        !          1149:  *         an Element).
        !          1150:  * @exc:  Exception Object ref
        !          1151:  *
        !          1152:  * Makes a duplicate of this node, i.e., serves as a generic copy
        !          1153:  * constructor for nodes. The duplicate node has no parent; (parentNode is
        !          1154:  * %NULL).
        !          1155:  * %GDOME_DOCUMENT_TYPE_NODE, %GDOME_NOTATION_NODE and %GDOME_ENTITY_NODE
        !          1156:  * nodes are not supported.
        !          1157:  *
        !          1158:  * %GDOME_NOT_SUPPORTED_ERR: Raised if the type of node being cloned is not
        !          1159:  * supported.
        !          1160:  * Returns: the duplicate node.
        !          1161:  */
        !          1162: GdomeNode *
        !          1163: gdome_n_cloneNode (GdomeNode *self, GdomeBoolean deep, GdomeException *exc)
        !          1164: {
        !          1165:  if (self == NULL) {
        !          1166:    *exc = GDOME_NULL_POINTER_ERR;
        !          1167:    return NULL;
        !          1168:  }
        !          1169:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          1170:    *exc = GDOME_INVALID_STATE_ERR;
        !          1171:    return NULL;
        !          1172:  }
        !          1173:  *exc = 0;
        !          1174:  return ((Gdome_xml_Node *)self)->vtab->cloneNode (self, deep, exc);
        !          1175: }
        !          1176: /**
        !          1177:  * gdome_n_hasAttributes:
        !          1178:  * @self:  Node Object ref
        !          1179:  * @exc:  Exception Object ref
        !          1180:  *
        !          1181:  * Returns: %TRUE if this node has any attributes, %FALSE otherwise.
        !          1182:  */
        !          1183: GdomeBoolean
        !          1184: gdome_n_hasAttributes (GdomeNode *self, GdomeException *exc)
        !          1185: {
        !          1186:  if (self == NULL) {
        !          1187:    *exc = GDOME_NULL_POINTER_ERR;
        !          1188:    return FALSE;
        !          1189:  }
        !          1190:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          1191:    *exc = GDOME_INVALID_STATE_ERR;
        !          1192:    return FALSE;
        !          1193:  }
        !          1194:  *exc = 0;
        !          1195:  return ((Gdome_xml_Node *)self)->vtab->hasAttributes (self, exc);
        !          1196: }
        !          1197: /**
        !          1198:  * gdome_n_hasChildNodes:
        !          1199:  * @self:  Node Object ref
        !          1200:  * @exc:  Exception Object ref
        !          1201:  *
        !          1202:  * Returns: %TRUE if this node has any children, %FALSE otherwise.
        !          1203:  */
        !          1204: GdomeBoolean
        !          1205: gdome_n_hasChildNodes (GdomeNode *self, GdomeException *exc)
        !          1206: {
        !          1207:  if (self == NULL) {
        !          1208:    *exc = GDOME_NULL_POINTER_ERR;
        !          1209:    return FALSE;
        !          1210:  }
        !          1211:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          1212:    *exc = GDOME_INVALID_STATE_ERR;
        !          1213:    return FALSE;
        !          1214:  }
        !          1215:  *exc = 0;
        !          1216:  return ((Gdome_xml_Node *)self)->vtab->hasChildNodes (self, exc);
        !          1217: }
        !          1218: /**
        !          1219:  * gdome_n_insertBefore:
        !          1220:  * @self:  Node Object ref
        !          1221:  * @newChild:  The new node to put in the child list
        !          1222:  * @refChild:  the reference node, i.e., the node before which the new node
        !          1223:  *             must be inserted.
        !          1224:  * @exc:  Exception Object ref
        !          1225:  *
        !          1226:  * Inserts the node @newChild before the existing child node @refChild. If
        !          1227:  * @refChild is %NULL, insert @newChild at the end of the list of children.
        !          1228:  * If @newChild is a DocumentFragment node, all of its children are inserted,
        !          1229:  * in the same order, before @refChild. If the @newChild is already in the
        !          1230:  * tree, it is first removed.
        !          1231:  *
        !          1232:  * %GDOME_HIERARCHY_REQUEST_ERR: Raised if this node is of a type that does not
        !          1233:  * allow children of the type of the @newChild node, or if the node to insert is
        !          1234:  * one of this node's ancestors or this node itself.
        !          1235:  * %GDOME_WRONG_DOCUMENT_ERR: Raised if @newChild was created from a different
        !          1236:  * document than the one that created this node.
        !          1237:  * %GDOME_NOT_FOUND_ERR: Raised if @refChild is not a child of this node.
        !          1238:  * %GDOME_NO_MODIFICATION_ALLOWED_ERR: Raised when the node is readonly.
        !          1239:  * Returns: the node being inserted.
        !          1240:  */
        !          1241: GdomeNode *
        !          1242: gdome_n_insertBefore (GdomeNode *self, GdomeNode *newChild, GdomeNode *refChild, GdomeException *exc)
        !          1243: {
        !          1244:  if (self == NULL) {
        !          1245:    *exc = GDOME_NULL_POINTER_ERR;
        !          1246:    return NULL;
        !          1247:  }
        !          1248:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          1249:    *exc = GDOME_INVALID_STATE_ERR;
        !          1250:    return NULL;
        !          1251:  }
        !          1252:  *exc = 0;
        !          1253:  return ((Gdome_xml_Node *)self)->vtab->insertBefore (self, newChild, refChild, exc);
        !          1254: }
        !          1255: /**
        !          1256:  * gdome_n_isSupported:
        !          1257:  * @self:  Node Object ref
        !          1258:  * @feature:  The name of the feature to test.
        !          1259:  * @version:  This is the version number of the feature to test. In Level 2,
        !          1260:  *            version 1, this is the string "2.0". If the version is not
        !          1261:  *            specified, supporting any version of the feature will cause the
        !          1262:  *            method to return %TRUE.
        !          1263:  * @exc:  Exception Object ref
        !          1264:  *
        !          1265:  * Tests whether the DOM implementation implements a specific feature and that
        !          1266:  * feature is supported by this node.
        !          1267:  * Returns: %TRUE if the specified feature is supported on this node, %FALSE
        !          1268:  * otherwise.
        !          1269:  */
        !          1270: GdomeBoolean
        !          1271: gdome_n_isSupported (GdomeNode *self, GdomeDOMString *feature, GdomeDOMString *version, GdomeException *exc)
        !          1272: {
        !          1273:  if (self == NULL) {
        !          1274:    *exc = GDOME_NULL_POINTER_ERR;
        !          1275:    return FALSE;
        !          1276:  }
        !          1277:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          1278:    *exc = GDOME_INVALID_STATE_ERR;
        !          1279:    return FALSE;
        !          1280:  }
        !          1281:  *exc = 0;
        !          1282:  return ((Gdome_xml_Node *)self)->vtab->isSupported (self, feature, version, exc);
        !          1283: }
        !          1284: /**
        !          1285:  * gdome_n_normalize:
        !          1286:  * @self:  Node Object ref
        !          1287:  * @exc:  Exception Object ref
        !          1288:  *
        !          1289:  * Puts all Text nodes in the full depth of the sub-tree underneath this Node,
        !          1290:  * including attribute nodes, into a "normal" form where only structure (e.g.,
        !          1291:  * elements, comments, processing instructions, CDATA sections, and entity
        !          1292:  * references) separates Text nodes, i.e., there are neither adjacent Text
        !          1293:  * nodes nor empty Text nodes.
        !          1294:  */
        !          1295: void
        !          1296: gdome_n_normalize (GdomeNode *self, GdomeException *exc)
        !          1297: {
        !          1298:  if (self == NULL) {
        !          1299:    *exc = GDOME_NULL_POINTER_ERR;
        !          1300:    return;
        !          1301:  }
        !          1302:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          1303:    *exc = GDOME_INVALID_STATE_ERR;
        !          1304:    return;
        !          1305:  }
        !          1306:  *exc = 0;
        !          1307:  ((Gdome_xml_Node *)self)->vtab->normalize (self, exc);
        !          1308: }
        !          1309: /**
        !          1310:  * gdome_n_removeChild:
        !          1311:  * @self:  Node Object ref
        !          1312:  * @oldChild:  The node being removed
        !          1313:  * @exc:  Exception Object ref
        !          1314:  *
        !          1315:  * Removes the child node indicated by @oldChild from the list of children, and
        !          1316:  * returns it.
        !          1317:  *
        !          1318:  * %GDOME_NOT_FOUND_ERR: Raised if @oldChild is not a child of this node.
        !          1319:  * %GDOME_NO_MODIFICATION_ALLOWED_ERR: Raised when the node is readonly.
        !          1320:  * Returns: the node removed.
        !          1321:  */
        !          1322: GdomeNode *
        !          1323: gdome_n_removeChild (GdomeNode *self, GdomeNode *oldChild, GdomeException *exc)
        !          1324: {
        !          1325:  if (self == NULL) {
        !          1326:    *exc = GDOME_NULL_POINTER_ERR;
        !          1327:    return NULL;
        !          1328:  }
        !          1329:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          1330:    *exc = GDOME_INVALID_STATE_ERR;
        !          1331:    return NULL;
        !          1332:  }
        !          1333:  *exc = 0;
        !          1334:  return ((Gdome_xml_Node *)self)->vtab->removeChild (self, oldChild, exc);
        !          1335: }
        !          1336: /**
        !          1337:  * gdome_n_replaceChild:
        !          1338:  * @self:  Node Object ref
        !          1339:  * @newChild:  The new node to put in the child list
        !          1340:  * @oldChild:  The node being replaced in the list
        !          1341:  * @exc:  Exception Object ref
        !          1342:  *
        !          1343:  * Replaces the child node @oldChild with @newChild in the list of children,
        !          1344:  * and returns the @oldChild node. If @newChild is a DocumentFragment object,
        !          1345:  * @oldChild is replaced by all of the DocumentFragment children, which are
        !          1346:  * inserted in the same order. If the @newChild is already in the tree, it is
        !          1347:  * first removed.
        !          1348:  *
        !          1349:  * %GDOME_HIERARCHY_REQUEST_ERR: Raised if this node is of a type that does
        !          1350:  * not allow children of the type of the @newChild node, or if the node to put
        !          1351:  * in is one of this node's ancestors or this node itself.
        !          1352:  * %GDOME_WRONG_DOCUMENT_ERR: Raised if @newChild was created from a different
        !          1353:  * document than the one that created this node.
        !          1354:  * %GDOME_NOT_FOUND_ERR: Raised if @oldChild is not a child of this node.
        !          1355:  * %GDOME_NO_MODIFICATION_ALLOWED_ERR: Raised when the node is readonly.
        !          1356:  * Returns: the node replaced.
        !          1357:  */
        !          1358: GdomeNode *
        !          1359: gdome_n_replaceChild (GdomeNode *self, GdomeNode *newChild, GdomeNode *oldChild, GdomeException *exc)
        !          1360: {
        !          1361:  if (self == NULL) {
        !          1362:    *exc = GDOME_NULL_POINTER_ERR;
        !          1363:    return NULL;
        !          1364:  }
        !          1365:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          1366:    *exc = GDOME_INVALID_STATE_ERR;
        !          1367:    return NULL;
        !          1368:  }
        !          1369:  *exc = 0;
        !          1370:  return ((Gdome_xml_Node *)self)->vtab->replaceChild (self, newChild, oldChild, exc);
        !          1371: }
        !          1372: /**
        !          1373:  * gdome_n_addEventListener:
        !          1374:  * @self:  Node Object ref
        !          1375:  * @type:  the event type for which the user is registering
        !          1376:  * @listener:  the listener parameter takes an interface implemented by the
        !          1377:  *             user which contains the methods to be called when the event occurs.
        !          1378:  * @useCapture:  if %TRUE, useCapture indicates that the user wishes to initiate
        !          1379:  *               capture. After initiating capture, all events of the specified
        !          1380:  *               type will be dispatched to the registered EventListener before
        !          1381:  *               being dispatched to any EventTargets beneath them in the tree.
        !          1382:  *               Events which are bubbling upward through the tree will not
        !          1383:  *               trigger an EventListener designated to use capture.
        !          1384:  * @exc:  Exception Object ref
        !          1385:  *
        !          1386:  * This method allows the registration of event listeners on the event target.
        !          1387:  * If an EventListener is added to an EventTarget while it is processing an
        !          1388:  * event, it will not be triggered by the current actions but may be triggered
        !          1389:  * during a later stage of event flow, such as the bubbling phase.
        !          1390:  * If multiple identical EventListeners are registered on the same EventTarget
        !          1391:  * with the same parameters the duplicate instances are discarded. They do not
        !          1392:  * cause the EventListener to be called twice and since they are discarded
        !          1393:  * they do not need to be removed with the removeEventListener method.
        !          1394:  */
        !          1395: void
        !          1396: gdome_n_addEventListener (GdomeNode *self, GdomeDOMString *type, GdomeEventListener *listener, GdomeBoolean useCapture, GdomeException *exc)
        !          1397: {
        !          1398:  if (self == NULL) {
        !          1399:    *exc = GDOME_NULL_POINTER_ERR;
        !          1400:    return;
        !          1401:  }
        !          1402:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          1403:    *exc = GDOME_INVALID_STATE_ERR;
        !          1404:    return;
        !          1405:  }
        !          1406:  *exc = 0;
        !          1407:  ((Gdome_xml_Node *)self)->vtab->addEventListener (self, type, listener, useCapture, exc);
        !          1408: }
        !          1409: /**
        !          1410:  * gdome_n_removeEventListener:
        !          1411:  * @self:  Node Object ref
        !          1412:  * @type:  Specifies the event type of the EventListener being removed.
        !          1413:  * @listener:  The EventListener parameter indicates the EventListener to be
        !          1414:  *             removed.
        !          1415:  * @useCapture:  Specifies whether the EventListener being removed was
        !          1416:  *               registered as a capturing listener or not. If a listener was
        !          1417:  *               registered twice, one with capture and one without, each must
        !          1418:  *               be removed separately. Removal of a capturing listener does
        !          1419:  *               not affect a non-capturing version of the same listener, and
        !          1420:  *               vice versa.
        !          1421:  * @exc:  Exception Object ref
        !          1422:  *
        !          1423:  * This method allows the removal of event listeners from the event target. If
        !          1424:  * an EventListener is removed from an EventTarget while it is processing an
        !          1425:  * event, it will not be triggered by the current actions. EventListeners can
        !          1426:  * never be invoked after being removed. Calling removeEventListener with
        !          1427:  * arguments which do not identify any currently registered EventListener on
        !          1428:  * the EventTarget has no effect.
        !          1429:  */
        !          1430: void
        !          1431: gdome_n_removeEventListener (GdomeNode *self, GdomeDOMString *type, GdomeEventListener *listener, GdomeBoolean useCapture, GdomeException *exc)
        !          1432: {
        !          1433:  if (self == NULL) {
        !          1434:    *exc = GDOME_NULL_POINTER_ERR;
        !          1435:    return;
        !          1436:  }
        !          1437:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          1438:    *exc = GDOME_INVALID_STATE_ERR;
        !          1439:    return;
        !          1440:  }
        !          1441:  *exc = 0;
        !          1442:  ((Gdome_xml_Node *)self)->vtab->removeEventListener (self, type, listener, useCapture, exc);
        !          1443: }
        !          1444: /**
        !          1445:  * gdome_n_dispatchEvent:
        !          1446:  * @self:  Node Object ref
        !          1447:  * @evt:  Specifies the event type, behavior, and contextual information to be
        !          1448:  *        used in processing the event.
        !          1449:  * @exc:  Exception Object ref
        !          1450:  *
        !          1451:  * This method allows the dispatch of events into the implementations event
        !          1452:  * model. Events dispatched in this manner will have the same capturing and
        !          1453:  * bubbling behavior as events dispatched directly by the implementation. The
        !          1454:  * target of the event is the EventTarget on which dispatchEvent is called.
        !          1455:  *
        !          1456:  * GDOME_UNSPECIFIED_EVENT_TYPE_ERR: Raised if the Event's type was not
        !          1457:  * specified by initializing the event before dispatchEvent was called.
        !          1458:  * Specification of the Event's type as %NULL or an empty string will also
        !          1459:  * trigger this exception.
        !          1460:  * Returns: if preventDefault was called the value is %FALSE, else the value
        !          1461:  *          is %TRUE.
        !          1462:  */
        !          1463: GdomeBoolean
        !          1464: gdome_n_dispatchEvent (GdomeNode *self, GdomeEvent *evt, GdomeException *exc)
        !          1465: {
        !          1466:  if (self == NULL) {
        !          1467:    *exc = GDOME_NULL_POINTER_ERR;
        !          1468:    return FALSE;
        !          1469:  }
        !          1470:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          1471:    *exc = GDOME_INVALID_STATE_ERR;
        !          1472:    return FALSE;
        !          1473:  }
        !          1474:  *exc = 0;
        !          1475:  return ((Gdome_xml_Node *)self)->vtab->dispatchEvent (self, evt, exc);
        !          1476: }
        !          1477: /**
        !          1478:  * gdome_n_subTreeDispatchEvent:
        !          1479:  * @self:  Node Object ref
        !          1480:  * @evt:  Specifies the event type, behavior, and contextual information to be
        !          1481:  *        used in processing the event.
        !          1482:  * @exc:  Exception Object ref
        !          1483:  *
        !          1484:  * This method allows the dispatch of events into the implementations event
        !          1485:  * model. Events dispatched in this manner will have the same capturing and
        !          1486:  * bubbling behavior as events dispatched directly by the implementation. The
        !          1487:  * target of the event is any nodes in the subtree of the EventTarget on which
        !          1488:  * dispatchEvent is called.
        !          1489:  *
        !          1490:  * GDOME_UNSPECIFIED_EVENT_TYPE_ERR: Raised if the Event's type was not
        !          1491:  * specified by initializing the event before dispatchEvent was called.
        !          1492:  * Specification of the Event's type as %NULL or an empty string will also
        !          1493:  * trigger this exception.
        !          1494:  */
        !          1495: void
        !          1496: gdome_n_subTreeDispatchEvent (GdomeNode *self, GdomeEvent *evt, GdomeException *exc)
        !          1497: {
        !          1498:  if (self == NULL) {
        !          1499:    *exc = GDOME_NULL_POINTER_ERR;
        !          1500:    return;
        !          1501:  }
        !          1502:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          1503:    *exc = GDOME_INVALID_STATE_ERR;
        !          1504:    return;
        !          1505:  }
        !          1506:  *exc = 0;
        !          1507:  ((Gdome_xml_Node *)self)->vtab->subTreeDispatchEvent (self, evt, exc);
        !          1508: }
        !          1509: /**
        !          1510:  * gdome_n_canAppend:
        !          1511:  * @self:  Node Object ref
        !          1512:  * @newChild:  The Node Object ref of the node to test
        !          1513:  * @exc:  Exception Object ref
        !          1514:  *
        !          1515:  * Tests if a @newChild can be added in the child list of this node.
        !          1516:  * Returns: %TRUE if @newChild can be added, %FALSE otherwise.
        !          1517:  */
        !          1518: GdomeBoolean
        !          1519: gdome_n_canAppend (GdomeNode *self, GdomeNode *newChild, GdomeException *exc)
        !          1520: {
        !          1521:  if (self == NULL) {
        !          1522:    *exc = GDOME_NULL_POINTER_ERR;
        !          1523:    return FALSE;
        !          1524:  }
        !          1525:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          1526:    *exc = GDOME_INVALID_STATE_ERR;
        !          1527:    return FALSE;
        !          1528:  }
        !          1529:  *exc = 0;
        !          1530:  return ((Gdome_xml_Node *)self)->vtab->canAppend (self, newChild, exc);
        !          1531: }
        !          1532: 
        !          1533: /******************************************************************************
        !          1534:           GdomeDocumentFragment interface API
        !          1535:  ******************************************************************************/
        !          1536: /**
        !          1537:  * gdome_df_attributes:
        !          1538:  * @self:  Node Object ref
        !          1539:  * @exc:  Exception Object ref
        !          1540:  *
        !          1541:  * Returns: a NamedNodeMap containing the attributes of this node (if it is an
        !          1542:  * Element) or %NULL otherwise.
        !          1543:  */
        !          1544: GdomeNamedNodeMap *
        !          1545: gdome_df_attributes (GdomeDocumentFragment *self, GdomeException *exc)
        !          1546: {
        !          1547:  if (self == NULL) {
        !          1548:    *exc = GDOME_NULL_POINTER_ERR;
        !          1549:    return NULL;
        !          1550:  }
        !          1551:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          1552:    *exc = GDOME_INVALID_STATE_ERR;
        !          1553:    return NULL;
        !          1554:  }
        !          1555:  *exc = 0;
        !          1556:  return ((Gdome_xml_DocumentFragment *)self)->vtab->super.attributes ((GdomeNode *)self, exc);
        !          1557: }
        !          1558: /**
        !          1559:  * gdome_df_childNodes:
        !          1560:  * @self:  Node Object ref
        !          1561:  * @exc:  Exception Object ref
        !          1562:  *
        !          1563:  * Returns: a NodeList that contains all children of this node. If there are no
        !          1564:  * children, this is a NodeList containing no nodes.  Note that attributes are
        !          1565:  * not considered to be children of element nodes - use gdome_n_attributes to
        !          1566:  * obtain the attributes.
        !          1567:  */
        !          1568: GdomeNodeList *
        !          1569: gdome_df_childNodes (GdomeDocumentFragment *self, GdomeException *exc)
        !          1570: {
        !          1571:  if (self == NULL) {
        !          1572:    *exc = GDOME_NULL_POINTER_ERR;
        !          1573:    return NULL;
        !          1574:  }
        !          1575:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          1576:    *exc = GDOME_INVALID_STATE_ERR;
        !          1577:    return NULL;
        !          1578:  }
        !          1579:  *exc = 0;
        !          1580:  return ((Gdome_xml_DocumentFragment *)self)->vtab->super.childNodes ((GdomeNode *)self, exc);
        !          1581: }
        !          1582: /**
        !          1583:  * gdome_df_firstChild:
        !          1584:  * @self:  Node Object ref
        !          1585:  * @exc:  Exception Object ref
        !          1586:  * 
        !          1587:  * Returns: the first child of this node. If there is no such node,
        !          1588:  * this returns %NULL.
        !          1589:  */
        !          1590: GdomeNode *
        !          1591: gdome_df_firstChild (GdomeDocumentFragment *self, GdomeException *exc)
        !          1592: {
        !          1593:  if (self == NULL) {
        !          1594:    *exc = GDOME_NULL_POINTER_ERR;
        !          1595:    return NULL;
        !          1596:  }
        !          1597:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          1598:    *exc = GDOME_INVALID_STATE_ERR;
        !          1599:    return NULL;
        !          1600:  }
        !          1601:  *exc = 0;
        !          1602:  return ((Gdome_xml_DocumentFragment *)self)->vtab->super.firstChild ((GdomeNode *)self, exc);
        !          1603: }
        !          1604: /**
        !          1605:  * gdome_df_lastChild:
        !          1606:  * @self:  Node Object ref
        !          1607:  * @exc:  Exception Object ref
        !          1608:  *
        !          1609:  * Returns: the last child of this node. If there is no such node,
        !          1610:  * this returns %NULL.
        !          1611:  */
        !          1612: GdomeNode *
        !          1613: gdome_df_lastChild (GdomeDocumentFragment *self, GdomeException *exc)
        !          1614: {
        !          1615:  if (self == NULL) {
        !          1616:    *exc = GDOME_NULL_POINTER_ERR;
        !          1617:    return NULL;
        !          1618:  }
        !          1619:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          1620:    *exc = GDOME_INVALID_STATE_ERR;
        !          1621:    return NULL;
        !          1622:  }
        !          1623:  *exc = 0;
        !          1624:  return ((Gdome_xml_DocumentFragment *)self)->vtab->super.lastChild ((GdomeNode *)self, exc);
        !          1625: }
        !          1626: /**
        !          1627:  * gdome_df_localName:
        !          1628:  * @self:  Node Objects ref
        !          1629:  * @exc:  Exception Object ref
        !          1630:  *
        !          1631:  * Returns: the local part of the qualified name of this node.
        !          1632:  * For nodes of any type other than %GDOME_ELEMENT_NODE and
        !          1633:  * %GDOME_ATTRIBUTE_NODE and nodes created with a DOM Level 1 method, this is
        !          1634:  * always %NULL.
        !          1635:  */
        !          1636: GdomeDOMString *
        !          1637: gdome_df_localName (GdomeDocumentFragment *self, GdomeException *exc)
        !          1638: {
        !          1639:  if (self == NULL) {
        !          1640:    *exc = GDOME_NULL_POINTER_ERR;
        !          1641:    return NULL;
        !          1642:  }
        !          1643:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          1644:    *exc = GDOME_INVALID_STATE_ERR;
        !          1645:    return NULL;
        !          1646:  }
        !          1647:  *exc = 0;
        !          1648:  return ((Gdome_xml_DocumentFragment *)self)->vtab->super.localName ((GdomeNode *)self, exc);
        !          1649: }
        !          1650: /**
        !          1651:  * gdome_df_namespaceURI:
        !          1652:  * @self:  Node Objects ref
        !          1653:  * @exc:  Exception Object ref
        !          1654:  *
        !          1655:  * Returns: the namespace URI of this node, or %NULL if it is unspecified.
        !          1656:  * For nodes of any type other than %GDOME_ELEMENT_NODE and
        !          1657:  * %GDOME_ATTRIBUTE_NODE and nodes created with a DOM Level 1 method, this is
        !          1658:  * always %NULL.
        !          1659:  */
        !          1660: GdomeDOMString *
        !          1661: gdome_df_namespaceURI (GdomeDocumentFragment *self, GdomeException *exc)
        !          1662: {
        !          1663:  if (self == NULL) {
        !          1664:    *exc = GDOME_NULL_POINTER_ERR;
        !          1665:    return NULL;
        !          1666:  }
        !          1667:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          1668:    *exc = GDOME_INVALID_STATE_ERR;
        !          1669:    return NULL;
        !          1670:  }
        !          1671:  *exc = 0;
        !          1672:  return ((Gdome_xml_DocumentFragment *)self)->vtab->super.namespaceURI ((GdomeNode *)self, exc);
        !          1673: }
        !          1674: /**
        !          1675:  * gdome_df_nextSibling:
        !          1676:  * @self:  Node Object ref
        !          1677:  * @exc:  Exception Object ref
        !          1678:  *
        !          1679:  * Returns: the node immediately following this node. If there is no such
        !          1680:  * node, this returns %NULL.
        !          1681:  */
        !          1682: GdomeNode *
        !          1683: gdome_df_nextSibling (GdomeDocumentFragment *self, GdomeException *exc)
        !          1684: {
        !          1685:  if (self == NULL) {
        !          1686:    *exc = GDOME_NULL_POINTER_ERR;
        !          1687:    return NULL;
        !          1688:  }
        !          1689:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          1690:    *exc = GDOME_INVALID_STATE_ERR;
        !          1691:    return NULL;
        !          1692:  }
        !          1693:  *exc = 0;
        !          1694:  return ((Gdome_xml_DocumentFragment *)self)->vtab->super.nextSibling ((GdomeNode *)self, exc);
        !          1695: }
        !          1696: /**
        !          1697:  * gdome_df_nodeName:
        !          1698:  * @self:  Node Object ref
        !          1699:  * @exc:  Exception Object ref
        !          1700:  *
        !          1701:  * Returns: the name of this node, depending on its type.
        !          1702:  */
        !          1703: GdomeDOMString *
        !          1704: gdome_df_nodeName (GdomeDocumentFragment *self, GdomeException *exc)
        !          1705: {
        !          1706:  if (self == NULL) {
        !          1707:    *exc = GDOME_NULL_POINTER_ERR;
        !          1708:    return NULL;
        !          1709:  }
        !          1710:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          1711:    *exc = GDOME_INVALID_STATE_ERR;
        !          1712:    return NULL;
        !          1713:  }
        !          1714:  *exc = 0;
        !          1715:  return ((Gdome_xml_DocumentFragment *)self)->vtab->super.nodeName ((GdomeNode *)self, exc);
        !          1716: }
        !          1717: /**
        !          1718:  * gdome_df_nodeType:
        !          1719:  * @self:  Node Object ref
        !          1720:  * @exc:  Exception Object ref
        !          1721:  *
        !          1722:  * Returns: an integer bigger than %0 representing the type of the underlying
        !          1723:  * object or %0 on error.
        !          1724:  */
        !          1725: unsigned short
        !          1726: gdome_df_nodeType (GdomeDocumentFragment *self, GdomeException *exc)
        !          1727: {
        !          1728:  if (self == NULL) {
        !          1729:    *exc = GDOME_NULL_POINTER_ERR;
        !          1730:    return 0;
        !          1731:  }
        !          1732:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          1733:    *exc = GDOME_INVALID_STATE_ERR;
        !          1734:    return 0;
        !          1735:  }
        !          1736:  *exc = 0;
        !          1737:  return ((Gdome_xml_DocumentFragment *)self)->vtab->super.nodeType ((GdomeNode *)self, exc);
        !          1738: }
        !          1739: /**
        !          1740:  * gdome_df_nodeValue:
        !          1741:  * @self:  Node Object ref
        !          1742:  * @exc:  Exception Object ref
        !          1743:  *
        !          1744:  * Returns: the value of this node, depending on its type.
        !          1745:  */
        !          1746: GdomeDOMString *
        !          1747: gdome_df_nodeValue (GdomeDocumentFragment *self, GdomeException *exc)
        !          1748: {
        !          1749:  if (self == NULL) {
        !          1750:    *exc = GDOME_NULL_POINTER_ERR;
        !          1751:    return NULL;
        !          1752:  }
        !          1753:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          1754:    *exc = GDOME_INVALID_STATE_ERR;
        !          1755:    return NULL;
        !          1756:  }
        !          1757:  *exc = 0;
        !          1758:  return ((Gdome_xml_DocumentFragment *)self)->vtab->super.nodeValue ((GdomeNode *)self, exc);
        !          1759: }
        !          1760: /**
        !          1761:  * gdome_df_set_nodeValue:
        !          1762:  * @self:  Node Object ref
        !          1763:  * @nodeValue:  The new value for this node.
        !          1764:  * @exc:  Exception Object ref
        !          1765:  *
        !          1766:  * Sets The value of this node, depending on its type.
        !          1767:  *
        !          1768:  * %GDOME_NO_MODIFICATION_ALLOWED_ERR: Raised when the node is readonly.
        !          1769:  */
        !          1770: void
        !          1771: gdome_df_set_nodeValue (GdomeDocumentFragment *self, GdomeDOMString *nodeValue, GdomeException *exc)
        !          1772: {
        !          1773:  if (self == NULL) {
        !          1774:    *exc = GDOME_NULL_POINTER_ERR;
        !          1775:    return;
        !          1776:  }
        !          1777:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          1778:    *exc = GDOME_INVALID_STATE_ERR;
        !          1779:    return;
        !          1780:  }
        !          1781:  *exc = 0;
        !          1782:  ((Gdome_xml_DocumentFragment *)self)->vtab->super.set_nodeValue ((GdomeNode *)self, nodeValue, exc);
        !          1783: }
        !          1784: /**
        !          1785:  * gdome_df_ownerDocument:
        !          1786:  * @self:  Node Objects ref
        !          1787:  * @exc:  Exception Object ref
        !          1788:  *
        !          1789:  * Returns: the documment object associated with this node. This is also the
        !          1790:  * Document object used to create new nodes. When this node is a Document or a
        !          1791:  * DocumentType which is not used with any Document yet, this is %NULL.
        !          1792:  */
        !          1793: GdomeDocument *
        !          1794: gdome_df_ownerDocument (GdomeDocumentFragment *self, GdomeException *exc)
        !          1795: {
        !          1796:  if (self == NULL) {
        !          1797:    *exc = GDOME_NULL_POINTER_ERR;
        !          1798:    return NULL;
        !          1799:  }
        !          1800:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          1801:    *exc = GDOME_INVALID_STATE_ERR;
        !          1802:    return NULL;
        !          1803:  }
        !          1804:  *exc = 0;
        !          1805:  return ((Gdome_xml_DocumentFragment *)self)->vtab->super.ownerDocument ((GdomeNode *)self, exc);
        !          1806: }
        !          1807: /**
        !          1808:  * gdome_df_parentNode:
        !          1809:  * @self: Node Object ref
        !          1810:  * @exc: Exception Object ref
        !          1811:  *
        !          1812:  * Returns: the parent of this node. All nodes, except Attr,
        !          1813:  * Document, DocumentFragment, Entity, and Notation may have a parent. However,
        !          1814:  * if a node has just been created and not yet added to the tree, or if it has
        !          1815:  * been removed from the tree, this is %NULL.
        !          1816:  */
        !          1817: GdomeNode *
        !          1818: gdome_df_parentNode (GdomeDocumentFragment *self, GdomeException *exc)
        !          1819: {
        !          1820:  if (self == NULL) {
        !          1821:    *exc = GDOME_NULL_POINTER_ERR;
        !          1822:    return NULL;
        !          1823:  }
        !          1824:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          1825:    *exc = GDOME_INVALID_STATE_ERR;
        !          1826:    return NULL;
        !          1827:  }
        !          1828:  *exc = 0;
        !          1829:  return ((Gdome_xml_DocumentFragment *)self)->vtab->super.parentNode ((GdomeNode *)self, exc);
        !          1830: }
        !          1831: /**
        !          1832:  * gdome_df_prefix:
        !          1833:  * @self:  Node Objects ref
        !          1834:  * @exc:  Exception Object ref
        !          1835:  *
        !          1836:  * Returns: the namespace prefix of this node, or %NULL if it is unspecified.
        !          1837:  * For nodes of any type other than %GDOME_ELEMENT_NODE and
        !          1838:  * %GDOME_ATTRIBUTE_NODE and nodes created with a DOM Level 1 method, this is
        !          1839:  * always %NULL.
        !          1840:  */
        !          1841: GdomeDOMString *
        !          1842: gdome_df_prefix (GdomeDocumentFragment *self, GdomeException *exc)
        !          1843: {
        !          1844:  if (self == NULL) {
        !          1845:    *exc = GDOME_NULL_POINTER_ERR;
        !          1846:    return NULL;
        !          1847:  }
        !          1848:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          1849:    *exc = GDOME_INVALID_STATE_ERR;
        !          1850:    return NULL;
        !          1851:  }
        !          1852:  *exc = 0;
        !          1853:  return ((Gdome_xml_DocumentFragment *)self)->vtab->super.prefix ((GdomeNode *)self, exc);
        !          1854: }
        !          1855: /**
        !          1856:  * gdome_df_set_prefix:
        !          1857:  * @self:  Node Object ref
        !          1858:  * @prefix:  The new prefix for this node.
        !          1859:  * @exc:  Exception Object ref
        !          1860:  *
        !          1861:  * Sets a new nemaspace prefix for this node.
        !          1862:  *
        !          1863:  * %GDOME_NO_MODIFICATION_ALLOWED_ERR: Raised when the node is readonly.
        !          1864:  * %GDOME_NAMESPACE_ERR: Raised if the specified @prefix is malformed per the
        !          1865:  * Namespaces in XML specification, if the namespaceURI of this node is %NULL,
        !          1866:  * if the specified prefix is "xml" and the namespaceURI of this node is
        !          1867:  * different from "http://www.w3.org/XML/1998/namespace", if this node is an
        !          1868:  * attribute and the specified prefix is "xmlns" and the namespaceURI of this
        !          1869:  * node is different from "http://www.w3.org/2000/xmlns/", or if this node is
        !          1870:  * an attribute and the qualifiedName of this node is "xmlns".
        !          1871:  */
        !          1872: void
        !          1873: gdome_df_set_prefix (GdomeDocumentFragment *self, GdomeDOMString *prefix, GdomeException *exc)
        !          1874: {
        !          1875:  if (self == NULL) {
        !          1876:    *exc = GDOME_NULL_POINTER_ERR;
        !          1877:    return;
        !          1878:  }
        !          1879:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          1880:    *exc = GDOME_INVALID_STATE_ERR;
        !          1881:    return;
        !          1882:  }
        !          1883:  *exc = 0;
        !          1884:  ((Gdome_xml_DocumentFragment *)self)->vtab->super.set_prefix ((GdomeNode *)self, prefix, exc);
        !          1885: }
        !          1886: /**
        !          1887:  * gdome_df_previousSibling:
        !          1888:  * @self:  Node Object ref
        !          1889:  * @exc:  Exception Object ref
        !          1890:  *
        !          1891:  * Returns: the node immediately preceding this node. If there is no such
        !          1892:  * node, this returns %NULL.
        !          1893:  */
        !          1894: GdomeNode *
        !          1895: gdome_df_previousSibling (GdomeDocumentFragment *self, GdomeException *exc)
        !          1896: {
        !          1897:  if (self == NULL) {
        !          1898:    *exc = GDOME_NULL_POINTER_ERR;
        !          1899:    return NULL;
        !          1900:  }
        !          1901:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          1902:    *exc = GDOME_INVALID_STATE_ERR;
        !          1903:    return NULL;
        !          1904:  }
        !          1905:  *exc = 0;
        !          1906:  return ((Gdome_xml_DocumentFragment *)self)->vtab->super.previousSibling ((GdomeNode *)self, exc);
        !          1907: }
        !          1908: /**
        !          1909:  * gdome_df_ref:
        !          1910:  * @self:  Node Object ref
        !          1911:  * @exc:  Exception Object ref
        !          1912:  *
        !          1913:  * Increase the reference count of the specified Node.
        !          1914:  */
        !          1915: void
        !          1916: gdome_df_ref (GdomeDocumentFragment *self, GdomeException *exc)
        !          1917: {
        !          1918:  if (self == NULL) {
        !          1919:    *exc = GDOME_NULL_POINTER_ERR;
        !          1920:    return;
        !          1921:  }
        !          1922:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          1923:    *exc = GDOME_INVALID_STATE_ERR;
        !          1924:    return;
        !          1925:  }
        !          1926:  *exc = 0;
        !          1927:  ((Gdome_xml_DocumentFragment *)self)->vtab->super.ref ((GdomeNode *)self, exc);
        !          1928: }
        !          1929: /**
        !          1930:  * gdome_df_unref:
        !          1931:  * @self:  Node Object ref
        !          1932:  * @exc:  Exception Object ref
        !          1933:  *
        !          1934:  * Decrease the reference count of the specified Node. Free the Node structure
        !          1935:  * if the Node will have zero reference.
        !          1936:  */
        !          1937: void
        !          1938: gdome_df_unref (GdomeDocumentFragment *self, GdomeException *exc)
        !          1939: {
        !          1940:  if (self == NULL) {
        !          1941:    *exc = GDOME_NULL_POINTER_ERR;
        !          1942:    return;
        !          1943:  }
        !          1944:  *exc = 0;
        !          1945:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          1946:    if (((Gdome_xml_Node *)self)->refcnt > 0)
        !          1947:      ((Gdome_xml_Node *)self)->refcnt--;
        !          1948: 
        !          1949:    if (((Gdome_xml_Node *)self)->refcnt == 0 && ((Gdome_xml_Node *)self)->ll == NULL) {
        !          1950: #ifdef DEBUG_REFCNT
        !          1951:      gdome_refdbg_delRef ((void *)self, GDOME_REFDBG_NODE);
        !          1952: #endif
        !          1953:      g_free (self);
        !          1954:    }
        !          1955:    return;
        !          1956:  }
        !          1957:  ((Gdome_xml_DocumentFragment *)self)->vtab->super.unref ((GdomeNode *)self, exc);
        !          1958: }
        !          1959: /**
        !          1960:  * gdome_df_query_interface:
        !          1961:  * @self:  Node Object ref
        !          1962:  * @interface:  interface needed
        !          1963:  * @exc:  Exception Object ref
        !          1964:  *
        !          1965:  * Returns: a reference to this object that implements the @interface needed,
        !          1966:  *          or %NULL if the @interface is not supported by this Object.
        !          1967:  */
        !          1968: gpointer
        !          1969: gdome_df_query_interface (GdomeDocumentFragment *self, const char *interface, GdomeException *exc)
        !          1970: {
        !          1971:  if (self == NULL) {
        !          1972:    *exc = GDOME_NULL_POINTER_ERR;
        !          1973:    return NULL;
        !          1974:  }
        !          1975:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          1976:    *exc = GDOME_INVALID_STATE_ERR;
        !          1977:    return NULL;
        !          1978:  }
        !          1979:  *exc = 0;
        !          1980:  return ((Gdome_xml_DocumentFragment *)self)->vtab->super.query_interface ((GdomeNode *)self, interface, exc);
        !          1981: }
        !          1982: /**
        !          1983:  * gdome_df_appendChild:
        !          1984:  * @self:  Node Object ref
        !          1985:  * @newChild:  The node to add
        !          1986:  * @exc:  Exception Object ref
        !          1987:  *
        !          1988:  * Adds the node @newChild to the end of the list of children of this node.
        !          1989:  * If the @newChild is already in the tree, it is first removed. If it is a
        !          1990:  * DocumentFragment node, the entire contents of the document fragment are
        !          1991:  * moved into the child list of this node
        !          1992:  *
        !          1993:  * %GDOME_HIERARCHY_REQUEST_ERR: Raised if this node is of a type that does not
        !          1994:  * allow children of the type of the @newChild node, or if the node to append is
        !          1995:  * one of this node's ancestors or this node itself.
        !          1996:  * %GDOME_WRONG_DOCUMENT_ERR: Raised if @newChild was created from a different
        !          1997:  * document than the one that created this node.
        !          1998:  * %GDOME_NO_MODIFICATION_ALLOWED_ERR: Raised when the node is readonly.
        !          1999:  * Returns: the node added.
        !          2000:  */
        !          2001: GdomeNode *
        !          2002: gdome_df_appendChild (GdomeDocumentFragment *self, GdomeNode *newChild, GdomeException *exc)
        !          2003: {
        !          2004:  if (self == NULL) {
        !          2005:    *exc = GDOME_NULL_POINTER_ERR;
        !          2006:    return NULL;
        !          2007:  }
        !          2008:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          2009:    *exc = GDOME_INVALID_STATE_ERR;
        !          2010:    return NULL;
        !          2011:  }
        !          2012:  *exc = 0;
        !          2013:  return ((Gdome_xml_DocumentFragment *)self)->vtab->super.appendChild ((GdomeNode *)self, newChild, exc);
        !          2014: }
        !          2015: /**
        !          2016:  * gdome_df_cloneNode:
        !          2017:  * @self:  Node Object ref
        !          2018:  * @deep:  If true, recursively clone the subtree under the specified node;
        !          2019:  *         if false, clone only the node itself (and its attributes, if it is
        !          2020:  *         an Element).
        !          2021:  * @exc:  Exception Object ref
        !          2022:  *
        !          2023:  * Makes a duplicate of this node, i.e., serves as a generic copy
        !          2024:  * constructor for nodes. The duplicate node has no parent; (parentNode is
        !          2025:  * %NULL).
        !          2026:  * %GDOME_DOCUMENT_TYPE_NODE, %GDOME_NOTATION_NODE and %GDOME_ENTITY_NODE
        !          2027:  * nodes are not supported.
        !          2028:  *
        !          2029:  * %GDOME_NOT_SUPPORTED_ERR: Raised if the type of node being cloned is not
        !          2030:  * supported.
        !          2031:  * Returns: the duplicate node.
        !          2032:  */
        !          2033: GdomeNode *
        !          2034: gdome_df_cloneNode (GdomeDocumentFragment *self, GdomeBoolean deep, GdomeException *exc)
        !          2035: {
        !          2036:  if (self == NULL) {
        !          2037:    *exc = GDOME_NULL_POINTER_ERR;
        !          2038:    return NULL;
        !          2039:  }
        !          2040:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          2041:    *exc = GDOME_INVALID_STATE_ERR;
        !          2042:    return NULL;
        !          2043:  }
        !          2044:  *exc = 0;
        !          2045:  return ((Gdome_xml_DocumentFragment *)self)->vtab->super.cloneNode ((GdomeNode *)self, deep, exc);
        !          2046: }
        !          2047: /**
        !          2048:  * gdome_df_hasAttributes:
        !          2049:  * @self:  Node Object ref
        !          2050:  * @exc:  Exception Object ref
        !          2051:  *
        !          2052:  * Returns: %TRUE if this node has any attributes, %FALSE otherwise.
        !          2053:  */
        !          2054: GdomeBoolean
        !          2055: gdome_df_hasAttributes (GdomeDocumentFragment *self, GdomeException *exc)
        !          2056: {
        !          2057:  if (self == NULL) {
        !          2058:    *exc = GDOME_NULL_POINTER_ERR;
        !          2059:    return FALSE;
        !          2060:  }
        !          2061:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          2062:    *exc = GDOME_INVALID_STATE_ERR;
        !          2063:    return FALSE;
        !          2064:  }
        !          2065:  *exc = 0;
        !          2066:  return ((Gdome_xml_DocumentFragment *)self)->vtab->super.hasAttributes ((GdomeNode *)self, exc);
        !          2067: }
        !          2068: /**
        !          2069:  * gdome_df_hasChildNodes:
        !          2070:  * @self:  Node Object ref
        !          2071:  * @exc:  Exception Object ref
        !          2072:  *
        !          2073:  * Returns: %TRUE if this node has any children, %FALSE otherwise.
        !          2074:  */
        !          2075: GdomeBoolean
        !          2076: gdome_df_hasChildNodes (GdomeDocumentFragment *self, GdomeException *exc)
        !          2077: {
        !          2078:  if (self == NULL) {
        !          2079:    *exc = GDOME_NULL_POINTER_ERR;
        !          2080:    return FALSE;
        !          2081:  }
        !          2082:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          2083:    *exc = GDOME_INVALID_STATE_ERR;
        !          2084:    return FALSE;
        !          2085:  }
        !          2086:  *exc = 0;
        !          2087:  return ((Gdome_xml_DocumentFragment *)self)->vtab->super.hasChildNodes ((GdomeNode *)self, exc);
        !          2088: }
        !          2089: /**
        !          2090:  * gdome_df_insertBefore:
        !          2091:  * @self:  Node Object ref
        !          2092:  * @newChild:  The new node to put in the child list
        !          2093:  * @refChild:  the reference node, i.e., the node before which the new node
        !          2094:  *             must be inserted.
        !          2095:  * @exc:  Exception Object ref
        !          2096:  *
        !          2097:  * Inserts the node @newChild before the existing child node @refChild. If
        !          2098:  * @refChild is %NULL, insert @newChild at the end of the list of children.
        !          2099:  * If @newChild is a DocumentFragment node, all of its children are inserted,
        !          2100:  * in the same order, before @refChild. If the @newChild is already in the
        !          2101:  * tree, it is first removed.
        !          2102:  *
        !          2103:  * %GDOME_HIERARCHY_REQUEST_ERR: Raised if this node is of a type that does not
        !          2104:  * allow children of the type of the @newChild node, or if the node to insert is
        !          2105:  * one of this node's ancestors or this node itself.
        !          2106:  * %GDOME_WRONG_DOCUMENT_ERR: Raised if @newChild was created from a different
        !          2107:  * document than the one that created this node.
        !          2108:  * %GDOME_NOT_FOUND_ERR: Raised if @refChild is not a child of this node.
        !          2109:  * %GDOME_NO_MODIFICATION_ALLOWED_ERR: Raised when the node is readonly.
        !          2110:  * Returns: the node being inserted.
        !          2111:  */
        !          2112: GdomeNode *
        !          2113: gdome_df_insertBefore (GdomeDocumentFragment *self, GdomeNode *newChild, GdomeNode *refChild, GdomeException *exc)
        !          2114: {
        !          2115:  if (self == NULL) {
        !          2116:    *exc = GDOME_NULL_POINTER_ERR;
        !          2117:    return NULL;
        !          2118:  }
        !          2119:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          2120:    *exc = GDOME_INVALID_STATE_ERR;
        !          2121:    return NULL;
        !          2122:  }
        !          2123:  *exc = 0;
        !          2124:  return ((Gdome_xml_DocumentFragment *)self)->vtab->super.insertBefore ((GdomeNode *)self, newChild, refChild, exc);
        !          2125: }
        !          2126: /**
        !          2127:  * gdome_df_isSupported:
        !          2128:  * @self:  Node Object ref
        !          2129:  * @feature:  The name of the feature to test.
        !          2130:  * @version:  This is the version number of the feature to test. In Level 2,
        !          2131:  *            version 1, this is the string "2.0". If the version is not
        !          2132:  *            specified, supporting any version of the feature will cause the
        !          2133:  *            method to return %TRUE.
        !          2134:  * @exc:  Exception Object ref
        !          2135:  *
        !          2136:  * Tests whether the DOM implementation implements a specific feature and that
        !          2137:  * feature is supported by this node.
        !          2138:  * Returns: %TRUE if the specified feature is supported on this node, %FALSE
        !          2139:  * otherwise.
        !          2140:  */
        !          2141: GdomeBoolean
        !          2142: gdome_df_isSupported (GdomeDocumentFragment *self, GdomeDOMString *feature, GdomeDOMString *version, GdomeException *exc)
        !          2143: {
        !          2144:  if (self == NULL) {
        !          2145:    *exc = GDOME_NULL_POINTER_ERR;
        !          2146:    return FALSE;
        !          2147:  }
        !          2148:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          2149:    *exc = GDOME_INVALID_STATE_ERR;
        !          2150:    return FALSE;
        !          2151:  }
        !          2152:  *exc = 0;
        !          2153:  return ((Gdome_xml_DocumentFragment *)self)->vtab->super.isSupported ((GdomeNode *)self, feature, version, exc);
        !          2154: }
        !          2155: /**
        !          2156:  * gdome_df_normalize:
        !          2157:  * @self:  Node Object ref
        !          2158:  * @exc:  Exception Object ref
        !          2159:  *
        !          2160:  * Puts all Text nodes in the full depth of the sub-tree underneath this Node,
        !          2161:  * including attribute nodes, into a "normal" form where only structure (e.g.,
        !          2162:  * elements, comments, processing instructions, CDATA sections, and entity
        !          2163:  * references) separates Text nodes, i.e., there are neither adjacent Text
        !          2164:  * nodes nor empty Text nodes.
        !          2165:  */
        !          2166: void
        !          2167: gdome_df_normalize (GdomeDocumentFragment *self, GdomeException *exc)
        !          2168: {
        !          2169:  if (self == NULL) {
        !          2170:    *exc = GDOME_NULL_POINTER_ERR;
        !          2171:    return;
        !          2172:  }
        !          2173:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          2174:    *exc = GDOME_INVALID_STATE_ERR;
        !          2175:    return;
        !          2176:  }
        !          2177:  *exc = 0;
        !          2178:  ((Gdome_xml_DocumentFragment *)self)->vtab->super.normalize ((GdomeNode *)self, exc);
        !          2179: }
        !          2180: /**
        !          2181:  * gdome_df_removeChild:
        !          2182:  * @self:  Node Object ref
        !          2183:  * @oldChild:  The node being removed
        !          2184:  * @exc:  Exception Object ref
        !          2185:  *
        !          2186:  * Removes the child node indicated by @oldChild from the list of children, and
        !          2187:  * returns it.
        !          2188:  *
        !          2189:  * %GDOME_NOT_FOUND_ERR: Raised if @oldChild is not a child of this node.
        !          2190:  * %GDOME_NO_MODIFICATION_ALLOWED_ERR: Raised when the node is readonly.
        !          2191:  * Returns: the node removed.
        !          2192:  */
        !          2193: GdomeNode *
        !          2194: gdome_df_removeChild (GdomeDocumentFragment *self, GdomeNode *oldChild, GdomeException *exc)
        !          2195: {
        !          2196:  if (self == NULL) {
        !          2197:    *exc = GDOME_NULL_POINTER_ERR;
        !          2198:    return NULL;
        !          2199:  }
        !          2200:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          2201:    *exc = GDOME_INVALID_STATE_ERR;
        !          2202:    return NULL;
        !          2203:  }
        !          2204:  *exc = 0;
        !          2205:  return ((Gdome_xml_DocumentFragment *)self)->vtab->super.removeChild ((GdomeNode *)self, oldChild, exc);
        !          2206: }
        !          2207: /**
        !          2208:  * gdome_df_replaceChild:
        !          2209:  * @self:  Node Object ref
        !          2210:  * @newChild:  The new node to put in the child list
        !          2211:  * @oldChild:  The node being replaced in the list
        !          2212:  * @exc:  Exception Object ref
        !          2213:  *
        !          2214:  * Replaces the child node @oldChild with @newChild in the list of children,
        !          2215:  * and returns the @oldChild node. If @newChild is a DocumentFragment object,
        !          2216:  * @oldChild is replaced by all of the DocumentFragment children, which are
        !          2217:  * inserted in the same order. If the @newChild is already in the tree, it is
        !          2218:  * first removed.
        !          2219:  *
        !          2220:  * %GDOME_HIERARCHY_REQUEST_ERR: Raised if this node is of a type that does
        !          2221:  * not allow children of the type of the @newChild node, or if the node to put
        !          2222:  * in is one of this node's ancestors or this node itself.
        !          2223:  * %GDOME_WRONG_DOCUMENT_ERR: Raised if @newChild was created from a different
        !          2224:  * document than the one that created this node.
        !          2225:  * %GDOME_NOT_FOUND_ERR: Raised if @oldChild is not a child of this node.
        !          2226:  * %GDOME_NO_MODIFICATION_ALLOWED_ERR: Raised when the node is readonly.
        !          2227:  * Returns: the node replaced.
        !          2228:  */
        !          2229: GdomeNode *
        !          2230: gdome_df_replaceChild (GdomeDocumentFragment *self, GdomeNode *newChild, GdomeNode *oldChild, GdomeException *exc)
        !          2231: {
        !          2232:  if (self == NULL) {
        !          2233:    *exc = GDOME_NULL_POINTER_ERR;
        !          2234:    return NULL;
        !          2235:  }
        !          2236:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          2237:    *exc = GDOME_INVALID_STATE_ERR;
        !          2238:    return NULL;
        !          2239:  }
        !          2240:  *exc = 0;
        !          2241:  return ((Gdome_xml_DocumentFragment *)self)->vtab->super.replaceChild ((GdomeNode *)self, newChild, oldChild, exc);
        !          2242: }
        !          2243: /**
        !          2244:  * gdome_df_addEventListener:
        !          2245:  * @self:  Node Object ref
        !          2246:  * @type:  the event type for which the user is registering
        !          2247:  * @listener:  the listener parameter takes an interface implemented by the
        !          2248:  *             user which contains the methods to be called when the event occurs.
        !          2249:  * @useCapture:  if %TRUE, useCapture indicates that the user wishes to initiate
        !          2250:  *               capture. After initiating capture, all events of the specified
        !          2251:  *               type will be dispatched to the registered EventListener before
        !          2252:  *               being dispatched to any EventTargets beneath them in the tree.
        !          2253:  *               Events which are bubbling upward through the tree will not
        !          2254:  *               trigger an EventListener designated to use capture.
        !          2255:  * @exc:  Exception Object ref
        !          2256:  *
        !          2257:  * This method allows the registration of event listeners on the event target.
        !          2258:  * If an EventListener is added to an EventTarget while it is processing an
        !          2259:  * event, it will not be triggered by the current actions but may be triggered
        !          2260:  * during a later stage of event flow, such as the bubbling phase.
        !          2261:  * If multiple identical EventListeners are registered on the same EventTarget
        !          2262:  * with the same parameters the duplicate instances are discarded. They do not
        !          2263:  * cause the EventListener to be called twice and since they are discarded
        !          2264:  * they do not need to be removed with the removeEventListener method.
        !          2265:  */
        !          2266: void
        !          2267: gdome_df_addEventListener (GdomeDocumentFragment *self, GdomeDOMString *type, GdomeEventListener *listener, GdomeBoolean useCapture, GdomeException *exc)
        !          2268: {
        !          2269:  if (self == NULL) {
        !          2270:    *exc = GDOME_NULL_POINTER_ERR;
        !          2271:    return;
        !          2272:  }
        !          2273:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          2274:    *exc = GDOME_INVALID_STATE_ERR;
        !          2275:    return;
        !          2276:  }
        !          2277:  *exc = 0;
        !          2278:  ((Gdome_xml_DocumentFragment *)self)->vtab->super.addEventListener ((GdomeNode *)self, type, listener, useCapture, exc);
        !          2279: }
        !          2280: /**
        !          2281:  * gdome_df_removeEventListener:
        !          2282:  * @self:  Node Object ref
        !          2283:  * @type:  Specifies the event type of the EventListener being removed.
        !          2284:  * @listener:  The EventListener parameter indicates the EventListener to be
        !          2285:  *             removed.
        !          2286:  * @useCapture:  Specifies whether the EventListener being removed was
        !          2287:  *               registered as a capturing listener or not. If a listener was
        !          2288:  *               registered twice, one with capture and one without, each must
        !          2289:  *               be removed separately. Removal of a capturing listener does
        !          2290:  *               not affect a non-capturing version of the same listener, and
        !          2291:  *               vice versa.
        !          2292:  * @exc:  Exception Object ref
        !          2293:  *
        !          2294:  * This method allows the removal of event listeners from the event target. If
        !          2295:  * an EventListener is removed from an EventTarget while it is processing an
        !          2296:  * event, it will not be triggered by the current actions. EventListeners can
        !          2297:  * never be invoked after being removed. Calling removeEventListener with
        !          2298:  * arguments which do not identify any currently registered EventListener on
        !          2299:  * the EventTarget has no effect.
        !          2300:  */
        !          2301: void
        !          2302: gdome_df_removeEventListener (GdomeDocumentFragment *self, GdomeDOMString *type, GdomeEventListener *listener, GdomeBoolean useCapture, GdomeException *exc)
        !          2303: {
        !          2304:  if (self == NULL) {
        !          2305:    *exc = GDOME_NULL_POINTER_ERR;
        !          2306:    return;
        !          2307:  }
        !          2308:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          2309:    *exc = GDOME_INVALID_STATE_ERR;
        !          2310:    return;
        !          2311:  }
        !          2312:  *exc = 0;
        !          2313:  ((Gdome_xml_DocumentFragment *)self)->vtab->super.removeEventListener ((GdomeNode *)self, type, listener, useCapture, exc);
        !          2314: }
        !          2315: /**
        !          2316:  * gdome_df_dispatchEvent:
        !          2317:  * @self:  Node Object ref
        !          2318:  * @evt:  Specifies the event type, behavior, and contextual information to be
        !          2319:  *        used in processing the event.
        !          2320:  * @exc:  Exception Object ref
        !          2321:  *
        !          2322:  * This method allows the dispatch of events into the implementations event
        !          2323:  * model. Events dispatched in this manner will have the same capturing and
        !          2324:  * bubbling behavior as events dispatched directly by the implementation. The
        !          2325:  * target of the event is the EventTarget on which dispatchEvent is called.
        !          2326:  *
        !          2327:  * GDOME_UNSPECIFIED_EVENT_TYPE_ERR: Raised if the Event's type was not
        !          2328:  * specified by initializing the event before dispatchEvent was called.
        !          2329:  * Specification of the Event's type as %NULL or an empty string will also
        !          2330:  * trigger this exception.
        !          2331:  * Returns: if preventDefault was called the value is %FALSE, else the value
        !          2332:  *          is %TRUE.
        !          2333:  */
        !          2334: GdomeBoolean
        !          2335: gdome_df_dispatchEvent (GdomeDocumentFragment *self, GdomeEvent *evt, GdomeException *exc)
        !          2336: {
        !          2337:  if (self == NULL) {
        !          2338:    *exc = GDOME_NULL_POINTER_ERR;
        !          2339:    return FALSE;
        !          2340:  }
        !          2341:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          2342:    *exc = GDOME_INVALID_STATE_ERR;
        !          2343:    return FALSE;
        !          2344:  }
        !          2345:  *exc = 0;
        !          2346:  return ((Gdome_xml_DocumentFragment *)self)->vtab->super.dispatchEvent ((GdomeNode *)self, evt, exc);
        !          2347: }
        !          2348: /**
        !          2349:  * gdome_df_subTreeDispatchEvent:
        !          2350:  * @self:  Node Object ref
        !          2351:  * @evt:  Specifies the event type, behavior, and contextual information to be
        !          2352:  *        used in processing the event.
        !          2353:  * @exc:  Exception Object ref
        !          2354:  *
        !          2355:  * This method allows the dispatch of events into the implementations event
        !          2356:  * model. Events dispatched in this manner will have the same capturing and
        !          2357:  * bubbling behavior as events dispatched directly by the implementation. The
        !          2358:  * target of the event is any nodes in the subtree of the EventTarget on which
        !          2359:  * dispatchEvent is called.
        !          2360:  *
        !          2361:  * GDOME_UNSPECIFIED_EVENT_TYPE_ERR: Raised if the Event's type was not
        !          2362:  * specified by initializing the event before dispatchEvent was called.
        !          2363:  * Specification of the Event's type as %NULL or an empty string will also
        !          2364:  * trigger this exception.
        !          2365:  */
        !          2366: void
        !          2367: gdome_df_subTreeDispatchEvent (GdomeDocumentFragment *self, GdomeEvent *evt, GdomeException *exc)
        !          2368: {
        !          2369:  if (self == NULL) {
        !          2370:    *exc = GDOME_NULL_POINTER_ERR;
        !          2371:    return;
        !          2372:  }
        !          2373:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          2374:    *exc = GDOME_INVALID_STATE_ERR;
        !          2375:    return;
        !          2376:  }
        !          2377:  *exc = 0;
        !          2378:  ((Gdome_xml_DocumentFragment *)self)->vtab->super.subTreeDispatchEvent ((GdomeNode *)self, evt, exc);
        !          2379: }
        !          2380: /**
        !          2381:  * gdome_df_canAppend:
        !          2382:  * @self:  Node Object ref
        !          2383:  * @newChild:  The Node Object ref of the node to test
        !          2384:  * @exc:  Exception Object ref
        !          2385:  *
        !          2386:  * Tests if a @newChild can be added in the child list of this node.
        !          2387:  * Returns: %TRUE if @newChild can be added, %FALSE otherwise.
        !          2388:  */
        !          2389: GdomeBoolean
        !          2390: gdome_df_canAppend (GdomeDocumentFragment *self, GdomeNode *newChild, GdomeException *exc)
        !          2391: {
        !          2392:  if (self == NULL) {
        !          2393:    *exc = GDOME_NULL_POINTER_ERR;
        !          2394:    return FALSE;
        !          2395:  }
        !          2396:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          2397:    *exc = GDOME_INVALID_STATE_ERR;
        !          2398:    return FALSE;
        !          2399:  }
        !          2400:  *exc = 0;
        !          2401:  return ((Gdome_xml_DocumentFragment *)self)->vtab->super.canAppend ((GdomeNode *)self, newChild, exc);
        !          2402: }
        !          2403: 
        !          2404: /******************************************************************************
        !          2405:           GdomeDocument interface API
        !          2406:  ******************************************************************************/
        !          2407: /**
        !          2408:  * gdome_doc_doctype:
        !          2409:  * @self:  Document Object ref
        !          2410:  * @exc:  Exception Object ref
        !          2411:  *
        !          2412:  * Returns: The Document Type Declaration associated with this document. The
        !          2413:  * DOM Level 2 does not support editing the Document Type Declaration. docType
        !          2414:  * cannot be altered in any way, including through the use of methods inherited
        !          2415:  * from the Node interface, such as insertNode or removeNode.
        !          2416:  */
        !          2417: GdomeDocumentType *
        !          2418: gdome_doc_doctype (GdomeDocument *self, GdomeException *exc)
        !          2419: {
        !          2420:  if (self == NULL) {
        !          2421:    *exc = GDOME_NULL_POINTER_ERR;
        !          2422:    return NULL;
        !          2423:  }
        !          2424:  if (((Gdome_xml_Document *)self)->n == NULL) {
        !          2425:    *exc = GDOME_INVALID_STATE_ERR;
        !          2426:    return NULL;
        !          2427:  }
        !          2428:  *exc = 0;
        !          2429:  return ((Gdome_xml_Document *)self)->vtab->doctype (self, exc);
        !          2430: }
        !          2431: /**
        !          2432:  * gdome_doc_documentElement:
        !          2433:  * @self:  Document Object ref
        !          2434:  * @exc:  Exception Object ref
        !          2435:  *
        !          2436:  * Returns: the root Element of the Document.
        !          2437:  */
        !          2438: GdomeElement *
        !          2439: gdome_doc_documentElement (GdomeDocument *self, GdomeException *exc)
        !          2440: {
        !          2441:  if (self == NULL) {
        !          2442:    *exc = GDOME_NULL_POINTER_ERR;
        !          2443:    return NULL;
        !          2444:  }
        !          2445:  if (((Gdome_xml_Document *)self)->n == NULL) {
        !          2446:    *exc = GDOME_INVALID_STATE_ERR;
        !          2447:    return NULL;
        !          2448:  }
        !          2449:  *exc = 0;
        !          2450:  return ((Gdome_xml_Document *)self)->vtab->documentElement (self, exc);
        !          2451: }
        !          2452: /**
        !          2453:  * gdome_doc_implementation:
        !          2454:  * @self:  Document Object ref
        !          2455:  * @exc:  Exception Object ref
        !          2456:  *
        !          2457:  * Returns: the DOMImplementation object that handles this document.
        !          2458:  */
        !          2459: GdomeDOMImplementation *
        !          2460: gdome_doc_implementation (GdomeDocument *self, GdomeException *exc)
        !          2461: {
        !          2462:  if (self == NULL) {
        !          2463:    *exc = GDOME_NULL_POINTER_ERR;
        !          2464:    return NULL;
        !          2465:  }
        !          2466:  if (((Gdome_xml_Document *)self)->n == NULL) {
        !          2467:    *exc = GDOME_INVALID_STATE_ERR;
        !          2468:    return NULL;
        !          2469:  }
        !          2470:  *exc = 0;
        !          2471:  return ((Gdome_xml_Document *)self)->vtab->implementation (self, exc);
        !          2472: }
        !          2473: /**
        !          2474:  * gdome_doc_createAttribute:
        !          2475:  * @self:  Document Object ref
        !          2476:  * @name:  The name of the attribute
        !          2477:  * @exc:  Exception Object ref
        !          2478:  *
        !          2479:  * Creates an Attr of the given @name. Note that the Attr instance can then be
        !          2480:  * set on an Element using the setAttributeNode method. To create an attribute
        !          2481:  * with a qualified name and namespace URI, use the
        !          2482:  * gdome_doc_createAttributeNS() method.
        !          2483:  * Returns: a new Attr object with the nodeName attribute set to @name, and
        !          2484:  * localName, prefix, and namespaceURI set to %NULL. The value of the attribute
        !          2485:  * is the empty string.
        !          2486:  */
        !          2487: GdomeAttr *
        !          2488: gdome_doc_createAttribute (GdomeDocument *self, GdomeDOMString *name, GdomeException *exc)
        !          2489: {
        !          2490:  if (self == NULL) {
        !          2491:    *exc = GDOME_NULL_POINTER_ERR;
        !          2492:    return NULL;
        !          2493:  }
        !          2494:  if (((Gdome_xml_Document *)self)->n == NULL) {
        !          2495:    *exc = GDOME_INVALID_STATE_ERR;
        !          2496:    return NULL;
        !          2497:  }
        !          2498:  *exc = 0;
        !          2499:  return ((Gdome_xml_Document *)self)->vtab->createAttribute (self, name, exc);
        !          2500: }
        !          2501: /**
        !          2502:  * gdome_doc_createAttributeNS:
        !          2503:  * @self:  Document Object ref
        !          2504:  * @namespaceURI:  The namespace URI of the attribute to create
        !          2505:  * @qualifiedName:  The qualified name of the attribute to create
        !          2506:  * @exc:  Exception Object ref
        !          2507:  *
        !          2508:  * Creates an attribute of the given qualified name and namespace URI.
        !          2509:  *
        !          2510:  * %GDOME_NAMESPACE_ERR: Raised if the @qualifiedName is malformed, if the
        !          2511:  * @qualifiedName has a prefix and the @namespaceURI is %NUKK, if the
        !          2512:  * @qualifiedName has a prefix that is "xml" and the @namespaceURI is different
        !          2513:  * from "http://www.w3.org/XML/1998/namespace", or if the @qualifiedName is
        !          2514:  * "xmlns" and the @namespaceURI is different from "http://www.w3.org/2000/xmlns/".
        !          2515:  * Returns: a new Attr object with the following attributes:
        !          2516:  * %Node.nodeName = @qualifiedName,
        !          2517:  * %Node.namespaceURI = @namespaceURI,
        !          2518:  * %Node.prefix = prefix, extracted from @qualifiedName,
        !          2519:  * %Node.localName = localName, extracted from @qualifiedName,
        !          2520:  * %Attr.name = @qualifiedName,
        !          2521:  * %Node.nodeValue = the empty string.
        !          2522:  */
        !          2523: GdomeAttr *
        !          2524: gdome_doc_createAttributeNS (GdomeDocument *self, GdomeDOMString *namespaceURI, GdomeDOMString *qualifiedName, GdomeException *exc)
        !          2525: {
        !          2526:  if (self == NULL) {
        !          2527:    *exc = GDOME_NULL_POINTER_ERR;
        !          2528:    return NULL;
        !          2529:  }
        !          2530:  if (((Gdome_xml_Document *)self)->n == NULL) {
        !          2531:    *exc = GDOME_INVALID_STATE_ERR;
        !          2532:    return NULL;
        !          2533:  }
        !          2534:  *exc = 0;
        !          2535:  return ((Gdome_xml_Document *)self)->vtab->createAttributeNS (self, namespaceURI, qualifiedName, exc);
        !          2536: }
        !          2537: /**
        !          2538:  * gdome_doc_createCDATASection:
        !          2539:  * @self:  Document Object ref
        !          2540:  * @data:  The data for the CDATASection contents
        !          2541:  * @exc:  Exception Object ref
        !          2542:  *
        !          2543:  * Creates a CDATASection node whose value is the specified string.
        !          2544:  * Returns: the new CDATASection object.
        !          2545:  */
        !          2546: GdomeCDATASection *
        !          2547: gdome_doc_createCDATASection (GdomeDocument *self, GdomeDOMString *data, GdomeException *exc)
        !          2548: {
        !          2549:  if (self == NULL) {
        !          2550:    *exc = GDOME_NULL_POINTER_ERR;
        !          2551:    return NULL;
        !          2552:  }
        !          2553:  if (((Gdome_xml_Document *)self)->n == NULL) {
        !          2554:    *exc = GDOME_INVALID_STATE_ERR;
        !          2555:    return NULL;
        !          2556:  }
        !          2557:  *exc = 0;
        !          2558:  return ((Gdome_xml_Document *)self)->vtab->createCDATASection (self, data, exc);
        !          2559: }
        !          2560: /**
        !          2561:  * gdome_doc_createComment:
        !          2562:  * @self:  Document Object ref
        !          2563:  * @data:  The data for the comment contents
        !          2564:  * @exc:  Exception Object ref
        !          2565:  *
        !          2566:  * Creates a Comment node whose value is the specified string.
        !          2567:  * Returns: the new Comment object.
        !          2568:  */
        !          2569: GdomeComment *
        !          2570: gdome_doc_createComment (GdomeDocument *self, GdomeDOMString *data, GdomeException *exc)
        !          2571: {
        !          2572:  if (self == NULL) {
        !          2573:    *exc = GDOME_NULL_POINTER_ERR;
        !          2574:    return NULL;
        !          2575:  }
        !          2576:  if (((Gdome_xml_Document *)self)->n == NULL) {
        !          2577:    *exc = GDOME_INVALID_STATE_ERR;
        !          2578:    return NULL;
        !          2579:  }
        !          2580:  *exc = 0;
        !          2581:  return ((Gdome_xml_Document *)self)->vtab->createComment (self, data, exc);
        !          2582: }
        !          2583: /**
        !          2584:  * gdome_doc_createDocumentFragment:
        !          2585:  * @self:  Document Object ref
        !          2586:  * @exc:  Exception Object ref
        !          2587:  *
        !          2588:  * Creates an empty DocumentFragment object. 
        !          2589:  * Returns: the new DocumentFragment object.
        !          2590:  */
        !          2591: GdomeDocumentFragment *
        !          2592: gdome_doc_createDocumentFragment (GdomeDocument *self, GdomeException *exc)
        !          2593: {
        !          2594:  if (self == NULL) {
        !          2595:    *exc = GDOME_NULL_POINTER_ERR;
        !          2596:    return NULL;
        !          2597:  }
        !          2598:  if (((Gdome_xml_Document *)self)->n == NULL) {
        !          2599:    *exc = GDOME_INVALID_STATE_ERR;
        !          2600:    return NULL;
        !          2601:  }
        !          2602:  *exc = 0;
        !          2603:  return ((Gdome_xml_Document *)self)->vtab->createDocumentFragment (self, exc);
        !          2604: }
        !          2605: /**
        !          2606:  * gdome_doc_createElement:
        !          2607:  * @self:  Document Object ref
        !          2608:  * @tagName:  The name of the element type to instantiate.
        !          2609:  * @exc:  Exception Object ref
        !          2610:  *
        !          2611:  * Creates an element of the type specified. Note that the instance returned
        !          2612:  * implements the Element interface, so attributes can be specified directly on
        !          2613:  * the returned object.
        !          2614:  * To create an element with a qualified name and namespace URI, use the
        !          2615:  * gdome_doc_createElementNS() function.
        !          2616:  * Returns: a new Element object with the nodeName attribute set to tagName,
        !          2617:  * and localName, prefix, and namespaceURI set to %NULL.
        !          2618:  */
        !          2619: GdomeElement *
        !          2620: gdome_doc_createElement (GdomeDocument *self, GdomeDOMString *tagName, GdomeException *exc)
        !          2621: {
        !          2622:  if (self == NULL) {
        !          2623:    *exc = GDOME_NULL_POINTER_ERR;
        !          2624:    return NULL;
        !          2625:  }
        !          2626:  if (((Gdome_xml_Document *)self)->n == NULL) {
        !          2627:    *exc = GDOME_INVALID_STATE_ERR;
        !          2628:    return NULL;
        !          2629:  }
        !          2630:  *exc = 0;
        !          2631:  return ((Gdome_xml_Document *)self)->vtab->createElement (self, tagName, exc);
        !          2632: }
        !          2633: /**
        !          2634:  * gdome_doc_createElementNS:
        !          2635:  * @self:  Document Object ref
        !          2636:  * @namespaceURI:  The namespace URI of the element to create
        !          2637:  * @qualifiedName:  The qualified name of the element to create
        !          2638:  * @exc:  Exception Object ref
        !          2639:  *
        !          2640:  * Creates an element of the given qualified name and namespace URI.
        !          2641:  *
        !          2642:  * %GDOME_NAMESPACE_ERR: Raised if the @qualifiedName is malformed, if the
        !          2643:  * @qualifiedName has a prefix and the @namespaceURI is %NULL, or if the
        !          2644:  * @qualifiedName has a prefix that is "xml" and the @namespaceURI is different
        !          2645:  * from "http://www.w3.org/XML/1998/namespace".
        !          2646:  * Returns: a new Element object with the following attributes:
        !          2647:  * %Node.nodeName = @qualifiedName,
        !          2648:  * %Node.namespaceURI = @namespaceURI,
        !          2649:  * %Node.prefix = prefix, extracted from @qualifiedName,
        !          2650:  * %Node.localName = localName, extracted from @qualifiedName,
        !          2651:  * %Element.tagName = @qualifiedName.
        !          2652:  */
        !          2653: GdomeElement *
        !          2654: gdome_doc_createElementNS (GdomeDocument *self, GdomeDOMString *namespaceURI, GdomeDOMString *qualifiedName, GdomeException *exc)
        !          2655: {
        !          2656:  if (self == NULL) {
        !          2657:    *exc = GDOME_NULL_POINTER_ERR;
        !          2658:    return NULL;
        !          2659:  }
        !          2660:  if (((Gdome_xml_Document *)self)->n == NULL) {
        !          2661:    *exc = GDOME_INVALID_STATE_ERR;
        !          2662:    return NULL;
        !          2663:  }
        !          2664:  *exc = 0;
        !          2665:  return ((Gdome_xml_Document *)self)->vtab->createElementNS (self, namespaceURI, qualifiedName, exc);
        !          2666: }
        !          2667: /**
        !          2668:  * gdome_doc_createEntityReference:
        !          2669:  * @self:  Document Object ref
        !          2670:  * @name:  The name of the entity to reference
        !          2671:  * @exc:  Exception Object ref
        !          2672:  *
        !          2673:  * Creates an EntityReference object. In addition, if the referenced entity is
        !          2674:  * known, the child list of the EntityReference node is made the same as that
        !          2675:  * of the corresponding Entity node.
        !          2676:  * Returns: the new EntityReference object.
        !          2677:  */
        !          2678: GdomeEntityReference *
        !          2679: gdome_doc_createEntityReference (GdomeDocument *self, GdomeDOMString *name, GdomeException *exc)
        !          2680: {
        !          2681:  if (self == NULL) {
        !          2682:    *exc = GDOME_NULL_POINTER_ERR;
        !          2683:    return NULL;
        !          2684:  }
        !          2685:  if (((Gdome_xml_Document *)self)->n == NULL) {
        !          2686:    *exc = GDOME_INVALID_STATE_ERR;
        !          2687:    return NULL;
        !          2688:  }
        !          2689:  *exc = 0;
        !          2690:  return ((Gdome_xml_Document *)self)->vtab->createEntityReference (self, name, exc);
        !          2691: }
        !          2692: /**
        !          2693:  * gdome_doc_createProcessingInstruction:
        !          2694:  * @self:  Document Object ref
        !          2695:  * @target:  The target part of the processing instruction
        !          2696:  * @data:  The data for the node
        !          2697:  * @exc:  Exception Object ref
        !          2698:  *
        !          2699:  * Creates a ProcessingInstruction node given the specified name and data
        !          2700:  * strings.
        !          2701:  * Returns: The new ProcessingInstruction object.
        !          2702:  */
        !          2703: GdomeProcessingInstruction *
        !          2704: gdome_doc_createProcessingInstruction (GdomeDocument *self, GdomeDOMString *target, GdomeDOMString *data, GdomeException *exc)
        !          2705: {
        !          2706:  if (self == NULL) {
        !          2707:    *exc = GDOME_NULL_POINTER_ERR;
        !          2708:    return NULL;
        !          2709:  }
        !          2710:  if (((Gdome_xml_Document *)self)->n == NULL) {
        !          2711:    *exc = GDOME_INVALID_STATE_ERR;
        !          2712:    return NULL;
        !          2713:  }
        !          2714:  *exc = 0;
        !          2715:  return ((Gdome_xml_Document *)self)->vtab->createProcessingInstruction (self, target, data, exc);
        !          2716: }
        !          2717: /**
        !          2718:  * gdome_doc_createTextNode:
        !          2719:  * @self:  Document Object ref
        !          2720:  * @data:  The data for the node
        !          2721:  * @exc:  Exception Object ref
        !          2722:  *
        !          2723:  * Creates a Text node given the specified string.
        !          2724:  * Returns: The new TextNode object.
        !          2725:  */
        !          2726: GdomeText *
        !          2727: gdome_doc_createTextNode (GdomeDocument *self, GdomeDOMString *data, GdomeException *exc)
        !          2728: {
        !          2729:  if (self == NULL) {
        !          2730:    *exc = GDOME_NULL_POINTER_ERR;
        !          2731:    return NULL;
        !          2732:  }
        !          2733:  if (((Gdome_xml_Document *)self)->n == NULL) {
        !          2734:    *exc = GDOME_INVALID_STATE_ERR;
        !          2735:    return NULL;
        !          2736:  }
        !          2737:  *exc = 0;
        !          2738:  return ((Gdome_xml_Document *)self)->vtab->createTextNode (self, data, exc);
        !          2739: }
        !          2740: /**
        !          2741:  * gdome_doc_getElementById:
        !          2742:  * @self:  Document Object ref
        !          2743:  * @elementId:  The unique id value for an element
        !          2744:  * @exc:  Exception Object ref
        !          2745:  *
        !          2746:  * Returns: the Element whose %ID is given by @elementId. If no such element
        !          2747:  * exists, returns %NULL. Behavior is not defined if more than one element has
        !          2748:  * this %ID.
        !          2749:  */
        !          2750: GdomeElement *
        !          2751: gdome_doc_getElementById (GdomeDocument *self, GdomeDOMString *elementId, GdomeException *exc)
        !          2752: {
        !          2753:  if (self == NULL) {
        !          2754:    *exc = GDOME_NULL_POINTER_ERR;
        !          2755:    return NULL;
        !          2756:  }
        !          2757:  if (((Gdome_xml_Document *)self)->n == NULL) {
        !          2758:    *exc = GDOME_INVALID_STATE_ERR;
        !          2759:    return NULL;
        !          2760:  }
        !          2761:  *exc = 0;
        !          2762:  return ((Gdome_xml_Document *)self)->vtab->getElementById (self, elementId, exc);
        !          2763: }
        !          2764: /**
        !          2765:  * gdome_doc_getElementsByTagName:
        !          2766:  * @self:  Document Object ref
        !          2767:  * @tagName:  The name of the tag to match on. The special value * matches
        !          2768:  *            all tags.
        !          2769:  * @exc:  Exception Object ref
        !          2770:  *
        !          2771:  * Returns: a NodeList of all the elements with a given tag name in the order
        !          2772:  * in which they are encountered in a preorder traversal of the Document tree.
        !          2773:  */
        !          2774: GdomeNodeList *
        !          2775: gdome_doc_getElementsByTagName (GdomeDocument *self, GdomeDOMString *tagname, GdomeException *exc)
        !          2776: {
        !          2777:  if (self == NULL) {
        !          2778:    *exc = GDOME_NULL_POINTER_ERR;
        !          2779:    return NULL;
        !          2780:  }
        !          2781:  if (((Gdome_xml_Document *)self)->n == NULL) {
        !          2782:    *exc = GDOME_INVALID_STATE_ERR;
        !          2783:    return NULL;
        !          2784:  }
        !          2785:  *exc = 0;
        !          2786:  return ((Gdome_xml_Document *)self)->vtab->getElementsByTagName (self, tagname, exc);
        !          2787: }
        !          2788: /**
        !          2789:  * gdome_doc_getElementsByTagNameNS:
        !          2790:  * @self:  Document Objects ref
        !          2791:  * @namespaceURI:  The namespace URI of the elements to match on. The special
        !          2792:  *                 value * matches all namespaces.
        !          2793:  * @localName:  The local name of the elements to match on. The special value
        !          2794:  *              * matches all local names.
        !          2795:  * @exc:  Document Object ref
        !          2796:  *
        !          2797:  * Returns: a NodeList of all the descendant elements with a given local name
        !          2798:  * and namespace URI in the order in which they are encountered in a preorder
        !          2799:  * traversal of this Document tree.
        !          2800:  */
        !          2801: GdomeNodeList *
        !          2802: gdome_doc_getElementsByTagNameNS (GdomeDocument *self, GdomeDOMString *namespaceURI, GdomeDOMString *localName, GdomeException *exc)
        !          2803: {
        !          2804:  if (self == NULL) {
        !          2805:    *exc = GDOME_NULL_POINTER_ERR;
        !          2806:    return NULL;
        !          2807:  }
        !          2808:  if (((Gdome_xml_Document *)self)->n == NULL) {
        !          2809:    *exc = GDOME_INVALID_STATE_ERR;
        !          2810:    return NULL;
        !          2811:  }
        !          2812:  *exc = 0;
        !          2813:  return ((Gdome_xml_Document *)self)->vtab->getElementsByTagNameNS (self, namespaceURI, localName, exc);
        !          2814: }
        !          2815: /**
        !          2816:  * gdome_doc_importNode:
        !          2817:  * @self:  Document Objects ref
        !          2818:  * @importedNode:  The node to import.
        !          2819:  * @deep:  If %TRUE, recursively import the subtree under the specified node;
        !          2820:  *         if %FALSE, import only the node itself. This has no effect on Attr,
        !          2821:  *         EntityReference, and Notation nodes.
        !          2822:  * @exc:  Exception Object ref
        !          2823:  *
        !          2824:  *
        !          2825:  * Imports a node from another document to this document. The returned node has
        !          2826:  * no parent; (parentNode is %NULL). The source node is not altered or removed
        !          2827:  * from the original document; this method creates a new copy of the source
        !          2828:  * node. %GDOME_DOCUMENT_NODE, %GDOME_DOCUMENT_TYPE_NODE, %GDOME_NOTATION_NODE
        !          2829:  * and %GDOME_ENTITY_NODE nodes are not supported.
        !          2830:  *
        !          2831:  * %GDOME_NOT_SUPPORTED_ERR: Raised if the type of node being imported is not
        !          2832:  * supported.
        !          2833:  * Returns: the imported node that belongs to this Document.
        !          2834:  */
        !          2835: GdomeNode *
        !          2836: gdome_doc_importNode (GdomeDocument *self, GdomeNode *importedNode, GdomeBoolean deep, GdomeException *exc)
        !          2837: {
        !          2838:  if (self == NULL) {
        !          2839:    *exc = GDOME_NULL_POINTER_ERR;
        !          2840:    return NULL;
        !          2841:  }
        !          2842:  if (((Gdome_xml_Document *)self)->n == NULL) {
        !          2843:    *exc = GDOME_INVALID_STATE_ERR;
        !          2844:    return NULL;
        !          2845:  }
        !          2846:  *exc = 0;
        !          2847:  return ((Gdome_xml_Document *)self)->vtab->importNode (self, importedNode, deep, exc);
        !          2848: }
        !          2849: /**
        !          2850:  * gdome_doc_createEvent:
        !          2851:  * @self:  Document Objects ref
        !          2852:  * @eventType:  The @eventType parameter specifies the type of Event interface
        !          2853:  *              to be created.
        !          2854:  * @exc:  Exception Object ref
        !          2855:  *
        !          2856:  * If the Event interface specified is supported by the implementation this
        !          2857:  * method will return a new Event of the interface type requested. If the Event
        !          2858:  * is to be dispatched via the dispatchEvent method the appropriate event init
        !          2859:  * method must be called after creation in order to initialize the Event's
        !          2860:  * values. As an example, a user wishing to synthesize some kind of
        !          2861:  * MutationEvents would call createEvent with the parameter "MutationEvents".
        !          2862:  * The gdome_mevnt_initMuatationEvent() method could then be called on the
        !          2863:  * newly created MutationEvent to set the specific type of MutationEvent to be
        !          2864:  * dispatched and set its context information.
        !          2865:  *
        !          2866:  * GDOME_NOT_SUPPORTED_ERR: Raised if the implementation does not support the
        !          2867:  * type of Event interface requested
        !          2868:  * Returns: the newly created Event.
        !          2869:  */
        !          2870: GdomeEvent *
        !          2871: gdome_doc_createEvent (GdomeDocument *self, GdomeDOMString *eventType, GdomeException *exc)
        !          2872: {
        !          2873:  if (self == NULL) {
        !          2874:    *exc = GDOME_NULL_POINTER_ERR;
        !          2875:    return NULL;
        !          2876:  }
        !          2877:  if (((Gdome_xml_Document *)self)->n == NULL) {
        !          2878:    *exc = GDOME_INVALID_STATE_ERR;
        !          2879:    return NULL;
        !          2880:  }
        !          2881:  *exc = 0;
        !          2882:  return ((Gdome_xml_Document *)self)->vtab->createEvent (self, eventType, exc);
        !          2883: }
        !          2884: /**
        !          2885:  * gdome_doc_attributes:
        !          2886:  * @self:  Node Object ref
        !          2887:  * @exc:  Exception Object ref
        !          2888:  *
        !          2889:  * Returns: a NamedNodeMap containing the attributes of this node (if it is an
        !          2890:  * Element) or %NULL otherwise.
        !          2891:  */
        !          2892: GdomeNamedNodeMap *
        !          2893: gdome_doc_attributes (GdomeDocument *self, GdomeException *exc)
        !          2894: {
        !          2895:  if (self == NULL) {
        !          2896:    *exc = GDOME_NULL_POINTER_ERR;
        !          2897:    return NULL;
        !          2898:  }
        !          2899:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          2900:    *exc = GDOME_INVALID_STATE_ERR;
        !          2901:    return NULL;
        !          2902:  }
        !          2903:  *exc = 0;
        !          2904:  return ((Gdome_xml_Document *)self)->vtab->super.attributes ((GdomeNode *)self, exc);
        !          2905: }
        !          2906: /**
        !          2907:  * gdome_doc_childNodes:
        !          2908:  * @self:  Node Object ref
        !          2909:  * @exc:  Exception Object ref
        !          2910:  *
        !          2911:  * Returns: a NodeList that contains all children of this node. If there are no
        !          2912:  * children, this is a NodeList containing no nodes.  Note that attributes are
        !          2913:  * not considered to be children of element nodes - use gdome_n_attributes to
        !          2914:  * obtain the attributes.
        !          2915:  */
        !          2916: GdomeNodeList *
        !          2917: gdome_doc_childNodes (GdomeDocument *self, GdomeException *exc)
        !          2918: {
        !          2919:  if (self == NULL) {
        !          2920:    *exc = GDOME_NULL_POINTER_ERR;
        !          2921:    return NULL;
        !          2922:  }
        !          2923:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          2924:    *exc = GDOME_INVALID_STATE_ERR;
        !          2925:    return NULL;
        !          2926:  }
        !          2927:  *exc = 0;
        !          2928:  return ((Gdome_xml_Document *)self)->vtab->super.childNodes ((GdomeNode *)self, exc);
        !          2929: }
        !          2930: /**
        !          2931:  * gdome_doc_firstChild:
        !          2932:  * @self:  Node Object ref
        !          2933:  * @exc:  Exception Object ref
        !          2934:  * 
        !          2935:  * Returns: the first child of this node. If there is no such node,
        !          2936:  * this returns %NULL.
        !          2937:  */
        !          2938: GdomeNode *
        !          2939: gdome_doc_firstChild (GdomeDocument *self, GdomeException *exc)
        !          2940: {
        !          2941:  if (self == NULL) {
        !          2942:    *exc = GDOME_NULL_POINTER_ERR;
        !          2943:    return NULL;
        !          2944:  }
        !          2945:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          2946:    *exc = GDOME_INVALID_STATE_ERR;
        !          2947:    return NULL;
        !          2948:  }
        !          2949:  *exc = 0;
        !          2950:  return ((Gdome_xml_Document *)self)->vtab->super.firstChild ((GdomeNode *)self, exc);
        !          2951: }
        !          2952: /**
        !          2953:  * gdome_doc_lastChild:
        !          2954:  * @self:  Node Object ref
        !          2955:  * @exc:  Exception Object ref
        !          2956:  *
        !          2957:  * Returns: the last child of this node. If there is no such node,
        !          2958:  * this returns %NULL.
        !          2959:  */
        !          2960: GdomeNode *
        !          2961: gdome_doc_lastChild (GdomeDocument *self, GdomeException *exc)
        !          2962: {
        !          2963:  if (self == NULL) {
        !          2964:    *exc = GDOME_NULL_POINTER_ERR;
        !          2965:    return NULL;
        !          2966:  }
        !          2967:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          2968:    *exc = GDOME_INVALID_STATE_ERR;
        !          2969:    return NULL;
        !          2970:  }
        !          2971:  *exc = 0;
        !          2972:  return ((Gdome_xml_Document *)self)->vtab->super.lastChild ((GdomeNode *)self, exc);
        !          2973: }
        !          2974: /**
        !          2975:  * gdome_doc_localName:
        !          2976:  * @self:  Node Objects ref
        !          2977:  * @exc:  Exception Object ref
        !          2978:  *
        !          2979:  * Returns: the local part of the qualified name of this node.
        !          2980:  * For nodes of any type other than %GDOME_ELEMENT_NODE and
        !          2981:  * %GDOME_ATTRIBUTE_NODE and nodes created with a DOM Level 1 method, this is
        !          2982:  * always %NULL.
        !          2983:  */
        !          2984: GdomeDOMString *
        !          2985: gdome_doc_localName (GdomeDocument *self, GdomeException *exc)
        !          2986: {
        !          2987:  if (self == NULL) {
        !          2988:    *exc = GDOME_NULL_POINTER_ERR;
        !          2989:    return NULL;
        !          2990:  }
        !          2991:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          2992:    *exc = GDOME_INVALID_STATE_ERR;
        !          2993:    return NULL;
        !          2994:  }
        !          2995:  *exc = 0;
        !          2996:  return ((Gdome_xml_Document *)self)->vtab->super.localName ((GdomeNode *)self, exc);
        !          2997: }
        !          2998: /**
        !          2999:  * gdome_doc_namespaceURI:
        !          3000:  * @self:  Node Objects ref
        !          3001:  * @exc:  Exception Object ref
        !          3002:  *
        !          3003:  * Returns: the namespace URI of this node, or %NULL if it is unspecified.
        !          3004:  * For nodes of any type other than %GDOME_ELEMENT_NODE and
        !          3005:  * %GDOME_ATTRIBUTE_NODE and nodes created with a DOM Level 1 method, this is
        !          3006:  * always %NULL.
        !          3007:  */
        !          3008: GdomeDOMString *
        !          3009: gdome_doc_namespaceURI (GdomeDocument *self, GdomeException *exc)
        !          3010: {
        !          3011:  if (self == NULL) {
        !          3012:    *exc = GDOME_NULL_POINTER_ERR;
        !          3013:    return NULL;
        !          3014:  }
        !          3015:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          3016:    *exc = GDOME_INVALID_STATE_ERR;
        !          3017:    return NULL;
        !          3018:  }
        !          3019:  *exc = 0;
        !          3020:  return ((Gdome_xml_Document *)self)->vtab->super.namespaceURI ((GdomeNode *)self, exc);
        !          3021: }
        !          3022: /**
        !          3023:  * gdome_doc_nextSibling:
        !          3024:  * @self:  Node Object ref
        !          3025:  * @exc:  Exception Object ref
        !          3026:  *
        !          3027:  * Returns: the node immediately following this node. If there is no such
        !          3028:  * node, this returns %NULL.
        !          3029:  */
        !          3030: GdomeNode *
        !          3031: gdome_doc_nextSibling (GdomeDocument *self, GdomeException *exc)
        !          3032: {
        !          3033:  if (self == NULL) {
        !          3034:    *exc = GDOME_NULL_POINTER_ERR;
        !          3035:    return NULL;
        !          3036:  }
        !          3037:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          3038:    *exc = GDOME_INVALID_STATE_ERR;
        !          3039:    return NULL;
        !          3040:  }
        !          3041:  *exc = 0;
        !          3042:  return ((Gdome_xml_Document *)self)->vtab->super.nextSibling ((GdomeNode *)self, exc);
        !          3043: }
        !          3044: /**
        !          3045:  * gdome_doc_nodeName:
        !          3046:  * @self:  Node Object ref
        !          3047:  * @exc:  Exception Object ref
        !          3048:  *
        !          3049:  * Returns: the name of this node, depending on its type.
        !          3050:  */
        !          3051: GdomeDOMString *
        !          3052: gdome_doc_nodeName (GdomeDocument *self, GdomeException *exc)
        !          3053: {
        !          3054:  if (self == NULL) {
        !          3055:    *exc = GDOME_NULL_POINTER_ERR;
        !          3056:    return NULL;
        !          3057:  }
        !          3058:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          3059:    *exc = GDOME_INVALID_STATE_ERR;
        !          3060:    return NULL;
        !          3061:  }
        !          3062:  *exc = 0;
        !          3063:  return ((Gdome_xml_Document *)self)->vtab->super.nodeName ((GdomeNode *)self, exc);
        !          3064: }
        !          3065: /**
        !          3066:  * gdome_doc_nodeType:
        !          3067:  * @self:  Node Object ref
        !          3068:  * @exc:  Exception Object ref
        !          3069:  *
        !          3070:  * Returns: an integer bigger than %0 representing the type of the underlying
        !          3071:  * object or %0 on error.
        !          3072:  */
        !          3073: unsigned short
        !          3074: gdome_doc_nodeType (GdomeDocument *self, GdomeException *exc)
        !          3075: {
        !          3076:  if (self == NULL) {
        !          3077:    *exc = GDOME_NULL_POINTER_ERR;
        !          3078:    return 0;
        !          3079:  }
        !          3080:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          3081:    *exc = GDOME_INVALID_STATE_ERR;
        !          3082:    return 0;
        !          3083:  }
        !          3084:  *exc = 0;
        !          3085:  return ((Gdome_xml_Document *)self)->vtab->super.nodeType ((GdomeNode *)self, exc);
        !          3086: }
        !          3087: /**
        !          3088:  * gdome_doc_nodeValue:
        !          3089:  * @self:  Node Object ref
        !          3090:  * @exc:  Exception Object ref
        !          3091:  *
        !          3092:  * Returns: the value of this node, depending on its type.
        !          3093:  */
        !          3094: GdomeDOMString *
        !          3095: gdome_doc_nodeValue (GdomeDocument *self, GdomeException *exc)
        !          3096: {
        !          3097:  if (self == NULL) {
        !          3098:    *exc = GDOME_NULL_POINTER_ERR;
        !          3099:    return NULL;
        !          3100:  }
        !          3101:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          3102:    *exc = GDOME_INVALID_STATE_ERR;
        !          3103:    return NULL;
        !          3104:  }
        !          3105:  *exc = 0;
        !          3106:  return ((Gdome_xml_Document *)self)->vtab->super.nodeValue ((GdomeNode *)self, exc);
        !          3107: }
        !          3108: /**
        !          3109:  * gdome_doc_set_nodeValue:
        !          3110:  * @self:  Node Object ref
        !          3111:  * @nodeValue:  The new value for this node.
        !          3112:  * @exc:  Exception Object ref
        !          3113:  *
        !          3114:  * Sets The value of this node, depending on its type.
        !          3115:  *
        !          3116:  * %GDOME_NO_MODIFICATION_ALLOWED_ERR: Raised when the node is readonly.
        !          3117:  */
        !          3118: void
        !          3119: gdome_doc_set_nodeValue (GdomeDocument *self, GdomeDOMString *nodeValue, GdomeException *exc)
        !          3120: {
        !          3121:  if (self == NULL) {
        !          3122:    *exc = GDOME_NULL_POINTER_ERR;
        !          3123:    return;
        !          3124:  }
        !          3125:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          3126:    *exc = GDOME_INVALID_STATE_ERR;
        !          3127:    return;
        !          3128:  }
        !          3129:  *exc = 0;
        !          3130:  ((Gdome_xml_Document *)self)->vtab->super.set_nodeValue ((GdomeNode *)self, nodeValue, exc);
        !          3131: }
        !          3132: /**
        !          3133:  * gdome_doc_ownerDocument:
        !          3134:  * @self:  Node Objects ref
        !          3135:  * @exc:  Exception Object ref
        !          3136:  *
        !          3137:  * Returns: the documment object associated with this node. This is also the
        !          3138:  * Document object used to create new nodes. When this node is a Document or a
        !          3139:  * DocumentType which is not used with any Document yet, this is %NULL.
        !          3140:  */
        !          3141: GdomeDocument *
        !          3142: gdome_doc_ownerDocument (GdomeDocument *self, GdomeException *exc)
        !          3143: {
        !          3144:  if (self == NULL) {
        !          3145:    *exc = GDOME_NULL_POINTER_ERR;
        !          3146:    return NULL;
        !          3147:  }
        !          3148:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          3149:    *exc = GDOME_INVALID_STATE_ERR;
        !          3150:    return NULL;
        !          3151:  }
        !          3152:  *exc = 0;
        !          3153:  return ((Gdome_xml_Document *)self)->vtab->super.ownerDocument ((GdomeNode *)self, exc);
        !          3154: }
        !          3155: /**
        !          3156:  * gdome_doc_parentNode:
        !          3157:  * @self: Node Object ref
        !          3158:  * @exc: Exception Object ref
        !          3159:  *
        !          3160:  * Returns: the parent of this node. All nodes, except Attr,
        !          3161:  * Document, DocumentFragment, Entity, and Notation may have a parent. However,
        !          3162:  * if a node has just been created and not yet added to the tree, or if it has
        !          3163:  * been removed from the tree, this is %NULL.
        !          3164:  */
        !          3165: GdomeNode *
        !          3166: gdome_doc_parentNode (GdomeDocument *self, GdomeException *exc)
        !          3167: {
        !          3168:  if (self == NULL) {
        !          3169:    *exc = GDOME_NULL_POINTER_ERR;
        !          3170:    return NULL;
        !          3171:  }
        !          3172:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          3173:    *exc = GDOME_INVALID_STATE_ERR;
        !          3174:    return NULL;
        !          3175:  }
        !          3176:  *exc = 0;
        !          3177:  return ((Gdome_xml_Document *)self)->vtab->super.parentNode ((GdomeNode *)self, exc);
        !          3178: }
        !          3179: /**
        !          3180:  * gdome_doc_prefix:
        !          3181:  * @self:  Node Objects ref
        !          3182:  * @exc:  Exception Object ref
        !          3183:  *
        !          3184:  * Returns: the namespace prefix of this node, or %NULL if it is unspecified.
        !          3185:  * For nodes of any type other than %GDOME_ELEMENT_NODE and
        !          3186:  * %GDOME_ATTRIBUTE_NODE and nodes created with a DOM Level 1 method, this is
        !          3187:  * always %NULL.
        !          3188:  */
        !          3189: GdomeDOMString *
        !          3190: gdome_doc_prefix (GdomeDocument *self, GdomeException *exc)
        !          3191: {
        !          3192:  if (self == NULL) {
        !          3193:    *exc = GDOME_NULL_POINTER_ERR;
        !          3194:    return NULL;
        !          3195:  }
        !          3196:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          3197:    *exc = GDOME_INVALID_STATE_ERR;
        !          3198:    return NULL;
        !          3199:  }
        !          3200:  *exc = 0;
        !          3201:  return ((Gdome_xml_Document *)self)->vtab->super.prefix ((GdomeNode *)self, exc);
        !          3202: }
        !          3203: /**
        !          3204:  * gdome_doc_set_prefix:
        !          3205:  * @self:  Node Object ref
        !          3206:  * @prefix:  The new prefix for this node.
        !          3207:  * @exc:  Exception Object ref
        !          3208:  *
        !          3209:  * Sets a new nemaspace prefix for this node.
        !          3210:  *
        !          3211:  * %GDOME_NO_MODIFICATION_ALLOWED_ERR: Raised when the node is readonly.
        !          3212:  * %GDOME_NAMESPACE_ERR: Raised if the specified @prefix is malformed per the
        !          3213:  * Namespaces in XML specification, if the namespaceURI of this node is %NULL,
        !          3214:  * if the specified prefix is "xml" and the namespaceURI of this node is
        !          3215:  * different from "http://www.w3.org/XML/1998/namespace", if this node is an
        !          3216:  * attribute and the specified prefix is "xmlns" and the namespaceURI of this
        !          3217:  * node is different from "http://www.w3.org/2000/xmlns/", or if this node is
        !          3218:  * an attribute and the qualifiedName of this node is "xmlns".
        !          3219:  */
        !          3220: void
        !          3221: gdome_doc_set_prefix (GdomeDocument *self, GdomeDOMString *prefix, GdomeException *exc)
        !          3222: {
        !          3223:  if (self == NULL) {
        !          3224:    *exc = GDOME_NULL_POINTER_ERR;
        !          3225:    return;
        !          3226:  }
        !          3227:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          3228:    *exc = GDOME_INVALID_STATE_ERR;
        !          3229:    return;
        !          3230:  }
        !          3231:  *exc = 0;
        !          3232:  ((Gdome_xml_Document *)self)->vtab->super.set_prefix ((GdomeNode *)self, prefix, exc);
        !          3233: }
        !          3234: /**
        !          3235:  * gdome_doc_previousSibling:
        !          3236:  * @self:  Node Object ref
        !          3237:  * @exc:  Exception Object ref
        !          3238:  *
        !          3239:  * Returns: the node immediately preceding this node. If there is no such
        !          3240:  * node, this returns %NULL.
        !          3241:  */
        !          3242: GdomeNode *
        !          3243: gdome_doc_previousSibling (GdomeDocument *self, GdomeException *exc)
        !          3244: {
        !          3245:  if (self == NULL) {
        !          3246:    *exc = GDOME_NULL_POINTER_ERR;
        !          3247:    return NULL;
        !          3248:  }
        !          3249:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          3250:    *exc = GDOME_INVALID_STATE_ERR;
        !          3251:    return NULL;
        !          3252:  }
        !          3253:  *exc = 0;
        !          3254:  return ((Gdome_xml_Document *)self)->vtab->super.previousSibling ((GdomeNode *)self, exc);
        !          3255: }
        !          3256: /**
        !          3257:  * gdome_doc_ref:
        !          3258:  * @self:  Node Object ref
        !          3259:  * @exc:  Exception Object ref
        !          3260:  *
        !          3261:  * Increase the reference count of the specified Node.
        !          3262:  */
        !          3263: void
        !          3264: gdome_doc_ref (GdomeDocument *self, GdomeException *exc)
        !          3265: {
        !          3266:  if (self == NULL) {
        !          3267:    *exc = GDOME_NULL_POINTER_ERR;
        !          3268:    return;
        !          3269:  }
        !          3270:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          3271:    *exc = GDOME_INVALID_STATE_ERR;
        !          3272:    return;
        !          3273:  }
        !          3274:  *exc = 0;
        !          3275:  ((Gdome_xml_Document *)self)->vtab->super.ref ((GdomeNode *)self, exc);
        !          3276: }
        !          3277: /**
        !          3278:  * gdome_doc_unref:
        !          3279:  * @self:  Node Object ref
        !          3280:  * @exc:  Exception Object ref
        !          3281:  *
        !          3282:  * Decrease the reference count of the specified Node. Free the Node structure
        !          3283:  * if the Node will have zero reference.
        !          3284:  */
        !          3285: void
        !          3286: gdome_doc_unref (GdomeDocument *self, GdomeException *exc)
        !          3287: {
        !          3288:  if (self == NULL) {
        !          3289:    *exc = GDOME_NULL_POINTER_ERR;
        !          3290:    return;
        !          3291:  }
        !          3292:  *exc = 0;
        !          3293:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          3294:    if (((Gdome_xml_Node *)self)->refcnt > 0)
        !          3295:      ((Gdome_xml_Node *)self)->refcnt--;
        !          3296: 
        !          3297:    if (((Gdome_xml_Node *)self)->refcnt == 0 && ((Gdome_xml_Node *)self)->ll == NULL) {
        !          3298: #ifdef DEBUG_REFCNT
        !          3299:      gdome_refdbg_delRef ((void *)self, GDOME_REFDBG_NODE);
        !          3300: #endif
        !          3301:      g_free (self);
        !          3302:    }
        !          3303:    return;
        !          3304:  }
        !          3305:  ((Gdome_xml_Document *)self)->vtab->super.unref ((GdomeNode *)self, exc);
        !          3306: }
        !          3307: /**
        !          3308:  * gdome_doc_query_interface:
        !          3309:  * @self:  Node Object ref
        !          3310:  * @interface:  interface needed
        !          3311:  * @exc:  Exception Object ref
        !          3312:  *
        !          3313:  * Returns: a reference to this object that implements the @interface needed,
        !          3314:  *          or %NULL if the @interface is not supported by this Object.
        !          3315:  */
        !          3316: gpointer
        !          3317: gdome_doc_query_interface (GdomeDocument *self, const char *interface, GdomeException *exc)
        !          3318: {
        !          3319:  if (self == NULL) {
        !          3320:    *exc = GDOME_NULL_POINTER_ERR;
        !          3321:    return NULL;
        !          3322:  }
        !          3323:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          3324:    *exc = GDOME_INVALID_STATE_ERR;
        !          3325:    return NULL;
        !          3326:  }
        !          3327:  *exc = 0;
        !          3328:  return ((Gdome_xml_Document *)self)->vtab->super.query_interface ((GdomeNode *)self, interface, exc);
        !          3329: }
        !          3330: /**
        !          3331:  * gdome_doc_appendChild:
        !          3332:  * @self:  Node Object ref
        !          3333:  * @newChild:  The node to add
        !          3334:  * @exc:  Exception Object ref
        !          3335:  *
        !          3336:  * Adds the node @newChild to the end of the list of children of this node.
        !          3337:  * If the @newChild is already in the tree, it is first removed. If it is a
        !          3338:  * DocumentFragment node, the entire contents of the document fragment are
        !          3339:  * moved into the child list of this node
        !          3340:  *
        !          3341:  * %GDOME_HIERARCHY_REQUEST_ERR: Raised if this node is of a type that does not
        !          3342:  * allow children of the type of the @newChild node, or if the node to append is
        !          3343:  * one of this node's ancestors or this node itself.
        !          3344:  * %GDOME_WRONG_DOCUMENT_ERR: Raised if @newChild was created from a different
        !          3345:  * document than the one that created this node.
        !          3346:  * %GDOME_NO_MODIFICATION_ALLOWED_ERR: Raised when the node is readonly.
        !          3347:  * Returns: the node added.
        !          3348:  */
        !          3349: GdomeNode *
        !          3350: gdome_doc_appendChild (GdomeDocument *self, GdomeNode *newChild, GdomeException *exc)
        !          3351: {
        !          3352:  if (self == NULL) {
        !          3353:    *exc = GDOME_NULL_POINTER_ERR;
        !          3354:    return NULL;
        !          3355:  }
        !          3356:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          3357:    *exc = GDOME_INVALID_STATE_ERR;
        !          3358:    return NULL;
        !          3359:  }
        !          3360:  *exc = 0;
        !          3361:  return ((Gdome_xml_Document *)self)->vtab->super.appendChild ((GdomeNode *)self, newChild, exc);
        !          3362: }
        !          3363: /**
        !          3364:  * gdome_doc_cloneNode:
        !          3365:  * @self:  Node Object ref
        !          3366:  * @deep:  If true, recursively clone the subtree under the specified node;
        !          3367:  *         if false, clone only the node itself (and its attributes, if it is
        !          3368:  *         an Element).
        !          3369:  * @exc:  Exception Object ref
        !          3370:  *
        !          3371:  * Makes a duplicate of this node, i.e., serves as a generic copy
        !          3372:  * constructor for nodes. The duplicate node has no parent; (parentNode is
        !          3373:  * %NULL).
        !          3374:  * %GDOME_DOCUMENT_TYPE_NODE, %GDOME_NOTATION_NODE and %GDOME_ENTITY_NODE
        !          3375:  * nodes are not supported.
        !          3376:  *
        !          3377:  * %GDOME_NOT_SUPPORTED_ERR: Raised if the type of node being cloned is not
        !          3378:  * supported.
        !          3379:  * Returns: the duplicate node.
        !          3380:  */
        !          3381: GdomeNode *
        !          3382: gdome_doc_cloneNode (GdomeDocument *self, GdomeBoolean deep, GdomeException *exc)
        !          3383: {
        !          3384:  if (self == NULL) {
        !          3385:    *exc = GDOME_NULL_POINTER_ERR;
        !          3386:    return NULL;
        !          3387:  }
        !          3388:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          3389:    *exc = GDOME_INVALID_STATE_ERR;
        !          3390:    return NULL;
        !          3391:  }
        !          3392:  *exc = 0;
        !          3393:  return ((Gdome_xml_Document *)self)->vtab->super.cloneNode ((GdomeNode *)self, deep, exc);
        !          3394: }
        !          3395: /**
        !          3396:  * gdome_doc_hasAttributes:
        !          3397:  * @self:  Node Object ref
        !          3398:  * @exc:  Exception Object ref
        !          3399:  *
        !          3400:  * Returns: %TRUE if this node has any attributes, %FALSE otherwise.
        !          3401:  */
        !          3402: GdomeBoolean
        !          3403: gdome_doc_hasAttributes (GdomeDocument *self, GdomeException *exc)
        !          3404: {
        !          3405:  if (self == NULL) {
        !          3406:    *exc = GDOME_NULL_POINTER_ERR;
        !          3407:    return FALSE;
        !          3408:  }
        !          3409:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          3410:    *exc = GDOME_INVALID_STATE_ERR;
        !          3411:    return FALSE;
        !          3412:  }
        !          3413:  *exc = 0;
        !          3414:  return ((Gdome_xml_Document *)self)->vtab->super.hasAttributes ((GdomeNode *)self, exc);
        !          3415: }
        !          3416: /**
        !          3417:  * gdome_doc_hasChildNodes:
        !          3418:  * @self:  Node Object ref
        !          3419:  * @exc:  Exception Object ref
        !          3420:  *
        !          3421:  * Returns: %TRUE if this node has any children, %FALSE otherwise.
        !          3422:  */
        !          3423: GdomeBoolean
        !          3424: gdome_doc_hasChildNodes (GdomeDocument *self, GdomeException *exc)
        !          3425: {
        !          3426:  if (self == NULL) {
        !          3427:    *exc = GDOME_NULL_POINTER_ERR;
        !          3428:    return FALSE;
        !          3429:  }
        !          3430:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          3431:    *exc = GDOME_INVALID_STATE_ERR;
        !          3432:    return FALSE;
        !          3433:  }
        !          3434:  *exc = 0;
        !          3435:  return ((Gdome_xml_Document *)self)->vtab->super.hasChildNodes ((GdomeNode *)self, exc);
        !          3436: }
        !          3437: /**
        !          3438:  * gdome_doc_insertBefore:
        !          3439:  * @self:  Node Object ref
        !          3440:  * @newChild:  The new node to put in the child list
        !          3441:  * @refChild:  the reference node, i.e., the node before which the new node
        !          3442:  *             must be inserted.
        !          3443:  * @exc:  Exception Object ref
        !          3444:  *
        !          3445:  * Inserts the node @newChild before the existing child node @refChild. If
        !          3446:  * @refChild is %NULL, insert @newChild at the end of the list of children.
        !          3447:  * If @newChild is a DocumentFragment node, all of its children are inserted,
        !          3448:  * in the same order, before @refChild. If the @newChild is already in the
        !          3449:  * tree, it is first removed.
        !          3450:  *
        !          3451:  * %GDOME_HIERARCHY_REQUEST_ERR: Raised if this node is of a type that does not
        !          3452:  * allow children of the type of the @newChild node, or if the node to insert is
        !          3453:  * one of this node's ancestors or this node itself.
        !          3454:  * %GDOME_WRONG_DOCUMENT_ERR: Raised if @newChild was created from a different
        !          3455:  * document than the one that created this node.
        !          3456:  * %GDOME_NOT_FOUND_ERR: Raised if @refChild is not a child of this node.
        !          3457:  * %GDOME_NO_MODIFICATION_ALLOWED_ERR: Raised when the node is readonly.
        !          3458:  * Returns: the node being inserted.
        !          3459:  */
        !          3460: GdomeNode *
        !          3461: gdome_doc_insertBefore (GdomeDocument *self, GdomeNode *newChild, GdomeNode *refChild, GdomeException *exc)
        !          3462: {
        !          3463:  if (self == NULL) {
        !          3464:    *exc = GDOME_NULL_POINTER_ERR;
        !          3465:    return NULL;
        !          3466:  }
        !          3467:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          3468:    *exc = GDOME_INVALID_STATE_ERR;
        !          3469:    return NULL;
        !          3470:  }
        !          3471:  *exc = 0;
        !          3472:  return ((Gdome_xml_Document *)self)->vtab->super.insertBefore ((GdomeNode *)self, newChild, refChild, exc);
        !          3473: }
        !          3474: /**
        !          3475:  * gdome_doc_isSupported:
        !          3476:  * @self:  Node Object ref
        !          3477:  * @feature:  The name of the feature to test.
        !          3478:  * @version:  This is the version number of the feature to test. In Level 2,
        !          3479:  *            version 1, this is the string "2.0". If the version is not
        !          3480:  *            specified, supporting any version of the feature will cause the
        !          3481:  *            method to return %TRUE.
        !          3482:  * @exc:  Exception Object ref
        !          3483:  *
        !          3484:  * Tests whether the DOM implementation implements a specific feature and that
        !          3485:  * feature is supported by this node.
        !          3486:  * Returns: %TRUE if the specified feature is supported on this node, %FALSE
        !          3487:  * otherwise.
        !          3488:  */
        !          3489: GdomeBoolean
        !          3490: gdome_doc_isSupported (GdomeDocument *self, GdomeDOMString *feature, GdomeDOMString *version, GdomeException *exc)
        !          3491: {
        !          3492:  if (self == NULL) {
        !          3493:    *exc = GDOME_NULL_POINTER_ERR;
        !          3494:    return FALSE;
        !          3495:  }
        !          3496:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          3497:    *exc = GDOME_INVALID_STATE_ERR;
        !          3498:    return FALSE;
        !          3499:  }
        !          3500:  *exc = 0;
        !          3501:  return ((Gdome_xml_Document *)self)->vtab->super.isSupported ((GdomeNode *)self, feature, version, exc);
        !          3502: }
        !          3503: /**
        !          3504:  * gdome_doc_normalize:
        !          3505:  * @self:  Node Object ref
        !          3506:  * @exc:  Exception Object ref
        !          3507:  *
        !          3508:  * Puts all Text nodes in the full depth of the sub-tree underneath this Node,
        !          3509:  * including attribute nodes, into a "normal" form where only structure (e.g.,
        !          3510:  * elements, comments, processing instructions, CDATA sections, and entity
        !          3511:  * references) separates Text nodes, i.e., there are neither adjacent Text
        !          3512:  * nodes nor empty Text nodes.
        !          3513:  */
        !          3514: void
        !          3515: gdome_doc_normalize (GdomeDocument *self, GdomeException *exc)
        !          3516: {
        !          3517:  if (self == NULL) {
        !          3518:    *exc = GDOME_NULL_POINTER_ERR;
        !          3519:    return;
        !          3520:  }
        !          3521:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          3522:    *exc = GDOME_INVALID_STATE_ERR;
        !          3523:    return;
        !          3524:  }
        !          3525:  *exc = 0;
        !          3526:  ((Gdome_xml_Document *)self)->vtab->super.normalize ((GdomeNode *)self, exc);
        !          3527: }
        !          3528: /**
        !          3529:  * gdome_doc_removeChild:
        !          3530:  * @self:  Node Object ref
        !          3531:  * @oldChild:  The node being removed
        !          3532:  * @exc:  Exception Object ref
        !          3533:  *
        !          3534:  * Removes the child node indicated by @oldChild from the list of children, and
        !          3535:  * returns it.
        !          3536:  *
        !          3537:  * %GDOME_NOT_FOUND_ERR: Raised if @oldChild is not a child of this node.
        !          3538:  * %GDOME_NO_MODIFICATION_ALLOWED_ERR: Raised when the node is readonly.
        !          3539:  * Returns: the node removed.
        !          3540:  */
        !          3541: GdomeNode *
        !          3542: gdome_doc_removeChild (GdomeDocument *self, GdomeNode *oldChild, GdomeException *exc)
        !          3543: {
        !          3544:  if (self == NULL) {
        !          3545:    *exc = GDOME_NULL_POINTER_ERR;
        !          3546:    return NULL;
        !          3547:  }
        !          3548:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          3549:    *exc = GDOME_INVALID_STATE_ERR;
        !          3550:    return NULL;
        !          3551:  }
        !          3552:  *exc = 0;
        !          3553:  return ((Gdome_xml_Document *)self)->vtab->super.removeChild ((GdomeNode *)self, oldChild, exc);
        !          3554: }
        !          3555: /**
        !          3556:  * gdome_doc_replaceChild:
        !          3557:  * @self:  Node Object ref
        !          3558:  * @newChild:  The new node to put in the child list
        !          3559:  * @oldChild:  The node being replaced in the list
        !          3560:  * @exc:  Exception Object ref
        !          3561:  *
        !          3562:  * Replaces the child node @oldChild with @newChild in the list of children,
        !          3563:  * and returns the @oldChild node. If @newChild is a DocumentFragment object,
        !          3564:  * @oldChild is replaced by all of the DocumentFragment children, which are
        !          3565:  * inserted in the same order. If the @newChild is already in the tree, it is
        !          3566:  * first removed.
        !          3567:  *
        !          3568:  * %GDOME_HIERARCHY_REQUEST_ERR: Raised if this node is of a type that does
        !          3569:  * not allow children of the type of the @newChild node, or if the node to put
        !          3570:  * in is one of this node's ancestors or this node itself.
        !          3571:  * %GDOME_WRONG_DOCUMENT_ERR: Raised if @newChild was created from a different
        !          3572:  * document than the one that created this node.
        !          3573:  * %GDOME_NOT_FOUND_ERR: Raised if @oldChild is not a child of this node.
        !          3574:  * %GDOME_NO_MODIFICATION_ALLOWED_ERR: Raised when the node is readonly.
        !          3575:  * Returns: the node replaced.
        !          3576:  */
        !          3577: GdomeNode *
        !          3578: gdome_doc_replaceChild (GdomeDocument *self, GdomeNode *newChild, GdomeNode *oldChild, GdomeException *exc)
        !          3579: {
        !          3580:  if (self == NULL) {
        !          3581:    *exc = GDOME_NULL_POINTER_ERR;
        !          3582:    return NULL;
        !          3583:  }
        !          3584:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          3585:    *exc = GDOME_INVALID_STATE_ERR;
        !          3586:    return NULL;
        !          3587:  }
        !          3588:  *exc = 0;
        !          3589:  return ((Gdome_xml_Document *)self)->vtab->super.replaceChild ((GdomeNode *)self, newChild, oldChild, exc);
        !          3590: }
        !          3591: /**
        !          3592:  * gdome_doc_addEventListener:
        !          3593:  * @self:  Node Object ref
        !          3594:  * @type:  the event type for which the user is registering
        !          3595:  * @listener:  the listener parameter takes an interface implemented by the
        !          3596:  *             user which contains the methods to be called when the event occurs.
        !          3597:  * @useCapture:  if %TRUE, useCapture indicates that the user wishes to initiate
        !          3598:  *               capture. After initiating capture, all events of the specified
        !          3599:  *               type will be dispatched to the registered EventListener before
        !          3600:  *               being dispatched to any EventTargets beneath them in the tree.
        !          3601:  *               Events which are bubbling upward through the tree will not
        !          3602:  *               trigger an EventListener designated to use capture.
        !          3603:  * @exc:  Exception Object ref
        !          3604:  *
        !          3605:  * This method allows the registration of event listeners on the event target.
        !          3606:  * If an EventListener is added to an EventTarget while it is processing an
        !          3607:  * event, it will not be triggered by the current actions but may be triggered
        !          3608:  * during a later stage of event flow, such as the bubbling phase.
        !          3609:  * If multiple identical EventListeners are registered on the same EventTarget
        !          3610:  * with the same parameters the duplicate instances are discarded. They do not
        !          3611:  * cause the EventListener to be called twice and since they are discarded
        !          3612:  * they do not need to be removed with the removeEventListener method.
        !          3613:  */
        !          3614: void
        !          3615: gdome_doc_addEventListener (GdomeDocument *self, GdomeDOMString *type, GdomeEventListener *listener, GdomeBoolean useCapture, GdomeException *exc)
        !          3616: {
        !          3617:  if (self == NULL) {
        !          3618:    *exc = GDOME_NULL_POINTER_ERR;
        !          3619:    return;
        !          3620:  }
        !          3621:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          3622:    *exc = GDOME_INVALID_STATE_ERR;
        !          3623:    return;
        !          3624:  }
        !          3625:  *exc = 0;
        !          3626:  ((Gdome_xml_Document *)self)->vtab->super.addEventListener ((GdomeNode *)self, type, listener, useCapture, exc);
        !          3627: }
        !          3628: /**
        !          3629:  * gdome_doc_removeEventListener:
        !          3630:  * @self:  Node Object ref
        !          3631:  * @type:  Specifies the event type of the EventListener being removed.
        !          3632:  * @listener:  The EventListener parameter indicates the EventListener to be
        !          3633:  *             removed.
        !          3634:  * @useCapture:  Specifies whether the EventListener being removed was
        !          3635:  *               registered as a capturing listener or not. If a listener was
        !          3636:  *               registered twice, one with capture and one without, each must
        !          3637:  *               be removed separately. Removal of a capturing listener does
        !          3638:  *               not affect a non-capturing version of the same listener, and
        !          3639:  *               vice versa.
        !          3640:  * @exc:  Exception Object ref
        !          3641:  *
        !          3642:  * This method allows the removal of event listeners from the event target. If
        !          3643:  * an EventListener is removed from an EventTarget while it is processing an
        !          3644:  * event, it will not be triggered by the current actions. EventListeners can
        !          3645:  * never be invoked after being removed. Calling removeEventListener with
        !          3646:  * arguments which do not identify any currently registered EventListener on
        !          3647:  * the EventTarget has no effect.
        !          3648:  */
        !          3649: void
        !          3650: gdome_doc_removeEventListener (GdomeDocument *self, GdomeDOMString *type, GdomeEventListener *listener, GdomeBoolean useCapture, GdomeException *exc)
        !          3651: {
        !          3652:  if (self == NULL) {
        !          3653:    *exc = GDOME_NULL_POINTER_ERR;
        !          3654:    return;
        !          3655:  }
        !          3656:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          3657:    *exc = GDOME_INVALID_STATE_ERR;
        !          3658:    return;
        !          3659:  }
        !          3660:  *exc = 0;
        !          3661:  ((Gdome_xml_Document *)self)->vtab->super.removeEventListener ((GdomeNode *)self, type, listener, useCapture, exc);
        !          3662: }
        !          3663: /**
        !          3664:  * gdome_doc_dispatchEvent:
        !          3665:  * @self:  Node Object ref
        !          3666:  * @evt:  Specifies the event type, behavior, and contextual information to be
        !          3667:  *        used in processing the event.
        !          3668:  * @exc:  Exception Object ref
        !          3669:  *
        !          3670:  * This method allows the dispatch of events into the implementations event
        !          3671:  * model. Events dispatched in this manner will have the same capturing and
        !          3672:  * bubbling behavior as events dispatched directly by the implementation. The
        !          3673:  * target of the event is the EventTarget on which dispatchEvent is called.
        !          3674:  *
        !          3675:  * GDOME_UNSPECIFIED_EVENT_TYPE_ERR: Raised if the Event's type was not
        !          3676:  * specified by initializing the event before dispatchEvent was called.
        !          3677:  * Specification of the Event's type as %NULL or an empty string will also
        !          3678:  * trigger this exception.
        !          3679:  * Returns: if preventDefault was called the value is %FALSE, else the value
        !          3680:  *          is %TRUE.
        !          3681:  */
        !          3682: GdomeBoolean
        !          3683: gdome_doc_dispatchEvent (GdomeDocument *self, GdomeEvent *evt, GdomeException *exc)
        !          3684: {
        !          3685:  if (self == NULL) {
        !          3686:    *exc = GDOME_NULL_POINTER_ERR;
        !          3687:    return FALSE;
        !          3688:  }
        !          3689:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          3690:    *exc = GDOME_INVALID_STATE_ERR;
        !          3691:    return FALSE;
        !          3692:  }
        !          3693:  *exc = 0;
        !          3694:  return ((Gdome_xml_Document *)self)->vtab->super.dispatchEvent ((GdomeNode *)self, evt, exc);
        !          3695: }
        !          3696: /**
        !          3697:  * gdome_doc_subTreeDispatchEvent:
        !          3698:  * @self:  Node Object ref
        !          3699:  * @evt:  Specifies the event type, behavior, and contextual information to be
        !          3700:  *        used in processing the event.
        !          3701:  * @exc:  Exception Object ref
        !          3702:  *
        !          3703:  * This method allows the dispatch of events into the implementations event
        !          3704:  * model. Events dispatched in this manner will have the same capturing and
        !          3705:  * bubbling behavior as events dispatched directly by the implementation. The
        !          3706:  * target of the event is any nodes in the subtree of the EventTarget on which
        !          3707:  * dispatchEvent is called.
        !          3708:  *
        !          3709:  * GDOME_UNSPECIFIED_EVENT_TYPE_ERR: Raised if the Event's type was not
        !          3710:  * specified by initializing the event before dispatchEvent was called.
        !          3711:  * Specification of the Event's type as %NULL or an empty string will also
        !          3712:  * trigger this exception.
        !          3713:  */
        !          3714: void
        !          3715: gdome_doc_subTreeDispatchEvent (GdomeDocument *self, GdomeEvent *evt, GdomeException *exc)
        !          3716: {
        !          3717:  if (self == NULL) {
        !          3718:    *exc = GDOME_NULL_POINTER_ERR;
        !          3719:    return;
        !          3720:  }
        !          3721:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          3722:    *exc = GDOME_INVALID_STATE_ERR;
        !          3723:    return;
        !          3724:  }
        !          3725:  *exc = 0;
        !          3726:  ((Gdome_xml_Document *)self)->vtab->super.subTreeDispatchEvent ((GdomeNode *)self, evt, exc);
        !          3727: }
        !          3728: /**
        !          3729:  * gdome_doc_canAppend:
        !          3730:  * @self:  Node Object ref
        !          3731:  * @newChild:  The Node Object ref of the node to test
        !          3732:  * @exc:  Exception Object ref
        !          3733:  *
        !          3734:  * Tests if a @newChild can be added in the child list of this node.
        !          3735:  * Returns: %TRUE if @newChild can be added, %FALSE otherwise.
        !          3736:  */
        !          3737: GdomeBoolean
        !          3738: gdome_doc_canAppend (GdomeDocument *self, GdomeNode *newChild, GdomeException *exc)
        !          3739: {
        !          3740:  if (self == NULL) {
        !          3741:    *exc = GDOME_NULL_POINTER_ERR;
        !          3742:    return FALSE;
        !          3743:  }
        !          3744:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          3745:    *exc = GDOME_INVALID_STATE_ERR;
        !          3746:    return FALSE;
        !          3747:  }
        !          3748:  *exc = 0;
        !          3749:  return ((Gdome_xml_Document *)self)->vtab->super.canAppend ((GdomeNode *)self, newChild, exc);
        !          3750: }
        !          3751: 
        !          3752: /******************************************************************************
        !          3753:           GdomeCharacterData interface API
        !          3754:  ******************************************************************************/
        !          3755: /**
        !          3756:  * gdome_cd_data:
        !          3757:  * @self:  The CharacterData Object ref
        !          3758:  * @exc:  The Exception Object ref
        !          3759:  *
        !          3760:  * Returns: the character data of the node that implements this interface.
        !          3761:  */
        !          3762: GdomeDOMString *
        !          3763: gdome_cd_data (GdomeCharacterData *self, GdomeException *exc)
        !          3764: {
        !          3765:  if (self == NULL) {
        !          3766:    *exc = GDOME_NULL_POINTER_ERR;
        !          3767:    return NULL;
        !          3768:  }
        !          3769:  if (((Gdome_xml_CharacterData *)self)->n == NULL) {
        !          3770:    *exc = GDOME_INVALID_STATE_ERR;
        !          3771:    return NULL;
        !          3772:  }
        !          3773:  *exc = 0;
        !          3774:  return ((Gdome_xml_CharacterData *)self)->vtab->data (self, exc);
        !          3775: }
        !          3776: /**
        !          3777:  * gdome_cd_set_data:
        !          3778:  * @self:  The CharacterData Object ref
        !          3779:  * @data:  The data value for this node
        !          3780:  * @exc:  The Exception Object ref
        !          3781:  *
        !          3782:  * Sets the data value of this node.
        !          3783:  *
        !          3784:  * %GDOME_NO_MODIFICATION_ALLOWED_ERR: Raised when the node is readonly.
        !          3785:  */
        !          3786: void
        !          3787: gdome_cd_set_data (GdomeCharacterData *self, GdomeDOMString *data, GdomeException *exc)
        !          3788: {
        !          3789:  if (self == NULL) {
        !          3790:    *exc = GDOME_NULL_POINTER_ERR;
        !          3791:    return;
        !          3792:  }
        !          3793:  if (((Gdome_xml_CharacterData *)self)->n == NULL) {
        !          3794:    *exc = GDOME_INVALID_STATE_ERR;
        !          3795:    return;
        !          3796:  }
        !          3797:  *exc = 0;
        !          3798:  ((Gdome_xml_CharacterData *)self)->vtab->set_data (self, data, exc);
        !          3799: }
        !          3800: /**
        !          3801:  * gdome_cd_length:
        !          3802:  * @self:  The CharacterData Object ref
        !          3803:  * @exc:  The GdomeException Object ref
        !          3804:  *
        !          3805:  * Returns: The number of 16-bit units that are available. This may have the
        !          3806:  * value zero, i.e., CharacterData nodes may be empty.
        !          3807:  */
        !          3808: gulong
        !          3809: gdome_cd_length (GdomeCharacterData *self, GdomeException *exc)
        !          3810: {
        !          3811:  if (self == NULL) {
        !          3812:    *exc = GDOME_NULL_POINTER_ERR;
        !          3813:    return 0L;
        !          3814:  }
        !          3815:  if (((Gdome_xml_CharacterData *)self)->n == NULL) {
        !          3816:    *exc = GDOME_INVALID_STATE_ERR;
        !          3817:    return 0L;
        !          3818:  }
        !          3819:  *exc = 0;
        !          3820:  return ((Gdome_xml_CharacterData *)self)->vtab->length (self, exc);
        !          3821: }
        !          3822: /**
        !          3823:  * gdome_cd_appendData:
        !          3824:  * @self:  The CharacterData Object ref
        !          3825:  * @arg:  The string to append
        !          3826:  * @exc:  The Exception Object ref
        !          3827:  *
        !          3828:  * Append the string to the end of the character data of the node. Upon
        !          3829:  * success, data provides access to the concatenation of data and the
        !          3830:  * string specified.
        !          3831:  *
        !          3832:  * %GDOME_NO_MODIFICATION_ALLOWED_ERR: Raised when the node is readonly.
        !          3833:  */
        !          3834: void
        !          3835: gdome_cd_appendData (GdomeCharacterData *self, GdomeDOMString *arg, GdomeException *exc)
        !          3836: {
        !          3837:  if (self == NULL) {
        !          3838:    *exc = GDOME_NULL_POINTER_ERR;
        !          3839:    return;
        !          3840:  }
        !          3841:  if (((Gdome_xml_CharacterData *)self)->n == NULL) {
        !          3842:    *exc = GDOME_INVALID_STATE_ERR;
        !          3843:    return;
        !          3844:  }
        !          3845:  *exc = 0;
        !          3846:  ((Gdome_xml_CharacterData *)self)->vtab->appendData (self, arg, exc);
        !          3847: }
        !          3848: /**
        !          3849:  * gdome_cd_deleteData:
        !          3850:  * @self:  The CharacterData Object ref
        !          3851:  * @offset:  The offset from which to start removing
        !          3852:  * @count:  The number of 16-bit units to delete.
        !          3853:  * @exc:  The Exception Object ref
        !          3854:  *
        !          3855:  * Remove a range of 16-bit units from the node. If the sum of @offset and
        !          3856:  * @count exceeds length then all 16-bit units from @offset to the end of the
        !          3857:  * data are deleted. Upon success, data and length reflect the change.
        !          3858:  *
        !          3859:  * %GDOME_INDEX_SIZE_ERR: Raised if the specified offset is greater than the
        !          3860:  * number of 16-bit units in data.
        !          3861:  * %GDOME_NO_MODIFICATION_ALLOWED_ERR: Raised when the node is readonly.
        !          3862:  */
        !          3863: void
        !          3864: gdome_cd_deleteData (GdomeCharacterData *self, gulong offset, gulong count, GdomeException *exc)
        !          3865: {
        !          3866:  if (self == NULL) {
        !          3867:    *exc = GDOME_NULL_POINTER_ERR;
        !          3868:    return;
        !          3869:  }
        !          3870:  if (((Gdome_xml_CharacterData *)self)->n == NULL) {
        !          3871:    *exc = GDOME_INVALID_STATE_ERR;
        !          3872:    return;
        !          3873:  }
        !          3874:  *exc = 0;
        !          3875:  ((Gdome_xml_CharacterData *)self)->vtab->deleteData (self, offset, count, exc);
        !          3876: }
        !          3877: /**
        !          3878:  * gdome_cd_insertData:
        !          3879:  * @self:  The CharacterData Object ref
        !          3880:  * @offset:  The character offset at which to insert
        !          3881:  * @arg:  The string to insert
        !          3882:  * @exc:  The Exception Object ref
        !          3883:  *
        !          3884:  * Insert a string at the specified 16-bit unit offset.
        !          3885:  *
        !          3886:  * %GDOME_INDEX_SIZE_ERR: Raised if the specified offset is greater than the
        !          3887:  * number of 16-bit units in data.
        !          3888:  * %GDOME_NO_MODIFICATION_ALLOWED_ERR: Raised when the node is readonly.
        !          3889:  */
        !          3890: void
        !          3891: gdome_cd_insertData (GdomeCharacterData *self, gulong offset, GdomeDOMString *arg, GdomeException *exc)
        !          3892: {
        !          3893:  if (self == NULL) {
        !          3894:    *exc = GDOME_NULL_POINTER_ERR;
        !          3895:    return;
        !          3896:  }
        !          3897:  if (((Gdome_xml_CharacterData *)self)->n == NULL) {
        !          3898:    *exc = GDOME_INVALID_STATE_ERR;
        !          3899:    return;
        !          3900:  }
        !          3901:  *exc = 0;
        !          3902:  ((Gdome_xml_CharacterData *)self)->vtab->insertData (self, offset, arg, exc);
        !          3903: }
        !          3904: /**
        !          3905:  * gdome_cd_replaceData:
        !          3906:  * @self:  The CharacterData Object ref
        !          3907:  * @offset:  The offset from which to start replacing
        !          3908:  * @count:  The number of 16-bit units to replace.
        !          3909:  * @arg:  The String with which the range must be replaced
        !          3910:  * @exc:  The GdomeException Object ref
        !          3911:  *
        !          3912:  * Replace the characters starting at the specified 16-bit unit @offset with
        !          3913:  * the specified string. If the sum of @offset and @count exceeds length, then
        !          3914:  * all 16-bit units to the end of the data are replaced;
        !          3915:  *
        !          3916:  * %GDOME_INDEX_SIZE_ERR: Raised if the specified @offset is greater than the
        !          3917:  * number of 16-bit units in data.
        !          3918:  * %GDOME_NO_MODIFICATION_ALLOWED_ERR: Raised when the node is readonly.
        !          3919:  */
        !          3920: void
        !          3921: gdome_cd_replaceData (GdomeCharacterData *self, gulong offset, gulong count, GdomeDOMString *arg, GdomeException *exc)
        !          3922: {
        !          3923:  if (self == NULL) {
        !          3924:    *exc = GDOME_NULL_POINTER_ERR;
        !          3925:    return;
        !          3926:  }
        !          3927:  if (((Gdome_xml_CharacterData *)self)->n == NULL) {
        !          3928:    *exc = GDOME_INVALID_STATE_ERR;
        !          3929:    return;
        !          3930:  }
        !          3931:  *exc = 0;
        !          3932:  ((Gdome_xml_CharacterData *)self)->vtab->replaceData (self, offset, count, arg, exc);
        !          3933: }
        !          3934: /**
        !          3935:  * gdome_cd_substringData:
        !          3936:  * @self:  The CharacterData Object ref
        !          3937:  * @offset:  Start offset of substring to extract
        !          3938:  * @count:  The number of 16-bit units to extract
        !          3939:  * @exc:  The Exception Object ref
        !          3940:  *
        !          3941:  * Extracts a range of data from the node.
        !          3942:  *
        !          3943:  * %GDOME_INDEX_SIZE_ERR: Raised if the specified @offset is greater than the
        !          3944:  * number of 16-bit units in data.
        !          3945:  * Returns: The specified substring. If the sum of @offset and @count exceeds
        !          3946:  * the length, then all 16-bit units to the end of the data are returned.
        !          3947:  */
        !          3948: GdomeDOMString *
        !          3949: gdome_cd_substringData (GdomeCharacterData *self, gulong offset, gulong count, GdomeException *exc)
        !          3950: {
        !          3951:  if (self == NULL) {
        !          3952:    *exc = GDOME_NULL_POINTER_ERR;
        !          3953:    return NULL;
        !          3954:  }
        !          3955:  if (((Gdome_xml_CharacterData *)self)->n == NULL) {
        !          3956:    *exc = GDOME_INVALID_STATE_ERR;
        !          3957:    return NULL;
        !          3958:  }
        !          3959:  *exc = 0;
        !          3960:  return ((Gdome_xml_CharacterData *)self)->vtab->substringData (self, offset, count, exc);
        !          3961: }
        !          3962: /**
        !          3963:  * gdome_cd_attributes:
        !          3964:  * @self:  Node Object ref
        !          3965:  * @exc:  Exception Object ref
        !          3966:  *
        !          3967:  * Returns: a NamedNodeMap containing the attributes of this node (if it is an
        !          3968:  * Element) or %NULL otherwise.
        !          3969:  */
        !          3970: GdomeNamedNodeMap *
        !          3971: gdome_cd_attributes (GdomeCharacterData *self, GdomeException *exc)
        !          3972: {
        !          3973:  if (self == NULL) {
        !          3974:    *exc = GDOME_NULL_POINTER_ERR;
        !          3975:    return NULL;
        !          3976:  }
        !          3977:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          3978:    *exc = GDOME_INVALID_STATE_ERR;
        !          3979:    return NULL;
        !          3980:  }
        !          3981:  *exc = 0;
        !          3982:  return ((Gdome_xml_CharacterData *)self)->vtab->super.attributes ((GdomeNode *)self, exc);
        !          3983: }
        !          3984: /**
        !          3985:  * gdome_cd_childNodes:
        !          3986:  * @self:  Node Object ref
        !          3987:  * @exc:  Exception Object ref
        !          3988:  *
        !          3989:  * Returns: a NodeList that contains all children of this node. If there are no
        !          3990:  * children, this is a NodeList containing no nodes.  Note that attributes are
        !          3991:  * not considered to be children of element nodes - use gdome_n_attributes to
        !          3992:  * obtain the attributes.
        !          3993:  */
        !          3994: GdomeNodeList *
        !          3995: gdome_cd_childNodes (GdomeCharacterData *self, GdomeException *exc)
        !          3996: {
        !          3997:  if (self == NULL) {
        !          3998:    *exc = GDOME_NULL_POINTER_ERR;
        !          3999:    return NULL;
        !          4000:  }
        !          4001:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          4002:    *exc = GDOME_INVALID_STATE_ERR;
        !          4003:    return NULL;
        !          4004:  }
        !          4005:  *exc = 0;
        !          4006:  return ((Gdome_xml_CharacterData *)self)->vtab->super.childNodes ((GdomeNode *)self, exc);
        !          4007: }
        !          4008: /**
        !          4009:  * gdome_cd_firstChild:
        !          4010:  * @self:  Node Object ref
        !          4011:  * @exc:  Exception Object ref
        !          4012:  * 
        !          4013:  * Returns: the first child of this node. If there is no such node,
        !          4014:  * this returns %NULL.
        !          4015:  */
        !          4016: GdomeNode *
        !          4017: gdome_cd_firstChild (GdomeCharacterData *self, GdomeException *exc)
        !          4018: {
        !          4019:  if (self == NULL) {
        !          4020:    *exc = GDOME_NULL_POINTER_ERR;
        !          4021:    return NULL;
        !          4022:  }
        !          4023:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          4024:    *exc = GDOME_INVALID_STATE_ERR;
        !          4025:    return NULL;
        !          4026:  }
        !          4027:  *exc = 0;
        !          4028:  return ((Gdome_xml_CharacterData *)self)->vtab->super.firstChild ((GdomeNode *)self, exc);
        !          4029: }
        !          4030: /**
        !          4031:  * gdome_cd_lastChild:
        !          4032:  * @self:  Node Object ref
        !          4033:  * @exc:  Exception Object ref
        !          4034:  *
        !          4035:  * Returns: the last child of this node. If there is no such node,
        !          4036:  * this returns %NULL.
        !          4037:  */
        !          4038: GdomeNode *
        !          4039: gdome_cd_lastChild (GdomeCharacterData *self, GdomeException *exc)
        !          4040: {
        !          4041:  if (self == NULL) {
        !          4042:    *exc = GDOME_NULL_POINTER_ERR;
        !          4043:    return NULL;
        !          4044:  }
        !          4045:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          4046:    *exc = GDOME_INVALID_STATE_ERR;
        !          4047:    return NULL;
        !          4048:  }
        !          4049:  *exc = 0;
        !          4050:  return ((Gdome_xml_CharacterData *)self)->vtab->super.lastChild ((GdomeNode *)self, exc);
        !          4051: }
        !          4052: /**
        !          4053:  * gdome_cd_localName:
        !          4054:  * @self:  Node Objects ref
        !          4055:  * @exc:  Exception Object ref
        !          4056:  *
        !          4057:  * Returns: the local part of the qualified name of this node.
        !          4058:  * For nodes of any type other than %GDOME_ELEMENT_NODE and
        !          4059:  * %GDOME_ATTRIBUTE_NODE and nodes created with a DOM Level 1 method, this is
        !          4060:  * always %NULL.
        !          4061:  */
        !          4062: GdomeDOMString *
        !          4063: gdome_cd_localName (GdomeCharacterData *self, GdomeException *exc)
        !          4064: {
        !          4065:  if (self == NULL) {
        !          4066:    *exc = GDOME_NULL_POINTER_ERR;
        !          4067:    return NULL;
        !          4068:  }
        !          4069:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          4070:    *exc = GDOME_INVALID_STATE_ERR;
        !          4071:    return NULL;
        !          4072:  }
        !          4073:  *exc = 0;
        !          4074:  return ((Gdome_xml_CharacterData *)self)->vtab->super.localName ((GdomeNode *)self, exc);
        !          4075: }
        !          4076: /**
        !          4077:  * gdome_cd_namespaceURI:
        !          4078:  * @self:  Node Objects ref
        !          4079:  * @exc:  Exception Object ref
        !          4080:  *
        !          4081:  * Returns: the namespace URI of this node, or %NULL if it is unspecified.
        !          4082:  * For nodes of any type other than %GDOME_ELEMENT_NODE and
        !          4083:  * %GDOME_ATTRIBUTE_NODE and nodes created with a DOM Level 1 method, this is
        !          4084:  * always %NULL.
        !          4085:  */
        !          4086: GdomeDOMString *
        !          4087: gdome_cd_namespaceURI (GdomeCharacterData *self, GdomeException *exc)
        !          4088: {
        !          4089:  if (self == NULL) {
        !          4090:    *exc = GDOME_NULL_POINTER_ERR;
        !          4091:    return NULL;
        !          4092:  }
        !          4093:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          4094:    *exc = GDOME_INVALID_STATE_ERR;
        !          4095:    return NULL;
        !          4096:  }
        !          4097:  *exc = 0;
        !          4098:  return ((Gdome_xml_CharacterData *)self)->vtab->super.namespaceURI ((GdomeNode *)self, exc);
        !          4099: }
        !          4100: /**
        !          4101:  * gdome_cd_nextSibling:
        !          4102:  * @self:  Node Object ref
        !          4103:  * @exc:  Exception Object ref
        !          4104:  *
        !          4105:  * Returns: the node immediately following this node. If there is no such
        !          4106:  * node, this returns %NULL.
        !          4107:  */
        !          4108: GdomeNode *
        !          4109: gdome_cd_nextSibling (GdomeCharacterData *self, GdomeException *exc)
        !          4110: {
        !          4111:  if (self == NULL) {
        !          4112:    *exc = GDOME_NULL_POINTER_ERR;
        !          4113:    return NULL;
        !          4114:  }
        !          4115:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          4116:    *exc = GDOME_INVALID_STATE_ERR;
        !          4117:    return NULL;
        !          4118:  }
        !          4119:  *exc = 0;
        !          4120:  return ((Gdome_xml_CharacterData *)self)->vtab->super.nextSibling ((GdomeNode *)self, exc);
        !          4121: }
        !          4122: /**
        !          4123:  * gdome_cd_nodeName:
        !          4124:  * @self:  Node Object ref
        !          4125:  * @exc:  Exception Object ref
        !          4126:  *
        !          4127:  * Returns: the name of this node, depending on its type.
        !          4128:  */
        !          4129: GdomeDOMString *
        !          4130: gdome_cd_nodeName (GdomeCharacterData *self, GdomeException *exc)
        !          4131: {
        !          4132:  if (self == NULL) {
        !          4133:    *exc = GDOME_NULL_POINTER_ERR;
        !          4134:    return NULL;
        !          4135:  }
        !          4136:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          4137:    *exc = GDOME_INVALID_STATE_ERR;
        !          4138:    return NULL;
        !          4139:  }
        !          4140:  *exc = 0;
        !          4141:  return ((Gdome_xml_CharacterData *)self)->vtab->super.nodeName ((GdomeNode *)self, exc);
        !          4142: }
        !          4143: /**
        !          4144:  * gdome_cd_nodeType:
        !          4145:  * @self:  Node Object ref
        !          4146:  * @exc:  Exception Object ref
        !          4147:  *
        !          4148:  * Returns: an integer bigger than %0 representing the type of the underlying
        !          4149:  * object or %0 on error.
        !          4150:  */
        !          4151: unsigned short
        !          4152: gdome_cd_nodeType (GdomeCharacterData *self, GdomeException *exc)
        !          4153: {
        !          4154:  if (self == NULL) {
        !          4155:    *exc = GDOME_NULL_POINTER_ERR;
        !          4156:    return 0;
        !          4157:  }
        !          4158:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          4159:    *exc = GDOME_INVALID_STATE_ERR;
        !          4160:    return 0;
        !          4161:  }
        !          4162:  *exc = 0;
        !          4163:  return ((Gdome_xml_CharacterData *)self)->vtab->super.nodeType ((GdomeNode *)self, exc);
        !          4164: }
        !          4165: /**
        !          4166:  * gdome_cd_nodeValue:
        !          4167:  * @self:  Node Object ref
        !          4168:  * @exc:  Exception Object ref
        !          4169:  *
        !          4170:  * Returns: the value of this node, depending on its type.
        !          4171:  */
        !          4172: GdomeDOMString *
        !          4173: gdome_cd_nodeValue (GdomeCharacterData *self, GdomeException *exc)
        !          4174: {
        !          4175:  if (self == NULL) {
        !          4176:    *exc = GDOME_NULL_POINTER_ERR;
        !          4177:    return NULL;
        !          4178:  }
        !          4179:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          4180:    *exc = GDOME_INVALID_STATE_ERR;
        !          4181:    return NULL;
        !          4182:  }
        !          4183:  *exc = 0;
        !          4184:  return ((Gdome_xml_CharacterData *)self)->vtab->super.nodeValue ((GdomeNode *)self, exc);
        !          4185: }
        !          4186: /**
        !          4187:  * gdome_cd_set_nodeValue:
        !          4188:  * @self:  Node Object ref
        !          4189:  * @nodeValue:  The new value for this node.
        !          4190:  * @exc:  Exception Object ref
        !          4191:  *
        !          4192:  * Sets The value of this node, depending on its type.
        !          4193:  *
        !          4194:  * %GDOME_NO_MODIFICATION_ALLOWED_ERR: Raised when the node is readonly.
        !          4195:  */
        !          4196: void
        !          4197: gdome_cd_set_nodeValue (GdomeCharacterData *self, GdomeDOMString *nodeValue, GdomeException *exc)
        !          4198: {
        !          4199:  if (self == NULL) {
        !          4200:    *exc = GDOME_NULL_POINTER_ERR;
        !          4201:    return;
        !          4202:  }
        !          4203:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          4204:    *exc = GDOME_INVALID_STATE_ERR;
        !          4205:    return;
        !          4206:  }
        !          4207:  *exc = 0;
        !          4208:  ((Gdome_xml_CharacterData *)self)->vtab->super.set_nodeValue ((GdomeNode *)self, nodeValue, exc);
        !          4209: }
        !          4210: /**
        !          4211:  * gdome_cd_ownerDocument:
        !          4212:  * @self:  Node Objects ref
        !          4213:  * @exc:  Exception Object ref
        !          4214:  *
        !          4215:  * Returns: the documment object associated with this node. This is also the
        !          4216:  * Document object used to create new nodes. When this node is a Document or a
        !          4217:  * DocumentType which is not used with any Document yet, this is %NULL.
        !          4218:  */
        !          4219: GdomeDocument *
        !          4220: gdome_cd_ownerDocument (GdomeCharacterData *self, GdomeException *exc)
        !          4221: {
        !          4222:  if (self == NULL) {
        !          4223:    *exc = GDOME_NULL_POINTER_ERR;
        !          4224:    return NULL;
        !          4225:  }
        !          4226:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          4227:    *exc = GDOME_INVALID_STATE_ERR;
        !          4228:    return NULL;
        !          4229:  }
        !          4230:  *exc = 0;
        !          4231:  return ((Gdome_xml_CharacterData *)self)->vtab->super.ownerDocument ((GdomeNode *)self, exc);
        !          4232: }
        !          4233: /**
        !          4234:  * gdome_cd_parentNode:
        !          4235:  * @self: Node Object ref
        !          4236:  * @exc: Exception Object ref
        !          4237:  *
        !          4238:  * Returns: the parent of this node. All nodes, except Attr,
        !          4239:  * Document, DocumentFragment, Entity, and Notation may have a parent. However,
        !          4240:  * if a node has just been created and not yet added to the tree, or if it has
        !          4241:  * been removed from the tree, this is %NULL.
        !          4242:  */
        !          4243: GdomeNode *
        !          4244: gdome_cd_parentNode (GdomeCharacterData *self, GdomeException *exc)
        !          4245: {
        !          4246:  if (self == NULL) {
        !          4247:    *exc = GDOME_NULL_POINTER_ERR;
        !          4248:    return NULL;
        !          4249:  }
        !          4250:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          4251:    *exc = GDOME_INVALID_STATE_ERR;
        !          4252:    return NULL;
        !          4253:  }
        !          4254:  *exc = 0;
        !          4255:  return ((Gdome_xml_CharacterData *)self)->vtab->super.parentNode ((GdomeNode *)self, exc);
        !          4256: }
        !          4257: /**
        !          4258:  * gdome_cd_prefix:
        !          4259:  * @self:  Node Objects ref
        !          4260:  * @exc:  Exception Object ref
        !          4261:  *
        !          4262:  * Returns: the namespace prefix of this node, or %NULL if it is unspecified.
        !          4263:  * For nodes of any type other than %GDOME_ELEMENT_NODE and
        !          4264:  * %GDOME_ATTRIBUTE_NODE and nodes created with a DOM Level 1 method, this is
        !          4265:  * always %NULL.
        !          4266:  */
        !          4267: GdomeDOMString *
        !          4268: gdome_cd_prefix (GdomeCharacterData *self, GdomeException *exc)
        !          4269: {
        !          4270:  if (self == NULL) {
        !          4271:    *exc = GDOME_NULL_POINTER_ERR;
        !          4272:    return NULL;
        !          4273:  }
        !          4274:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          4275:    *exc = GDOME_INVALID_STATE_ERR;
        !          4276:    return NULL;
        !          4277:  }
        !          4278:  *exc = 0;
        !          4279:  return ((Gdome_xml_CharacterData *)self)->vtab->super.prefix ((GdomeNode *)self, exc);
        !          4280: }
        !          4281: /**
        !          4282:  * gdome_cd_set_prefix:
        !          4283:  * @self:  Node Object ref
        !          4284:  * @prefix:  The new prefix for this node.
        !          4285:  * @exc:  Exception Object ref
        !          4286:  *
        !          4287:  * Sets a new nemaspace prefix for this node.
        !          4288:  *
        !          4289:  * %GDOME_NO_MODIFICATION_ALLOWED_ERR: Raised when the node is readonly.
        !          4290:  * %GDOME_NAMESPACE_ERR: Raised if the specified @prefix is malformed per the
        !          4291:  * Namespaces in XML specification, if the namespaceURI of this node is %NULL,
        !          4292:  * if the specified prefix is "xml" and the namespaceURI of this node is
        !          4293:  * different from "http://www.w3.org/XML/1998/namespace", if this node is an
        !          4294:  * attribute and the specified prefix is "xmlns" and the namespaceURI of this
        !          4295:  * node is different from "http://www.w3.org/2000/xmlns/", or if this node is
        !          4296:  * an attribute and the qualifiedName of this node is "xmlns".
        !          4297:  */
        !          4298: void
        !          4299: gdome_cd_set_prefix (GdomeCharacterData *self, GdomeDOMString *prefix, GdomeException *exc)
        !          4300: {
        !          4301:  if (self == NULL) {
        !          4302:    *exc = GDOME_NULL_POINTER_ERR;
        !          4303:    return;
        !          4304:  }
        !          4305:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          4306:    *exc = GDOME_INVALID_STATE_ERR;
        !          4307:    return;
        !          4308:  }
        !          4309:  *exc = 0;
        !          4310:  ((Gdome_xml_CharacterData *)self)->vtab->super.set_prefix ((GdomeNode *)self, prefix, exc);
        !          4311: }
        !          4312: /**
        !          4313:  * gdome_cd_previousSibling:
        !          4314:  * @self:  Node Object ref
        !          4315:  * @exc:  Exception Object ref
        !          4316:  *
        !          4317:  * Returns: the node immediately preceding this node. If there is no such
        !          4318:  * node, this returns %NULL.
        !          4319:  */
        !          4320: GdomeNode *
        !          4321: gdome_cd_previousSibling (GdomeCharacterData *self, GdomeException *exc)
        !          4322: {
        !          4323:  if (self == NULL) {
        !          4324:    *exc = GDOME_NULL_POINTER_ERR;
        !          4325:    return NULL;
        !          4326:  }
        !          4327:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          4328:    *exc = GDOME_INVALID_STATE_ERR;
        !          4329:    return NULL;
        !          4330:  }
        !          4331:  *exc = 0;
        !          4332:  return ((Gdome_xml_CharacterData *)self)->vtab->super.previousSibling ((GdomeNode *)self, exc);
        !          4333: }
        !          4334: /**
        !          4335:  * gdome_cd_ref:
        !          4336:  * @self:  Node Object ref
        !          4337:  * @exc:  Exception Object ref
        !          4338:  *
        !          4339:  * Increase the reference count of the specified Node.
        !          4340:  */
        !          4341: void
        !          4342: gdome_cd_ref (GdomeCharacterData *self, GdomeException *exc)
        !          4343: {
        !          4344:  if (self == NULL) {
        !          4345:    *exc = GDOME_NULL_POINTER_ERR;
        !          4346:    return;
        !          4347:  }
        !          4348:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          4349:    *exc = GDOME_INVALID_STATE_ERR;
        !          4350:    return;
        !          4351:  }
        !          4352:  *exc = 0;
        !          4353:  ((Gdome_xml_CharacterData *)self)->vtab->super.ref ((GdomeNode *)self, exc);
        !          4354: }
        !          4355: /**
        !          4356:  * gdome_cd_unref:
        !          4357:  * @self:  Node Object ref
        !          4358:  * @exc:  Exception Object ref
        !          4359:  *
        !          4360:  * Decrease the reference count of the specified Node. Free the Node structure
        !          4361:  * if the Node will have zero reference.
        !          4362:  */
        !          4363: void
        !          4364: gdome_cd_unref (GdomeCharacterData *self, GdomeException *exc)
        !          4365: {
        !          4366:  if (self == NULL) {
        !          4367:    *exc = GDOME_NULL_POINTER_ERR;
        !          4368:    return;
        !          4369:  }
        !          4370:  *exc = 0;
        !          4371:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          4372:    if (((Gdome_xml_Node *)self)->refcnt > 0)
        !          4373:      ((Gdome_xml_Node *)self)->refcnt--;
        !          4374: 
        !          4375:    if (((Gdome_xml_Node *)self)->refcnt == 0 && ((Gdome_xml_Node *)self)->ll == NULL) {
        !          4376: #ifdef DEBUG_REFCNT
        !          4377:      gdome_refdbg_delRef ((void *)self, GDOME_REFDBG_NODE);
        !          4378: #endif
        !          4379:      g_free (self);
        !          4380:    }
        !          4381:    return;
        !          4382:  }
        !          4383:  ((Gdome_xml_CharacterData *)self)->vtab->super.unref ((GdomeNode *)self, exc);
        !          4384: }
        !          4385: /**
        !          4386:  * gdome_cd_query_interface:
        !          4387:  * @self:  Node Object ref
        !          4388:  * @interface:  interface needed
        !          4389:  * @exc:  Exception Object ref
        !          4390:  *
        !          4391:  * Returns: a reference to this object that implements the @interface needed,
        !          4392:  *          or %NULL if the @interface is not supported by this Object.
        !          4393:  */
        !          4394: gpointer
        !          4395: gdome_cd_query_interface (GdomeCharacterData *self, const char *interface, GdomeException *exc)
        !          4396: {
        !          4397:  if (self == NULL) {
        !          4398:    *exc = GDOME_NULL_POINTER_ERR;
        !          4399:    return NULL;
        !          4400:  }
        !          4401:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          4402:    *exc = GDOME_INVALID_STATE_ERR;
        !          4403:    return NULL;
        !          4404:  }
        !          4405:  *exc = 0;
        !          4406:  return ((Gdome_xml_CharacterData *)self)->vtab->super.query_interface ((GdomeNode *)self, interface, exc);
        !          4407: }
        !          4408: /**
        !          4409:  * gdome_cd_appendChild:
        !          4410:  * @self:  Node Object ref
        !          4411:  * @newChild:  The node to add
        !          4412:  * @exc:  Exception Object ref
        !          4413:  *
        !          4414:  * Adds the node @newChild to the end of the list of children of this node.
        !          4415:  * If the @newChild is already in the tree, it is first removed. If it is a
        !          4416:  * DocumentFragment node, the entire contents of the document fragment are
        !          4417:  * moved into the child list of this node
        !          4418:  *
        !          4419:  * %GDOME_HIERARCHY_REQUEST_ERR: Raised if this node is of a type that does not
        !          4420:  * allow children of the type of the @newChild node, or if the node to append is
        !          4421:  * one of this node's ancestors or this node itself.
        !          4422:  * %GDOME_WRONG_DOCUMENT_ERR: Raised if @newChild was created from a different
        !          4423:  * document than the one that created this node.
        !          4424:  * %GDOME_NO_MODIFICATION_ALLOWED_ERR: Raised when the node is readonly.
        !          4425:  * Returns: the node added.
        !          4426:  */
        !          4427: GdomeNode *
        !          4428: gdome_cd_appendChild (GdomeCharacterData *self, GdomeNode *newChild, GdomeException *exc)
        !          4429: {
        !          4430:  if (self == NULL) {
        !          4431:    *exc = GDOME_NULL_POINTER_ERR;
        !          4432:    return NULL;
        !          4433:  }
        !          4434:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          4435:    *exc = GDOME_INVALID_STATE_ERR;
        !          4436:    return NULL;
        !          4437:  }
        !          4438:  *exc = 0;
        !          4439:  return ((Gdome_xml_CharacterData *)self)->vtab->super.appendChild ((GdomeNode *)self, newChild, exc);
        !          4440: }
        !          4441: /**
        !          4442:  * gdome_cd_cloneNode:
        !          4443:  * @self:  Node Object ref
        !          4444:  * @deep:  If true, recursively clone the subtree under the specified node;
        !          4445:  *         if false, clone only the node itself (and its attributes, if it is
        !          4446:  *         an Element).
        !          4447:  * @exc:  Exception Object ref
        !          4448:  *
        !          4449:  * Makes a duplicate of this node, i.e., serves as a generic copy
        !          4450:  * constructor for nodes. The duplicate node has no parent; (parentNode is
        !          4451:  * %NULL).
        !          4452:  * %GDOME_DOCUMENT_TYPE_NODE, %GDOME_NOTATION_NODE and %GDOME_ENTITY_NODE
        !          4453:  * nodes are not supported.
        !          4454:  *
        !          4455:  * %GDOME_NOT_SUPPORTED_ERR: Raised if the type of node being cloned is not
        !          4456:  * supported.
        !          4457:  * Returns: the duplicate node.
        !          4458:  */
        !          4459: GdomeNode *
        !          4460: gdome_cd_cloneNode (GdomeCharacterData *self, GdomeBoolean deep, GdomeException *exc)
        !          4461: {
        !          4462:  if (self == NULL) {
        !          4463:    *exc = GDOME_NULL_POINTER_ERR;
        !          4464:    return NULL;
        !          4465:  }
        !          4466:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          4467:    *exc = GDOME_INVALID_STATE_ERR;
        !          4468:    return NULL;
        !          4469:  }
        !          4470:  *exc = 0;
        !          4471:  return ((Gdome_xml_CharacterData *)self)->vtab->super.cloneNode ((GdomeNode *)self, deep, exc);
        !          4472: }
        !          4473: /**
        !          4474:  * gdome_cd_hasAttributes:
        !          4475:  * @self:  Node Object ref
        !          4476:  * @exc:  Exception Object ref
        !          4477:  *
        !          4478:  * Returns: %TRUE if this node has any attributes, %FALSE otherwise.
        !          4479:  */
        !          4480: GdomeBoolean
        !          4481: gdome_cd_hasAttributes (GdomeCharacterData *self, GdomeException *exc)
        !          4482: {
        !          4483:  if (self == NULL) {
        !          4484:    *exc = GDOME_NULL_POINTER_ERR;
        !          4485:    return FALSE;
        !          4486:  }
        !          4487:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          4488:    *exc = GDOME_INVALID_STATE_ERR;
        !          4489:    return FALSE;
        !          4490:  }
        !          4491:  *exc = 0;
        !          4492:  return ((Gdome_xml_CharacterData *)self)->vtab->super.hasAttributes ((GdomeNode *)self, exc);
        !          4493: }
        !          4494: /**
        !          4495:  * gdome_cd_hasChildNodes:
        !          4496:  * @self:  Node Object ref
        !          4497:  * @exc:  Exception Object ref
        !          4498:  *
        !          4499:  * Returns: %TRUE if this node has any children, %FALSE otherwise.
        !          4500:  */
        !          4501: GdomeBoolean
        !          4502: gdome_cd_hasChildNodes (GdomeCharacterData *self, GdomeException *exc)
        !          4503: {
        !          4504:  if (self == NULL) {
        !          4505:    *exc = GDOME_NULL_POINTER_ERR;
        !          4506:    return FALSE;
        !          4507:  }
        !          4508:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          4509:    *exc = GDOME_INVALID_STATE_ERR;
        !          4510:    return FALSE;
        !          4511:  }
        !          4512:  *exc = 0;
        !          4513:  return ((Gdome_xml_CharacterData *)self)->vtab->super.hasChildNodes ((GdomeNode *)self, exc);
        !          4514: }
        !          4515: /**
        !          4516:  * gdome_cd_insertBefore:
        !          4517:  * @self:  Node Object ref
        !          4518:  * @newChild:  The new node to put in the child list
        !          4519:  * @refChild:  the reference node, i.e., the node before which the new node
        !          4520:  *             must be inserted.
        !          4521:  * @exc:  Exception Object ref
        !          4522:  *
        !          4523:  * Inserts the node @newChild before the existing child node @refChild. If
        !          4524:  * @refChild is %NULL, insert @newChild at the end of the list of children.
        !          4525:  * If @newChild is a DocumentFragment node, all of its children are inserted,
        !          4526:  * in the same order, before @refChild. If the @newChild is already in the
        !          4527:  * tree, it is first removed.
        !          4528:  *
        !          4529:  * %GDOME_HIERARCHY_REQUEST_ERR: Raised if this node is of a type that does not
        !          4530:  * allow children of the type of the @newChild node, or if the node to insert is
        !          4531:  * one of this node's ancestors or this node itself.
        !          4532:  * %GDOME_WRONG_DOCUMENT_ERR: Raised if @newChild was created from a different
        !          4533:  * document than the one that created this node.
        !          4534:  * %GDOME_NOT_FOUND_ERR: Raised if @refChild is not a child of this node.
        !          4535:  * %GDOME_NO_MODIFICATION_ALLOWED_ERR: Raised when the node is readonly.
        !          4536:  * Returns: the node being inserted.
        !          4537:  */
        !          4538: GdomeNode *
        !          4539: gdome_cd_insertBefore (GdomeCharacterData *self, GdomeNode *newChild, GdomeNode *refChild, GdomeException *exc)
        !          4540: {
        !          4541:  if (self == NULL) {
        !          4542:    *exc = GDOME_NULL_POINTER_ERR;
        !          4543:    return NULL;
        !          4544:  }
        !          4545:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          4546:    *exc = GDOME_INVALID_STATE_ERR;
        !          4547:    return NULL;
        !          4548:  }
        !          4549:  *exc = 0;
        !          4550:  return ((Gdome_xml_CharacterData *)self)->vtab->super.insertBefore ((GdomeNode *)self, newChild, refChild, exc);
        !          4551: }
        !          4552: /**
        !          4553:  * gdome_cd_isSupported:
        !          4554:  * @self:  Node Object ref
        !          4555:  * @feature:  The name of the feature to test.
        !          4556:  * @version:  This is the version number of the feature to test. In Level 2,
        !          4557:  *            version 1, this is the string "2.0". If the version is not
        !          4558:  *            specified, supporting any version of the feature will cause the
        !          4559:  *            method to return %TRUE.
        !          4560:  * @exc:  Exception Object ref
        !          4561:  *
        !          4562:  * Tests whether the DOM implementation implements a specific feature and that
        !          4563:  * feature is supported by this node.
        !          4564:  * Returns: %TRUE if the specified feature is supported on this node, %FALSE
        !          4565:  * otherwise.
        !          4566:  */
        !          4567: GdomeBoolean
        !          4568: gdome_cd_isSupported (GdomeCharacterData *self, GdomeDOMString *feature, GdomeDOMString *version, GdomeException *exc)
        !          4569: {
        !          4570:  if (self == NULL) {
        !          4571:    *exc = GDOME_NULL_POINTER_ERR;
        !          4572:    return FALSE;
        !          4573:  }
        !          4574:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          4575:    *exc = GDOME_INVALID_STATE_ERR;
        !          4576:    return FALSE;
        !          4577:  }
        !          4578:  *exc = 0;
        !          4579:  return ((Gdome_xml_CharacterData *)self)->vtab->super.isSupported ((GdomeNode *)self, feature, version, exc);
        !          4580: }
        !          4581: /**
        !          4582:  * gdome_cd_normalize:
        !          4583:  * @self:  Node Object ref
        !          4584:  * @exc:  Exception Object ref
        !          4585:  *
        !          4586:  * Puts all Text nodes in the full depth of the sub-tree underneath this Node,
        !          4587:  * including attribute nodes, into a "normal" form where only structure (e.g.,
        !          4588:  * elements, comments, processing instructions, CDATA sections, and entity
        !          4589:  * references) separates Text nodes, i.e., there are neither adjacent Text
        !          4590:  * nodes nor empty Text nodes.
        !          4591:  */
        !          4592: void
        !          4593: gdome_cd_normalize (GdomeCharacterData *self, GdomeException *exc)
        !          4594: {
        !          4595:  if (self == NULL) {
        !          4596:    *exc = GDOME_NULL_POINTER_ERR;
        !          4597:    return;
        !          4598:  }
        !          4599:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          4600:    *exc = GDOME_INVALID_STATE_ERR;
        !          4601:    return;
        !          4602:  }
        !          4603:  *exc = 0;
        !          4604:  ((Gdome_xml_CharacterData *)self)->vtab->super.normalize ((GdomeNode *)self, exc);
        !          4605: }
        !          4606: /**
        !          4607:  * gdome_cd_removeChild:
        !          4608:  * @self:  Node Object ref
        !          4609:  * @oldChild:  The node being removed
        !          4610:  * @exc:  Exception Object ref
        !          4611:  *
        !          4612:  * Removes the child node indicated by @oldChild from the list of children, and
        !          4613:  * returns it.
        !          4614:  *
        !          4615:  * %GDOME_NOT_FOUND_ERR: Raised if @oldChild is not a child of this node.
        !          4616:  * %GDOME_NO_MODIFICATION_ALLOWED_ERR: Raised when the node is readonly.
        !          4617:  * Returns: the node removed.
        !          4618:  */
        !          4619: GdomeNode *
        !          4620: gdome_cd_removeChild (GdomeCharacterData *self, GdomeNode *oldChild, GdomeException *exc)
        !          4621: {
        !          4622:  if (self == NULL) {
        !          4623:    *exc = GDOME_NULL_POINTER_ERR;
        !          4624:    return NULL;
        !          4625:  }
        !          4626:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          4627:    *exc = GDOME_INVALID_STATE_ERR;
        !          4628:    return NULL;
        !          4629:  }
        !          4630:  *exc = 0;
        !          4631:  return ((Gdome_xml_CharacterData *)self)->vtab->super.removeChild ((GdomeNode *)self, oldChild, exc);
        !          4632: }
        !          4633: /**
        !          4634:  * gdome_cd_replaceChild:
        !          4635:  * @self:  Node Object ref
        !          4636:  * @newChild:  The new node to put in the child list
        !          4637:  * @oldChild:  The node being replaced in the list
        !          4638:  * @exc:  Exception Object ref
        !          4639:  *
        !          4640:  * Replaces the child node @oldChild with @newChild in the list of children,
        !          4641:  * and returns the @oldChild node. If @newChild is a DocumentFragment object,
        !          4642:  * @oldChild is replaced by all of the DocumentFragment children, which are
        !          4643:  * inserted in the same order. If the @newChild is already in the tree, it is
        !          4644:  * first removed.
        !          4645:  *
        !          4646:  * %GDOME_HIERARCHY_REQUEST_ERR: Raised if this node is of a type that does
        !          4647:  * not allow children of the type of the @newChild node, or if the node to put
        !          4648:  * in is one of this node's ancestors or this node itself.
        !          4649:  * %GDOME_WRONG_DOCUMENT_ERR: Raised if @newChild was created from a different
        !          4650:  * document than the one that created this node.
        !          4651:  * %GDOME_NOT_FOUND_ERR: Raised if @oldChild is not a child of this node.
        !          4652:  * %GDOME_NO_MODIFICATION_ALLOWED_ERR: Raised when the node is readonly.
        !          4653:  * Returns: the node replaced.
        !          4654:  */
        !          4655: GdomeNode *
        !          4656: gdome_cd_replaceChild (GdomeCharacterData *self, GdomeNode *newChild, GdomeNode *oldChild, GdomeException *exc)
        !          4657: {
        !          4658:  if (self == NULL) {
        !          4659:    *exc = GDOME_NULL_POINTER_ERR;
        !          4660:    return NULL;
        !          4661:  }
        !          4662:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          4663:    *exc = GDOME_INVALID_STATE_ERR;
        !          4664:    return NULL;
        !          4665:  }
        !          4666:  *exc = 0;
        !          4667:  return ((Gdome_xml_CharacterData *)self)->vtab->super.replaceChild ((GdomeNode *)self, newChild, oldChild, exc);
        !          4668: }
        !          4669: /**
        !          4670:  * gdome_cd_addEventListener:
        !          4671:  * @self:  Node Object ref
        !          4672:  * @type:  the event type for which the user is registering
        !          4673:  * @listener:  the listener parameter takes an interface implemented by the
        !          4674:  *             user which contains the methods to be called when the event occurs.
        !          4675:  * @useCapture:  if %TRUE, useCapture indicates that the user wishes to initiate
        !          4676:  *               capture. After initiating capture, all events of the specified
        !          4677:  *               type will be dispatched to the registered EventListener before
        !          4678:  *               being dispatched to any EventTargets beneath them in the tree.
        !          4679:  *               Events which are bubbling upward through the tree will not
        !          4680:  *               trigger an EventListener designated to use capture.
        !          4681:  * @exc:  Exception Object ref
        !          4682:  *
        !          4683:  * This method allows the registration of event listeners on the event target.
        !          4684:  * If an EventListener is added to an EventTarget while it is processing an
        !          4685:  * event, it will not be triggered by the current actions but may be triggered
        !          4686:  * during a later stage of event flow, such as the bubbling phase.
        !          4687:  * If multiple identical EventListeners are registered on the same EventTarget
        !          4688:  * with the same parameters the duplicate instances are discarded. They do not
        !          4689:  * cause the EventListener to be called twice and since they are discarded
        !          4690:  * they do not need to be removed with the removeEventListener method.
        !          4691:  */
        !          4692: void
        !          4693: gdome_cd_addEventListener (GdomeCharacterData *self, GdomeDOMString *type, GdomeEventListener *listener, GdomeBoolean useCapture, GdomeException *exc)
        !          4694: {
        !          4695:  if (self == NULL) {
        !          4696:    *exc = GDOME_NULL_POINTER_ERR;
        !          4697:    return;
        !          4698:  }
        !          4699:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          4700:    *exc = GDOME_INVALID_STATE_ERR;
        !          4701:    return;
        !          4702:  }
        !          4703:  *exc = 0;
        !          4704:  ((Gdome_xml_CharacterData *)self)->vtab->super.addEventListener ((GdomeNode *)self, type, listener, useCapture, exc);
        !          4705: }
        !          4706: /**
        !          4707:  * gdome_cd_removeEventListener:
        !          4708:  * @self:  Node Object ref
        !          4709:  * @type:  Specifies the event type of the EventListener being removed.
        !          4710:  * @listener:  The EventListener parameter indicates the EventListener to be
        !          4711:  *             removed.
        !          4712:  * @useCapture:  Specifies whether the EventListener being removed was
        !          4713:  *               registered as a capturing listener or not. If a listener was
        !          4714:  *               registered twice, one with capture and one without, each must
        !          4715:  *               be removed separately. Removal of a capturing listener does
        !          4716:  *               not affect a non-capturing version of the same listener, and
        !          4717:  *               vice versa.
        !          4718:  * @exc:  Exception Object ref
        !          4719:  *
        !          4720:  * This method allows the removal of event listeners from the event target. If
        !          4721:  * an EventListener is removed from an EventTarget while it is processing an
        !          4722:  * event, it will not be triggered by the current actions. EventListeners can
        !          4723:  * never be invoked after being removed. Calling removeEventListener with
        !          4724:  * arguments which do not identify any currently registered EventListener on
        !          4725:  * the EventTarget has no effect.
        !          4726:  */
        !          4727: void
        !          4728: gdome_cd_removeEventListener (GdomeCharacterData *self, GdomeDOMString *type, GdomeEventListener *listener, GdomeBoolean useCapture, GdomeException *exc)
        !          4729: {
        !          4730:  if (self == NULL) {
        !          4731:    *exc = GDOME_NULL_POINTER_ERR;
        !          4732:    return;
        !          4733:  }
        !          4734:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          4735:    *exc = GDOME_INVALID_STATE_ERR;
        !          4736:    return;
        !          4737:  }
        !          4738:  *exc = 0;
        !          4739:  ((Gdome_xml_CharacterData *)self)->vtab->super.removeEventListener ((GdomeNode *)self, type, listener, useCapture, exc);
        !          4740: }
        !          4741: /**
        !          4742:  * gdome_cd_dispatchEvent:
        !          4743:  * @self:  Node Object ref
        !          4744:  * @evt:  Specifies the event type, behavior, and contextual information to be
        !          4745:  *        used in processing the event.
        !          4746:  * @exc:  Exception Object ref
        !          4747:  *
        !          4748:  * This method allows the dispatch of events into the implementations event
        !          4749:  * model. Events dispatched in this manner will have the same capturing and
        !          4750:  * bubbling behavior as events dispatched directly by the implementation. The
        !          4751:  * target of the event is the EventTarget on which dispatchEvent is called.
        !          4752:  *
        !          4753:  * GDOME_UNSPECIFIED_EVENT_TYPE_ERR: Raised if the Event's type was not
        !          4754:  * specified by initializing the event before dispatchEvent was called.
        !          4755:  * Specification of the Event's type as %NULL or an empty string will also
        !          4756:  * trigger this exception.
        !          4757:  * Returns: if preventDefault was called the value is %FALSE, else the value
        !          4758:  *          is %TRUE.
        !          4759:  */
        !          4760: GdomeBoolean
        !          4761: gdome_cd_dispatchEvent (GdomeCharacterData *self, GdomeEvent *evt, GdomeException *exc)
        !          4762: {
        !          4763:  if (self == NULL) {
        !          4764:    *exc = GDOME_NULL_POINTER_ERR;
        !          4765:    return FALSE;
        !          4766:  }
        !          4767:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          4768:    *exc = GDOME_INVALID_STATE_ERR;
        !          4769:    return FALSE;
        !          4770:  }
        !          4771:  *exc = 0;
        !          4772:  return ((Gdome_xml_CharacterData *)self)->vtab->super.dispatchEvent ((GdomeNode *)self, evt, exc);
        !          4773: }
        !          4774: /**
        !          4775:  * gdome_cd_subTreeDispatchEvent:
        !          4776:  * @self:  Node Object ref
        !          4777:  * @evt:  Specifies the event type, behavior, and contextual information to be
        !          4778:  *        used in processing the event.
        !          4779:  * @exc:  Exception Object ref
        !          4780:  *
        !          4781:  * This method allows the dispatch of events into the implementations event
        !          4782:  * model. Events dispatched in this manner will have the same capturing and
        !          4783:  * bubbling behavior as events dispatched directly by the implementation. The
        !          4784:  * target of the event is any nodes in the subtree of the EventTarget on which
        !          4785:  * dispatchEvent is called.
        !          4786:  *
        !          4787:  * GDOME_UNSPECIFIED_EVENT_TYPE_ERR: Raised if the Event's type was not
        !          4788:  * specified by initializing the event before dispatchEvent was called.
        !          4789:  * Specification of the Event's type as %NULL or an empty string will also
        !          4790:  * trigger this exception.
        !          4791:  */
        !          4792: void
        !          4793: gdome_cd_subTreeDispatchEvent (GdomeCharacterData *self, GdomeEvent *evt, GdomeException *exc)
        !          4794: {
        !          4795:  if (self == NULL) {
        !          4796:    *exc = GDOME_NULL_POINTER_ERR;
        !          4797:    return;
        !          4798:  }
        !          4799:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          4800:    *exc = GDOME_INVALID_STATE_ERR;
        !          4801:    return;
        !          4802:  }
        !          4803:  *exc = 0;
        !          4804:  ((Gdome_xml_CharacterData *)self)->vtab->super.subTreeDispatchEvent ((GdomeNode *)self, evt, exc);
        !          4805: }
        !          4806: /**
        !          4807:  * gdome_cd_canAppend:
        !          4808:  * @self:  Node Object ref
        !          4809:  * @newChild:  The Node Object ref of the node to test
        !          4810:  * @exc:  Exception Object ref
        !          4811:  *
        !          4812:  * Tests if a @newChild can be added in the child list of this node.
        !          4813:  * Returns: %TRUE if @newChild can be added, %FALSE otherwise.
        !          4814:  */
        !          4815: GdomeBoolean
        !          4816: gdome_cd_canAppend (GdomeCharacterData *self, GdomeNode *newChild, GdomeException *exc)
        !          4817: {
        !          4818:  if (self == NULL) {
        !          4819:    *exc = GDOME_NULL_POINTER_ERR;
        !          4820:    return FALSE;
        !          4821:  }
        !          4822:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          4823:    *exc = GDOME_INVALID_STATE_ERR;
        !          4824:    return FALSE;
        !          4825:  }
        !          4826:  *exc = 0;
        !          4827:  return ((Gdome_xml_CharacterData *)self)->vtab->super.canAppend ((GdomeNode *)self, newChild, exc);
        !          4828: }
        !          4829: 
        !          4830: /******************************************************************************
        !          4831:           GdomeText interface API
        !          4832:  ******************************************************************************/
        !          4833: /**
        !          4834:  * gdome_t_splitText:
        !          4835:  * @self:  The Text Object ref
        !          4836:  * @offset: The 16-bit unit offset at which to split, starting from 0
        !          4837:  * @exc:  The GdomeException Object ref
        !          4838:  *
        !          4839:  * Breaks this node into two nodes at the specified @offset, keeping both in
        !          4840:  * the tree as siblings. After being split, this node will contain all the
        !          4841:  * content up to the @offset point. A new node of the same type, which contains
        !          4842:  * all the content at and after the @offset point, is returned. If the original
        !          4843:  * node had a parent node, the new node is inserted as the next sibling of the
        !          4844:  * original node. When the @offset is equal to the length of this node, the new
        !          4845:  * node has no data.
        !          4846:  *
        !          4847:  * %GDOME_INDEX_SIZE_ERR: Raised if the specified @offset is greater than the
        !          4848:  * number of 16-bit units in data.
        !          4849:  * %GDOME_NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly.
        !          4850:  * Returns: the new node, of the same type as this node.
        !          4851:  */
        !          4852: GdomeText *
        !          4853: gdome_t_splitText (GdomeText *self, gulong offset, GdomeException *exc)
        !          4854: {
        !          4855:  if (self == NULL) {
        !          4856:    *exc = GDOME_NULL_POINTER_ERR;
        !          4857:    return NULL;
        !          4858:  }
        !          4859:  if (((Gdome_xml_Text *)self)->n == NULL) {
        !          4860:    *exc = GDOME_INVALID_STATE_ERR;
        !          4861:    return NULL;
        !          4862:  }
        !          4863:  *exc = 0;
        !          4864:  return ((Gdome_xml_Text *)self)->vtab->splitText (self, offset, exc);
        !          4865: }
        !          4866: /**
        !          4867:  * gdome_t_data:
        !          4868:  * @self:  The CharacterData Object ref
        !          4869:  * @exc:  The Exception Object ref
        !          4870:  *
        !          4871:  * Returns: the character data of the node that implements this interface.
        !          4872:  */
        !          4873: GdomeDOMString *
        !          4874: gdome_t_data (GdomeText *self, GdomeException *exc)
        !          4875: {
        !          4876:  if (self == NULL) {
        !          4877:    *exc = GDOME_NULL_POINTER_ERR;
        !          4878:    return NULL;
        !          4879:  }
        !          4880:  if (((Gdome_xml_CharacterData *)self)->n == NULL) {
        !          4881:    *exc = GDOME_INVALID_STATE_ERR;
        !          4882:    return NULL;
        !          4883:  }
        !          4884:  *exc = 0;
        !          4885:  return ((Gdome_xml_Text *)self)->vtab->super.data ((GdomeCharacterData *)self, exc);
        !          4886: }
        !          4887: /**
        !          4888:  * gdome_t_set_data:
        !          4889:  * @self:  The CharacterData Object ref
        !          4890:  * @data:  The data value for this node
        !          4891:  * @exc:  The Exception Object ref
        !          4892:  *
        !          4893:  * Sets the data value of this node.
        !          4894:  *
        !          4895:  * %GDOME_NO_MODIFICATION_ALLOWED_ERR: Raised when the node is readonly.
        !          4896:  */
        !          4897: void
        !          4898: gdome_t_set_data (GdomeText *self, GdomeDOMString *data, GdomeException *exc)
        !          4899: {
        !          4900:  if (self == NULL) {
        !          4901:    *exc = GDOME_NULL_POINTER_ERR;
        !          4902:    return;
        !          4903:  }
        !          4904:  if (((Gdome_xml_CharacterData *)self)->n == NULL) {
        !          4905:    *exc = GDOME_INVALID_STATE_ERR;
        !          4906:    return;
        !          4907:  }
        !          4908:  *exc = 0;
        !          4909:  ((Gdome_xml_Text *)self)->vtab->super.set_data ((GdomeCharacterData *)self, data, exc);
        !          4910: }
        !          4911: /**
        !          4912:  * gdome_t_length:
        !          4913:  * @self:  The CharacterData Object ref
        !          4914:  * @exc:  The GdomeException Object ref
        !          4915:  *
        !          4916:  * Returns: The number of 16-bit units that are available. This may have the
        !          4917:  * value zero, i.e., CharacterData nodes may be empty.
        !          4918:  */
        !          4919: gulong
        !          4920: gdome_t_length (GdomeText *self, GdomeException *exc)
        !          4921: {
        !          4922:  if (self == NULL) {
        !          4923:    *exc = GDOME_NULL_POINTER_ERR;
        !          4924:    return 0L;
        !          4925:  }
        !          4926:  if (((Gdome_xml_CharacterData *)self)->n == NULL) {
        !          4927:    *exc = GDOME_INVALID_STATE_ERR;
        !          4928:    return 0L;
        !          4929:  }
        !          4930:  *exc = 0;
        !          4931:  return ((Gdome_xml_Text *)self)->vtab->super.length ((GdomeCharacterData *)self, exc);
        !          4932: }
        !          4933: /**
        !          4934:  * gdome_t_appendData:
        !          4935:  * @self:  The CharacterData Object ref
        !          4936:  * @arg:  The string to append
        !          4937:  * @exc:  The Exception Object ref
        !          4938:  *
        !          4939:  * Append the string to the end of the character data of the node. Upon
        !          4940:  * success, data provides access to the concatenation of data and the
        !          4941:  * string specified.
        !          4942:  *
        !          4943:  * %GDOME_NO_MODIFICATION_ALLOWED_ERR: Raised when the node is readonly.
        !          4944:  */
        !          4945: void
        !          4946: gdome_t_appendData (GdomeText *self, GdomeDOMString *arg, GdomeException *exc)
        !          4947: {
        !          4948:  if (self == NULL) {
        !          4949:    *exc = GDOME_NULL_POINTER_ERR;
        !          4950:    return;
        !          4951:  }
        !          4952:  if (((Gdome_xml_CharacterData *)self)->n == NULL) {
        !          4953:    *exc = GDOME_INVALID_STATE_ERR;
        !          4954:    return;
        !          4955:  }
        !          4956:  *exc = 0;
        !          4957:  ((Gdome_xml_Text *)self)->vtab->super.appendData ((GdomeCharacterData *)self, arg, exc);
        !          4958: }
        !          4959: /**
        !          4960:  * gdome_t_deleteData:
        !          4961:  * @self:  The CharacterData Object ref
        !          4962:  * @offset:  The offset from which to start removing
        !          4963:  * @count:  The number of 16-bit units to delete.
        !          4964:  * @exc:  The Exception Object ref
        !          4965:  *
        !          4966:  * Remove a range of 16-bit units from the node. If the sum of @offset and
        !          4967:  * @count exceeds length then all 16-bit units from @offset to the end of the
        !          4968:  * data are deleted. Upon success, data and length reflect the change.
        !          4969:  *
        !          4970:  * %GDOME_INDEX_SIZE_ERR: Raised if the specified offset is greater than the
        !          4971:  * number of 16-bit units in data.
        !          4972:  * %GDOME_NO_MODIFICATION_ALLOWED_ERR: Raised when the node is readonly.
        !          4973:  */
        !          4974: void
        !          4975: gdome_t_deleteData (GdomeText *self, gulong offset, gulong count, GdomeException *exc)
        !          4976: {
        !          4977:  if (self == NULL) {
        !          4978:    *exc = GDOME_NULL_POINTER_ERR;
        !          4979:    return;
        !          4980:  }
        !          4981:  if (((Gdome_xml_CharacterData *)self)->n == NULL) {
        !          4982:    *exc = GDOME_INVALID_STATE_ERR;
        !          4983:    return;
        !          4984:  }
        !          4985:  *exc = 0;
        !          4986:  ((Gdome_xml_Text *)self)->vtab->super.deleteData ((GdomeCharacterData *)self, offset, count, exc);
        !          4987: }
        !          4988: /**
        !          4989:  * gdome_t_insertData:
        !          4990:  * @self:  The CharacterData Object ref
        !          4991:  * @offset:  The character offset at which to insert
        !          4992:  * @arg:  The string to insert
        !          4993:  * @exc:  The Exception Object ref
        !          4994:  *
        !          4995:  * Insert a string at the specified 16-bit unit offset.
        !          4996:  *
        !          4997:  * %GDOME_INDEX_SIZE_ERR: Raised if the specified offset is greater than the
        !          4998:  * number of 16-bit units in data.
        !          4999:  * %GDOME_NO_MODIFICATION_ALLOWED_ERR: Raised when the node is readonly.
        !          5000:  */
        !          5001: void
        !          5002: gdome_t_insertData (GdomeText *self, gulong offset, GdomeDOMString *arg, GdomeException *exc)
        !          5003: {
        !          5004:  if (self == NULL) {
        !          5005:    *exc = GDOME_NULL_POINTER_ERR;
        !          5006:    return;
        !          5007:  }
        !          5008:  if (((Gdome_xml_CharacterData *)self)->n == NULL) {
        !          5009:    *exc = GDOME_INVALID_STATE_ERR;
        !          5010:    return;
        !          5011:  }
        !          5012:  *exc = 0;
        !          5013:  ((Gdome_xml_Text *)self)->vtab->super.insertData ((GdomeCharacterData *)self, offset, arg, exc);
        !          5014: }
        !          5015: /**
        !          5016:  * gdome_t_replaceData:
        !          5017:  * @self:  The CharacterData Object ref
        !          5018:  * @offset:  The offset from which to start replacing
        !          5019:  * @count:  The number of 16-bit units to replace.
        !          5020:  * @arg:  The String with which the range must be replaced
        !          5021:  * @exc:  The GdomeException Object ref
        !          5022:  *
        !          5023:  * Replace the characters starting at the specified 16-bit unit @offset with
        !          5024:  * the specified string. If the sum of @offset and @count exceeds length, then
        !          5025:  * all 16-bit units to the end of the data are replaced;
        !          5026:  *
        !          5027:  * %GDOME_INDEX_SIZE_ERR: Raised if the specified @offset is greater than the
        !          5028:  * number of 16-bit units in data.
        !          5029:  * %GDOME_NO_MODIFICATION_ALLOWED_ERR: Raised when the node is readonly.
        !          5030:  */
        !          5031: void
        !          5032: gdome_t_replaceData (GdomeText *self, gulong offset, gulong count, GdomeDOMString *arg, GdomeException *exc)
        !          5033: {
        !          5034:  if (self == NULL) {
        !          5035:    *exc = GDOME_NULL_POINTER_ERR;
        !          5036:    return;
        !          5037:  }
        !          5038:  if (((Gdome_xml_CharacterData *)self)->n == NULL) {
        !          5039:    *exc = GDOME_INVALID_STATE_ERR;
        !          5040:    return;
        !          5041:  }
        !          5042:  *exc = 0;
        !          5043:  ((Gdome_xml_Text *)self)->vtab->super.replaceData ((GdomeCharacterData *)self, offset, count, arg, exc);
        !          5044: }
        !          5045: /**
        !          5046:  * gdome_t_substringData:
        !          5047:  * @self:  The CharacterData Object ref
        !          5048:  * @offset:  Start offset of substring to extract
        !          5049:  * @count:  The number of 16-bit units to extract
        !          5050:  * @exc:  The Exception Object ref
        !          5051:  *
        !          5052:  * Extracts a range of data from the node.
        !          5053:  *
        !          5054:  * %GDOME_INDEX_SIZE_ERR: Raised if the specified @offset is greater than the
        !          5055:  * number of 16-bit units in data.
        !          5056:  * Returns: The specified substring. If the sum of @offset and @count exceeds
        !          5057:  * the length, then all 16-bit units to the end of the data are returned.
        !          5058:  */
        !          5059: GdomeDOMString *
        !          5060: gdome_t_substringData (GdomeText *self, gulong offset, gulong count, GdomeException *exc)
        !          5061: {
        !          5062:  if (self == NULL) {
        !          5063:    *exc = GDOME_NULL_POINTER_ERR;
        !          5064:    return NULL;
        !          5065:  }
        !          5066:  if (((Gdome_xml_CharacterData *)self)->n == NULL) {
        !          5067:    *exc = GDOME_INVALID_STATE_ERR;
        !          5068:    return NULL;
        !          5069:  }
        !          5070:  *exc = 0;
        !          5071:  return ((Gdome_xml_Text *)self)->vtab->super.substringData ((GdomeCharacterData *)self, offset, count, exc);
        !          5072: }
        !          5073: /**
        !          5074:  * gdome_t_attributes:
        !          5075:  * @self:  Node Object ref
        !          5076:  * @exc:  Exception Object ref
        !          5077:  *
        !          5078:  * Returns: a NamedNodeMap containing the attributes of this node (if it is an
        !          5079:  * Element) or %NULL otherwise.
        !          5080:  */
        !          5081: GdomeNamedNodeMap *
        !          5082: gdome_t_attributes (GdomeText *self, GdomeException *exc)
        !          5083: {
        !          5084:  if (self == NULL) {
        !          5085:    *exc = GDOME_NULL_POINTER_ERR;
        !          5086:    return NULL;
        !          5087:  }
        !          5088:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          5089:    *exc = GDOME_INVALID_STATE_ERR;
        !          5090:    return NULL;
        !          5091:  }
        !          5092:  *exc = 0;
        !          5093:  return ((Gdome_xml_Text *)self)->vtab->super.super.attributes ((GdomeNode *)self, exc);
        !          5094: }
        !          5095: /**
        !          5096:  * gdome_t_childNodes:
        !          5097:  * @self:  Node Object ref
        !          5098:  * @exc:  Exception Object ref
        !          5099:  *
        !          5100:  * Returns: a NodeList that contains all children of this node. If there are no
        !          5101:  * children, this is a NodeList containing no nodes.  Note that attributes are
        !          5102:  * not considered to be children of element nodes - use gdome_n_attributes to
        !          5103:  * obtain the attributes.
        !          5104:  */
        !          5105: GdomeNodeList *
        !          5106: gdome_t_childNodes (GdomeText *self, GdomeException *exc)
        !          5107: {
        !          5108:  if (self == NULL) {
        !          5109:    *exc = GDOME_NULL_POINTER_ERR;
        !          5110:    return NULL;
        !          5111:  }
        !          5112:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          5113:    *exc = GDOME_INVALID_STATE_ERR;
        !          5114:    return NULL;
        !          5115:  }
        !          5116:  *exc = 0;
        !          5117:  return ((Gdome_xml_Text *)self)->vtab->super.super.childNodes ((GdomeNode *)self, exc);
        !          5118: }
        !          5119: /**
        !          5120:  * gdome_t_firstChild:
        !          5121:  * @self:  Node Object ref
        !          5122:  * @exc:  Exception Object ref
        !          5123:  * 
        !          5124:  * Returns: the first child of this node. If there is no such node,
        !          5125:  * this returns %NULL.
        !          5126:  */
        !          5127: GdomeNode *
        !          5128: gdome_t_firstChild (GdomeText *self, GdomeException *exc)
        !          5129: {
        !          5130:  if (self == NULL) {
        !          5131:    *exc = GDOME_NULL_POINTER_ERR;
        !          5132:    return NULL;
        !          5133:  }
        !          5134:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          5135:    *exc = GDOME_INVALID_STATE_ERR;
        !          5136:    return NULL;
        !          5137:  }
        !          5138:  *exc = 0;
        !          5139:  return ((Gdome_xml_Text *)self)->vtab->super.super.firstChild ((GdomeNode *)self, exc);
        !          5140: }
        !          5141: /**
        !          5142:  * gdome_t_lastChild:
        !          5143:  * @self:  Node Object ref
        !          5144:  * @exc:  Exception Object ref
        !          5145:  *
        !          5146:  * Returns: the last child of this node. If there is no such node,
        !          5147:  * this returns %NULL.
        !          5148:  */
        !          5149: GdomeNode *
        !          5150: gdome_t_lastChild (GdomeText *self, GdomeException *exc)
        !          5151: {
        !          5152:  if (self == NULL) {
        !          5153:    *exc = GDOME_NULL_POINTER_ERR;
        !          5154:    return NULL;
        !          5155:  }
        !          5156:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          5157:    *exc = GDOME_INVALID_STATE_ERR;
        !          5158:    return NULL;
        !          5159:  }
        !          5160:  *exc = 0;
        !          5161:  return ((Gdome_xml_Text *)self)->vtab->super.super.lastChild ((GdomeNode *)self, exc);
        !          5162: }
        !          5163: /**
        !          5164:  * gdome_t_localName:
        !          5165:  * @self:  Node Objects ref
        !          5166:  * @exc:  Exception Object ref
        !          5167:  *
        !          5168:  * Returns: the local part of the qualified name of this node.
        !          5169:  * For nodes of any type other than %GDOME_ELEMENT_NODE and
        !          5170:  * %GDOME_ATTRIBUTE_NODE and nodes created with a DOM Level 1 method, this is
        !          5171:  * always %NULL.
        !          5172:  */
        !          5173: GdomeDOMString *
        !          5174: gdome_t_localName (GdomeText *self, GdomeException *exc)
        !          5175: {
        !          5176:  if (self == NULL) {
        !          5177:    *exc = GDOME_NULL_POINTER_ERR;
        !          5178:    return NULL;
        !          5179:  }
        !          5180:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          5181:    *exc = GDOME_INVALID_STATE_ERR;
        !          5182:    return NULL;
        !          5183:  }
        !          5184:  *exc = 0;
        !          5185:  return ((Gdome_xml_Text *)self)->vtab->super.super.localName ((GdomeNode *)self, exc);
        !          5186: }
        !          5187: /**
        !          5188:  * gdome_t_namespaceURI:
        !          5189:  * @self:  Node Objects ref
        !          5190:  * @exc:  Exception Object ref
        !          5191:  *
        !          5192:  * Returns: the namespace URI of this node, or %NULL if it is unspecified.
        !          5193:  * For nodes of any type other than %GDOME_ELEMENT_NODE and
        !          5194:  * %GDOME_ATTRIBUTE_NODE and nodes created with a DOM Level 1 method, this is
        !          5195:  * always %NULL.
        !          5196:  */
        !          5197: GdomeDOMString *
        !          5198: gdome_t_namespaceURI (GdomeText *self, GdomeException *exc)
        !          5199: {
        !          5200:  if (self == NULL) {
        !          5201:    *exc = GDOME_NULL_POINTER_ERR;
        !          5202:    return NULL;
        !          5203:  }
        !          5204:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          5205:    *exc = GDOME_INVALID_STATE_ERR;
        !          5206:    return NULL;
        !          5207:  }
        !          5208:  *exc = 0;
        !          5209:  return ((Gdome_xml_Text *)self)->vtab->super.super.namespaceURI ((GdomeNode *)self, exc);
        !          5210: }
        !          5211: /**
        !          5212:  * gdome_t_nextSibling:
        !          5213:  * @self:  Node Object ref
        !          5214:  * @exc:  Exception Object ref
        !          5215:  *
        !          5216:  * Returns: the node immediately following this node. If there is no such
        !          5217:  * node, this returns %NULL.
        !          5218:  */
        !          5219: GdomeNode *
        !          5220: gdome_t_nextSibling (GdomeText *self, GdomeException *exc)
        !          5221: {
        !          5222:  if (self == NULL) {
        !          5223:    *exc = GDOME_NULL_POINTER_ERR;
        !          5224:    return NULL;
        !          5225:  }
        !          5226:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          5227:    *exc = GDOME_INVALID_STATE_ERR;
        !          5228:    return NULL;
        !          5229:  }
        !          5230:  *exc = 0;
        !          5231:  return ((Gdome_xml_Text *)self)->vtab->super.super.nextSibling ((GdomeNode *)self, exc);
        !          5232: }
        !          5233: /**
        !          5234:  * gdome_t_nodeName:
        !          5235:  * @self:  Node Object ref
        !          5236:  * @exc:  Exception Object ref
        !          5237:  *
        !          5238:  * Returns: the name of this node, depending on its type.
        !          5239:  */
        !          5240: GdomeDOMString *
        !          5241: gdome_t_nodeName (GdomeText *self, GdomeException *exc)
        !          5242: {
        !          5243:  if (self == NULL) {
        !          5244:    *exc = GDOME_NULL_POINTER_ERR;
        !          5245:    return NULL;
        !          5246:  }
        !          5247:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          5248:    *exc = GDOME_INVALID_STATE_ERR;
        !          5249:    return NULL;
        !          5250:  }
        !          5251:  *exc = 0;
        !          5252:  return ((Gdome_xml_Text *)self)->vtab->super.super.nodeName ((GdomeNode *)self, exc);
        !          5253: }
        !          5254: /**
        !          5255:  * gdome_t_nodeType:
        !          5256:  * @self:  Node Object ref
        !          5257:  * @exc:  Exception Object ref
        !          5258:  *
        !          5259:  * Returns: an integer bigger than %0 representing the type of the underlying
        !          5260:  * object or %0 on error.
        !          5261:  */
        !          5262: unsigned short
        !          5263: gdome_t_nodeType (GdomeText *self, GdomeException *exc)
        !          5264: {
        !          5265:  if (self == NULL) {
        !          5266:    *exc = GDOME_NULL_POINTER_ERR;
        !          5267:    return 0;
        !          5268:  }
        !          5269:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          5270:    *exc = GDOME_INVALID_STATE_ERR;
        !          5271:    return 0;
        !          5272:  }
        !          5273:  *exc = 0;
        !          5274:  return ((Gdome_xml_Text *)self)->vtab->super.super.nodeType ((GdomeNode *)self, exc);
        !          5275: }
        !          5276: /**
        !          5277:  * gdome_t_nodeValue:
        !          5278:  * @self:  Node Object ref
        !          5279:  * @exc:  Exception Object ref
        !          5280:  *
        !          5281:  * Returns: the value of this node, depending on its type.
        !          5282:  */
        !          5283: GdomeDOMString *
        !          5284: gdome_t_nodeValue (GdomeText *self, GdomeException *exc)
        !          5285: {
        !          5286:  if (self == NULL) {
        !          5287:    *exc = GDOME_NULL_POINTER_ERR;
        !          5288:    return NULL;
        !          5289:  }
        !          5290:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          5291:    *exc = GDOME_INVALID_STATE_ERR;
        !          5292:    return NULL;
        !          5293:  }
        !          5294:  *exc = 0;
        !          5295:  return ((Gdome_xml_Text *)self)->vtab->super.super.nodeValue ((GdomeNode *)self, exc);
        !          5296: }
        !          5297: /**
        !          5298:  * gdome_t_set_nodeValue:
        !          5299:  * @self:  Node Object ref
        !          5300:  * @nodeValue:  The new value for this node.
        !          5301:  * @exc:  Exception Object ref
        !          5302:  *
        !          5303:  * Sets The value of this node, depending on its type.
        !          5304:  *
        !          5305:  * %GDOME_NO_MODIFICATION_ALLOWED_ERR: Raised when the node is readonly.
        !          5306:  */
        !          5307: void
        !          5308: gdome_t_set_nodeValue (GdomeText *self, GdomeDOMString *nodeValue, GdomeException *exc)
        !          5309: {
        !          5310:  if (self == NULL) {
        !          5311:    *exc = GDOME_NULL_POINTER_ERR;
        !          5312:    return;
        !          5313:  }
        !          5314:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          5315:    *exc = GDOME_INVALID_STATE_ERR;
        !          5316:    return;
        !          5317:  }
        !          5318:  *exc = 0;
        !          5319:  ((Gdome_xml_Text *)self)->vtab->super.super.set_nodeValue ((GdomeNode *)self, nodeValue, exc);
        !          5320: }
        !          5321: /**
        !          5322:  * gdome_t_ownerDocument:
        !          5323:  * @self:  Node Objects ref
        !          5324:  * @exc:  Exception Object ref
        !          5325:  *
        !          5326:  * Returns: the documment object associated with this node. This is also the
        !          5327:  * Document object used to create new nodes. When this node is a Document or a
        !          5328:  * DocumentType which is not used with any Document yet, this is %NULL.
        !          5329:  */
        !          5330: GdomeDocument *
        !          5331: gdome_t_ownerDocument (GdomeText *self, GdomeException *exc)
        !          5332: {
        !          5333:  if (self == NULL) {
        !          5334:    *exc = GDOME_NULL_POINTER_ERR;
        !          5335:    return NULL;
        !          5336:  }
        !          5337:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          5338:    *exc = GDOME_INVALID_STATE_ERR;
        !          5339:    return NULL;
        !          5340:  }
        !          5341:  *exc = 0;
        !          5342:  return ((Gdome_xml_Text *)self)->vtab->super.super.ownerDocument ((GdomeNode *)self, exc);
        !          5343: }
        !          5344: /**
        !          5345:  * gdome_t_parentNode:
        !          5346:  * @self: Node Object ref
        !          5347:  * @exc: Exception Object ref
        !          5348:  *
        !          5349:  * Returns: the parent of this node. All nodes, except Attr,
        !          5350:  * Document, DocumentFragment, Entity, and Notation may have a parent. However,
        !          5351:  * if a node has just been created and not yet added to the tree, or if it has
        !          5352:  * been removed from the tree, this is %NULL.
        !          5353:  */
        !          5354: GdomeNode *
        !          5355: gdome_t_parentNode (GdomeText *self, GdomeException *exc)
        !          5356: {
        !          5357:  if (self == NULL) {
        !          5358:    *exc = GDOME_NULL_POINTER_ERR;
        !          5359:    return NULL;
        !          5360:  }
        !          5361:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          5362:    *exc = GDOME_INVALID_STATE_ERR;
        !          5363:    return NULL;
        !          5364:  }
        !          5365:  *exc = 0;
        !          5366:  return ((Gdome_xml_Text *)self)->vtab->super.super.parentNode ((GdomeNode *)self, exc);
        !          5367: }
        !          5368: /**
        !          5369:  * gdome_t_prefix:
        !          5370:  * @self:  Node Objects ref
        !          5371:  * @exc:  Exception Object ref
        !          5372:  *
        !          5373:  * Returns: the namespace prefix of this node, or %NULL if it is unspecified.
        !          5374:  * For nodes of any type other than %GDOME_ELEMENT_NODE and
        !          5375:  * %GDOME_ATTRIBUTE_NODE and nodes created with a DOM Level 1 method, this is
        !          5376:  * always %NULL.
        !          5377:  */
        !          5378: GdomeDOMString *
        !          5379: gdome_t_prefix (GdomeText *self, GdomeException *exc)
        !          5380: {
        !          5381:  if (self == NULL) {
        !          5382:    *exc = GDOME_NULL_POINTER_ERR;
        !          5383:    return NULL;
        !          5384:  }
        !          5385:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          5386:    *exc = GDOME_INVALID_STATE_ERR;
        !          5387:    return NULL;
        !          5388:  }
        !          5389:  *exc = 0;
        !          5390:  return ((Gdome_xml_Text *)self)->vtab->super.super.prefix ((GdomeNode *)self, exc);
        !          5391: }
        !          5392: /**
        !          5393:  * gdome_t_set_prefix:
        !          5394:  * @self:  Node Object ref
        !          5395:  * @prefix:  The new prefix for this node.
        !          5396:  * @exc:  Exception Object ref
        !          5397:  *
        !          5398:  * Sets a new nemaspace prefix for this node.
        !          5399:  *
        !          5400:  * %GDOME_NO_MODIFICATION_ALLOWED_ERR: Raised when the node is readonly.
        !          5401:  * %GDOME_NAMESPACE_ERR: Raised if the specified @prefix is malformed per the
        !          5402:  * Namespaces in XML specification, if the namespaceURI of this node is %NULL,
        !          5403:  * if the specified prefix is "xml" and the namespaceURI of this node is
        !          5404:  * different from "http://www.w3.org/XML/1998/namespace", if this node is an
        !          5405:  * attribute and the specified prefix is "xmlns" and the namespaceURI of this
        !          5406:  * node is different from "http://www.w3.org/2000/xmlns/", or if this node is
        !          5407:  * an attribute and the qualifiedName of this node is "xmlns".
        !          5408:  */
        !          5409: void
        !          5410: gdome_t_set_prefix (GdomeText *self, GdomeDOMString *prefix, GdomeException *exc)
        !          5411: {
        !          5412:  if (self == NULL) {
        !          5413:    *exc = GDOME_NULL_POINTER_ERR;
        !          5414:    return;
        !          5415:  }
        !          5416:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          5417:    *exc = GDOME_INVALID_STATE_ERR;
        !          5418:    return;
        !          5419:  }
        !          5420:  *exc = 0;
        !          5421:  ((Gdome_xml_Text *)self)->vtab->super.super.set_prefix ((GdomeNode *)self, prefix, exc);
        !          5422: }
        !          5423: /**
        !          5424:  * gdome_t_previousSibling:
        !          5425:  * @self:  Node Object ref
        !          5426:  * @exc:  Exception Object ref
        !          5427:  *
        !          5428:  * Returns: the node immediately preceding this node. If there is no such
        !          5429:  * node, this returns %NULL.
        !          5430:  */
        !          5431: GdomeNode *
        !          5432: gdome_t_previousSibling (GdomeText *self, GdomeException *exc)
        !          5433: {
        !          5434:  if (self == NULL) {
        !          5435:    *exc = GDOME_NULL_POINTER_ERR;
        !          5436:    return NULL;
        !          5437:  }
        !          5438:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          5439:    *exc = GDOME_INVALID_STATE_ERR;
        !          5440:    return NULL;
        !          5441:  }
        !          5442:  *exc = 0;
        !          5443:  return ((Gdome_xml_Text *)self)->vtab->super.super.previousSibling ((GdomeNode *)self, exc);
        !          5444: }
        !          5445: /**
        !          5446:  * gdome_t_ref:
        !          5447:  * @self:  Node Object ref
        !          5448:  * @exc:  Exception Object ref
        !          5449:  *
        !          5450:  * Increase the reference count of the specified Node.
        !          5451:  */
        !          5452: void
        !          5453: gdome_t_ref (GdomeText *self, GdomeException *exc)
        !          5454: {
        !          5455:  if (self == NULL) {
        !          5456:    *exc = GDOME_NULL_POINTER_ERR;
        !          5457:    return;
        !          5458:  }
        !          5459:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          5460:    *exc = GDOME_INVALID_STATE_ERR;
        !          5461:    return;
        !          5462:  }
        !          5463:  *exc = 0;
        !          5464:  ((Gdome_xml_Text *)self)->vtab->super.super.ref ((GdomeNode *)self, exc);
        !          5465: }
        !          5466: /**
        !          5467:  * gdome_t_unref:
        !          5468:  * @self:  Node Object ref
        !          5469:  * @exc:  Exception Object ref
        !          5470:  *
        !          5471:  * Decrease the reference count of the specified Node. Free the Node structure
        !          5472:  * if the Node will have zero reference.
        !          5473:  */
        !          5474: void
        !          5475: gdome_t_unref (GdomeText *self, GdomeException *exc)
        !          5476: {
        !          5477:  if (self == NULL) {
        !          5478:    *exc = GDOME_NULL_POINTER_ERR;
        !          5479:    return;
        !          5480:  }
        !          5481:  *exc = 0;
        !          5482:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          5483:    if (((Gdome_xml_Node *)self)->refcnt > 0)
        !          5484:      ((Gdome_xml_Node *)self)->refcnt--;
        !          5485: 
        !          5486:    if (((Gdome_xml_Node *)self)->refcnt == 0 && ((Gdome_xml_Node *)self)->ll == NULL) {
        !          5487: #ifdef DEBUG_REFCNT
        !          5488:      gdome_refdbg_delRef ((void *)self, GDOME_REFDBG_NODE);
        !          5489: #endif
        !          5490:      g_free (self);
        !          5491:    }
        !          5492:    return;
        !          5493:  }
        !          5494:  ((Gdome_xml_Text *)self)->vtab->super.super.unref ((GdomeNode *)self, exc);
        !          5495: }
        !          5496: /**
        !          5497:  * gdome_t_query_interface:
        !          5498:  * @self:  Node Object ref
        !          5499:  * @interface:  interface needed
        !          5500:  * @exc:  Exception Object ref
        !          5501:  *
        !          5502:  * Returns: a reference to this object that implements the @interface needed,
        !          5503:  *          or %NULL if the @interface is not supported by this Object.
        !          5504:  */
        !          5505: gpointer
        !          5506: gdome_t_query_interface (GdomeText *self, const char *interface, GdomeException *exc)
        !          5507: {
        !          5508:  if (self == NULL) {
        !          5509:    *exc = GDOME_NULL_POINTER_ERR;
        !          5510:    return NULL;
        !          5511:  }
        !          5512:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          5513:    *exc = GDOME_INVALID_STATE_ERR;
        !          5514:    return NULL;
        !          5515:  }
        !          5516:  *exc = 0;
        !          5517:  return ((Gdome_xml_Text *)self)->vtab->super.super.query_interface ((GdomeNode *)self, interface, exc);
        !          5518: }
        !          5519: /**
        !          5520:  * gdome_t_appendChild:
        !          5521:  * @self:  Node Object ref
        !          5522:  * @newChild:  The node to add
        !          5523:  * @exc:  Exception Object ref
        !          5524:  *
        !          5525:  * Adds the node @newChild to the end of the list of children of this node.
        !          5526:  * If the @newChild is already in the tree, it is first removed. If it is a
        !          5527:  * DocumentFragment node, the entire contents of the document fragment are
        !          5528:  * moved into the child list of this node
        !          5529:  *
        !          5530:  * %GDOME_HIERARCHY_REQUEST_ERR: Raised if this node is of a type that does not
        !          5531:  * allow children of the type of the @newChild node, or if the node to append is
        !          5532:  * one of this node's ancestors or this node itself.
        !          5533:  * %GDOME_WRONG_DOCUMENT_ERR: Raised if @newChild was created from a different
        !          5534:  * document than the one that created this node.
        !          5535:  * %GDOME_NO_MODIFICATION_ALLOWED_ERR: Raised when the node is readonly.
        !          5536:  * Returns: the node added.
        !          5537:  */
        !          5538: GdomeNode *
        !          5539: gdome_t_appendChild (GdomeText *self, GdomeNode *newChild, GdomeException *exc)
        !          5540: {
        !          5541:  if (self == NULL) {
        !          5542:    *exc = GDOME_NULL_POINTER_ERR;
        !          5543:    return NULL;
        !          5544:  }
        !          5545:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          5546:    *exc = GDOME_INVALID_STATE_ERR;
        !          5547:    return NULL;
        !          5548:  }
        !          5549:  *exc = 0;
        !          5550:  return ((Gdome_xml_Text *)self)->vtab->super.super.appendChild ((GdomeNode *)self, newChild, exc);
        !          5551: }
        !          5552: /**
        !          5553:  * gdome_t_cloneNode:
        !          5554:  * @self:  Node Object ref
        !          5555:  * @deep:  If true, recursively clone the subtree under the specified node;
        !          5556:  *         if false, clone only the node itself (and its attributes, if it is
        !          5557:  *         an Element).
        !          5558:  * @exc:  Exception Object ref
        !          5559:  *
        !          5560:  * Makes a duplicate of this node, i.e., serves as a generic copy
        !          5561:  * constructor for nodes. The duplicate node has no parent; (parentNode is
        !          5562:  * %NULL).
        !          5563:  * %GDOME_DOCUMENT_TYPE_NODE, %GDOME_NOTATION_NODE and %GDOME_ENTITY_NODE
        !          5564:  * nodes are not supported.
        !          5565:  *
        !          5566:  * %GDOME_NOT_SUPPORTED_ERR: Raised if the type of node being cloned is not
        !          5567:  * supported.
        !          5568:  * Returns: the duplicate node.
        !          5569:  */
        !          5570: GdomeNode *
        !          5571: gdome_t_cloneNode (GdomeText *self, GdomeBoolean deep, GdomeException *exc)
        !          5572: {
        !          5573:  if (self == NULL) {
        !          5574:    *exc = GDOME_NULL_POINTER_ERR;
        !          5575:    return NULL;
        !          5576:  }
        !          5577:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          5578:    *exc = GDOME_INVALID_STATE_ERR;
        !          5579:    return NULL;
        !          5580:  }
        !          5581:  *exc = 0;
        !          5582:  return ((Gdome_xml_Text *)self)->vtab->super.super.cloneNode ((GdomeNode *)self, deep, exc);
        !          5583: }
        !          5584: /**
        !          5585:  * gdome_t_hasAttributes:
        !          5586:  * @self:  Node Object ref
        !          5587:  * @exc:  Exception Object ref
        !          5588:  *
        !          5589:  * Returns: %TRUE if this node has any attributes, %FALSE otherwise.
        !          5590:  */
        !          5591: GdomeBoolean
        !          5592: gdome_t_hasAttributes (GdomeText *self, GdomeException *exc)
        !          5593: {
        !          5594:  if (self == NULL) {
        !          5595:    *exc = GDOME_NULL_POINTER_ERR;
        !          5596:    return FALSE;
        !          5597:  }
        !          5598:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          5599:    *exc = GDOME_INVALID_STATE_ERR;
        !          5600:    return FALSE;
        !          5601:  }
        !          5602:  *exc = 0;
        !          5603:  return ((Gdome_xml_Text *)self)->vtab->super.super.hasAttributes ((GdomeNode *)self, exc);
        !          5604: }
        !          5605: /**
        !          5606:  * gdome_t_hasChildNodes:
        !          5607:  * @self:  Node Object ref
        !          5608:  * @exc:  Exception Object ref
        !          5609:  *
        !          5610:  * Returns: %TRUE if this node has any children, %FALSE otherwise.
        !          5611:  */
        !          5612: GdomeBoolean
        !          5613: gdome_t_hasChildNodes (GdomeText *self, GdomeException *exc)
        !          5614: {
        !          5615:  if (self == NULL) {
        !          5616:    *exc = GDOME_NULL_POINTER_ERR;
        !          5617:    return FALSE;
        !          5618:  }
        !          5619:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          5620:    *exc = GDOME_INVALID_STATE_ERR;
        !          5621:    return FALSE;
        !          5622:  }
        !          5623:  *exc = 0;
        !          5624:  return ((Gdome_xml_Text *)self)->vtab->super.super.hasChildNodes ((GdomeNode *)self, exc);
        !          5625: }
        !          5626: /**
        !          5627:  * gdome_t_insertBefore:
        !          5628:  * @self:  Node Object ref
        !          5629:  * @newChild:  The new node to put in the child list
        !          5630:  * @refChild:  the reference node, i.e., the node before which the new node
        !          5631:  *             must be inserted.
        !          5632:  * @exc:  Exception Object ref
        !          5633:  *
        !          5634:  * Inserts the node @newChild before the existing child node @refChild. If
        !          5635:  * @refChild is %NULL, insert @newChild at the end of the list of children.
        !          5636:  * If @newChild is a DocumentFragment node, all of its children are inserted,
        !          5637:  * in the same order, before @refChild. If the @newChild is already in the
        !          5638:  * tree, it is first removed.
        !          5639:  *
        !          5640:  * %GDOME_HIERARCHY_REQUEST_ERR: Raised if this node is of a type that does not
        !          5641:  * allow children of the type of the @newChild node, or if the node to insert is
        !          5642:  * one of this node's ancestors or this node itself.
        !          5643:  * %GDOME_WRONG_DOCUMENT_ERR: Raised if @newChild was created from a different
        !          5644:  * document than the one that created this node.
        !          5645:  * %GDOME_NOT_FOUND_ERR: Raised if @refChild is not a child of this node.
        !          5646:  * %GDOME_NO_MODIFICATION_ALLOWED_ERR: Raised when the node is readonly.
        !          5647:  * Returns: the node being inserted.
        !          5648:  */
        !          5649: GdomeNode *
        !          5650: gdome_t_insertBefore (GdomeText *self, GdomeNode *newChild, GdomeNode *refChild, GdomeException *exc)
        !          5651: {
        !          5652:  if (self == NULL) {
        !          5653:    *exc = GDOME_NULL_POINTER_ERR;
        !          5654:    return NULL;
        !          5655:  }
        !          5656:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          5657:    *exc = GDOME_INVALID_STATE_ERR;
        !          5658:    return NULL;
        !          5659:  }
        !          5660:  *exc = 0;
        !          5661:  return ((Gdome_xml_Text *)self)->vtab->super.super.insertBefore ((GdomeNode *)self, newChild, refChild, exc);
        !          5662: }
        !          5663: /**
        !          5664:  * gdome_t_isSupported:
        !          5665:  * @self:  Node Object ref
        !          5666:  * @feature:  The name of the feature to test.
        !          5667:  * @version:  This is the version number of the feature to test. In Level 2,
        !          5668:  *            version 1, this is the string "2.0". If the version is not
        !          5669:  *            specified, supporting any version of the feature will cause the
        !          5670:  *            method to return %TRUE.
        !          5671:  * @exc:  Exception Object ref
        !          5672:  *
        !          5673:  * Tests whether the DOM implementation implements a specific feature and that
        !          5674:  * feature is supported by this node.
        !          5675:  * Returns: %TRUE if the specified feature is supported on this node, %FALSE
        !          5676:  * otherwise.
        !          5677:  */
        !          5678: GdomeBoolean
        !          5679: gdome_t_isSupported (GdomeText *self, GdomeDOMString *feature, GdomeDOMString *version, GdomeException *exc)
        !          5680: {
        !          5681:  if (self == NULL) {
        !          5682:    *exc = GDOME_NULL_POINTER_ERR;
        !          5683:    return FALSE;
        !          5684:  }
        !          5685:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          5686:    *exc = GDOME_INVALID_STATE_ERR;
        !          5687:    return FALSE;
        !          5688:  }
        !          5689:  *exc = 0;
        !          5690:  return ((Gdome_xml_Text *)self)->vtab->super.super.isSupported ((GdomeNode *)self, feature, version, exc);
        !          5691: }
        !          5692: /**
        !          5693:  * gdome_t_normalize:
        !          5694:  * @self:  Node Object ref
        !          5695:  * @exc:  Exception Object ref
        !          5696:  *
        !          5697:  * Puts all Text nodes in the full depth of the sub-tree underneath this Node,
        !          5698:  * including attribute nodes, into a "normal" form where only structure (e.g.,
        !          5699:  * elements, comments, processing instructions, CDATA sections, and entity
        !          5700:  * references) separates Text nodes, i.e., there are neither adjacent Text
        !          5701:  * nodes nor empty Text nodes.
        !          5702:  */
        !          5703: void
        !          5704: gdome_t_normalize (GdomeText *self, GdomeException *exc)
        !          5705: {
        !          5706:  if (self == NULL) {
        !          5707:    *exc = GDOME_NULL_POINTER_ERR;
        !          5708:    return;
        !          5709:  }
        !          5710:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          5711:    *exc = GDOME_INVALID_STATE_ERR;
        !          5712:    return;
        !          5713:  }
        !          5714:  *exc = 0;
        !          5715:  ((Gdome_xml_Text *)self)->vtab->super.super.normalize ((GdomeNode *)self, exc);
        !          5716: }
        !          5717: /**
        !          5718:  * gdome_t_removeChild:
        !          5719:  * @self:  Node Object ref
        !          5720:  * @oldChild:  The node being removed
        !          5721:  * @exc:  Exception Object ref
        !          5722:  *
        !          5723:  * Removes the child node indicated by @oldChild from the list of children, and
        !          5724:  * returns it.
        !          5725:  *
        !          5726:  * %GDOME_NOT_FOUND_ERR: Raised if @oldChild is not a child of this node.
        !          5727:  * %GDOME_NO_MODIFICATION_ALLOWED_ERR: Raised when the node is readonly.
        !          5728:  * Returns: the node removed.
        !          5729:  */
        !          5730: GdomeNode *
        !          5731: gdome_t_removeChild (GdomeText *self, GdomeNode *oldChild, GdomeException *exc)
        !          5732: {
        !          5733:  if (self == NULL) {
        !          5734:    *exc = GDOME_NULL_POINTER_ERR;
        !          5735:    return NULL;
        !          5736:  }
        !          5737:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          5738:    *exc = GDOME_INVALID_STATE_ERR;
        !          5739:    return NULL;
        !          5740:  }
        !          5741:  *exc = 0;
        !          5742:  return ((Gdome_xml_Text *)self)->vtab->super.super.removeChild ((GdomeNode *)self, oldChild, exc);
        !          5743: }
        !          5744: /**
        !          5745:  * gdome_t_replaceChild:
        !          5746:  * @self:  Node Object ref
        !          5747:  * @newChild:  The new node to put in the child list
        !          5748:  * @oldChild:  The node being replaced in the list
        !          5749:  * @exc:  Exception Object ref
        !          5750:  *
        !          5751:  * Replaces the child node @oldChild with @newChild in the list of children,
        !          5752:  * and returns the @oldChild node. If @newChild is a DocumentFragment object,
        !          5753:  * @oldChild is replaced by all of the DocumentFragment children, which are
        !          5754:  * inserted in the same order. If the @newChild is already in the tree, it is
        !          5755:  * first removed.
        !          5756:  *
        !          5757:  * %GDOME_HIERARCHY_REQUEST_ERR: Raised if this node is of a type that does
        !          5758:  * not allow children of the type of the @newChild node, or if the node to put
        !          5759:  * in is one of this node's ancestors or this node itself.
        !          5760:  * %GDOME_WRONG_DOCUMENT_ERR: Raised if @newChild was created from a different
        !          5761:  * document than the one that created this node.
        !          5762:  * %GDOME_NOT_FOUND_ERR: Raised if @oldChild is not a child of this node.
        !          5763:  * %GDOME_NO_MODIFICATION_ALLOWED_ERR: Raised when the node is readonly.
        !          5764:  * Returns: the node replaced.
        !          5765:  */
        !          5766: GdomeNode *
        !          5767: gdome_t_replaceChild (GdomeText *self, GdomeNode *newChild, GdomeNode *oldChild, GdomeException *exc)
        !          5768: {
        !          5769:  if (self == NULL) {
        !          5770:    *exc = GDOME_NULL_POINTER_ERR;
        !          5771:    return NULL;
        !          5772:  }
        !          5773:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          5774:    *exc = GDOME_INVALID_STATE_ERR;
        !          5775:    return NULL;
        !          5776:  }
        !          5777:  *exc = 0;
        !          5778:  return ((Gdome_xml_Text *)self)->vtab->super.super.replaceChild ((GdomeNode *)self, newChild, oldChild, exc);
        !          5779: }
        !          5780: /**
        !          5781:  * gdome_t_addEventListener:
        !          5782:  * @self:  Node Object ref
        !          5783:  * @type:  the event type for which the user is registering
        !          5784:  * @listener:  the listener parameter takes an interface implemented by the
        !          5785:  *             user which contains the methods to be called when the event occurs.
        !          5786:  * @useCapture:  if %TRUE, useCapture indicates that the user wishes to initiate
        !          5787:  *               capture. After initiating capture, all events of the specified
        !          5788:  *               type will be dispatched to the registered EventListener before
        !          5789:  *               being dispatched to any EventTargets beneath them in the tree.
        !          5790:  *               Events which are bubbling upward through the tree will not
        !          5791:  *               trigger an EventListener designated to use capture.
        !          5792:  * @exc:  Exception Object ref
        !          5793:  *
        !          5794:  * This method allows the registration of event listeners on the event target.
        !          5795:  * If an EventListener is added to an EventTarget while it is processing an
        !          5796:  * event, it will not be triggered by the current actions but may be triggered
        !          5797:  * during a later stage of event flow, such as the bubbling phase.
        !          5798:  * If multiple identical EventListeners are registered on the same EventTarget
        !          5799:  * with the same parameters the duplicate instances are discarded. They do not
        !          5800:  * cause the EventListener to be called twice and since they are discarded
        !          5801:  * they do not need to be removed with the removeEventListener method.
        !          5802:  */
        !          5803: void
        !          5804: gdome_t_addEventListener (GdomeText *self, GdomeDOMString *type, GdomeEventListener *listener, GdomeBoolean useCapture, GdomeException *exc)
        !          5805: {
        !          5806:  if (self == NULL) {
        !          5807:    *exc = GDOME_NULL_POINTER_ERR;
        !          5808:    return;
        !          5809:  }
        !          5810:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          5811:    *exc = GDOME_INVALID_STATE_ERR;
        !          5812:    return;
        !          5813:  }
        !          5814:  *exc = 0;
        !          5815:  ((Gdome_xml_Text *)self)->vtab->super.super.addEventListener ((GdomeNode *)self, type, listener, useCapture, exc);
        !          5816: }
        !          5817: /**
        !          5818:  * gdome_t_removeEventListener:
        !          5819:  * @self:  Node Object ref
        !          5820:  * @type:  Specifies the event type of the EventListener being removed.
        !          5821:  * @listener:  The EventListener parameter indicates the EventListener to be
        !          5822:  *             removed.
        !          5823:  * @useCapture:  Specifies whether the EventListener being removed was
        !          5824:  *               registered as a capturing listener or not. If a listener was
        !          5825:  *               registered twice, one with capture and one without, each must
        !          5826:  *               be removed separately. Removal of a capturing listener does
        !          5827:  *               not affect a non-capturing version of the same listener, and
        !          5828:  *               vice versa.
        !          5829:  * @exc:  Exception Object ref
        !          5830:  *
        !          5831:  * This method allows the removal of event listeners from the event target. If
        !          5832:  * an EventListener is removed from an EventTarget while it is processing an
        !          5833:  * event, it will not be triggered by the current actions. EventListeners can
        !          5834:  * never be invoked after being removed. Calling removeEventListener with
        !          5835:  * arguments which do not identify any currently registered EventListener on
        !          5836:  * the EventTarget has no effect.
        !          5837:  */
        !          5838: void
        !          5839: gdome_t_removeEventListener (GdomeText *self, GdomeDOMString *type, GdomeEventListener *listener, GdomeBoolean useCapture, GdomeException *exc)
        !          5840: {
        !          5841:  if (self == NULL) {
        !          5842:    *exc = GDOME_NULL_POINTER_ERR;
        !          5843:    return;
        !          5844:  }
        !          5845:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          5846:    *exc = GDOME_INVALID_STATE_ERR;
        !          5847:    return;
        !          5848:  }
        !          5849:  *exc = 0;
        !          5850:  ((Gdome_xml_Text *)self)->vtab->super.super.removeEventListener ((GdomeNode *)self, type, listener, useCapture, exc);
        !          5851: }
        !          5852: /**
        !          5853:  * gdome_t_dispatchEvent:
        !          5854:  * @self:  Node Object ref
        !          5855:  * @evt:  Specifies the event type, behavior, and contextual information to be
        !          5856:  *        used in processing the event.
        !          5857:  * @exc:  Exception Object ref
        !          5858:  *
        !          5859:  * This method allows the dispatch of events into the implementations event
        !          5860:  * model. Events dispatched in this manner will have the same capturing and
        !          5861:  * bubbling behavior as events dispatched directly by the implementation. The
        !          5862:  * target of the event is the EventTarget on which dispatchEvent is called.
        !          5863:  *
        !          5864:  * GDOME_UNSPECIFIED_EVENT_TYPE_ERR: Raised if the Event's type was not
        !          5865:  * specified by initializing the event before dispatchEvent was called.
        !          5866:  * Specification of the Event's type as %NULL or an empty string will also
        !          5867:  * trigger this exception.
        !          5868:  * Returns: if preventDefault was called the value is %FALSE, else the value
        !          5869:  *          is %TRUE.
        !          5870:  */
        !          5871: GdomeBoolean
        !          5872: gdome_t_dispatchEvent (GdomeText *self, GdomeEvent *evt, GdomeException *exc)
        !          5873: {
        !          5874:  if (self == NULL) {
        !          5875:    *exc = GDOME_NULL_POINTER_ERR;
        !          5876:    return FALSE;
        !          5877:  }
        !          5878:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          5879:    *exc = GDOME_INVALID_STATE_ERR;
        !          5880:    return FALSE;
        !          5881:  }
        !          5882:  *exc = 0;
        !          5883:  return ((Gdome_xml_Text *)self)->vtab->super.super.dispatchEvent ((GdomeNode *)self, evt, exc);
        !          5884: }
        !          5885: /**
        !          5886:  * gdome_t_subTreeDispatchEvent:
        !          5887:  * @self:  Node Object ref
        !          5888:  * @evt:  Specifies the event type, behavior, and contextual information to be
        !          5889:  *        used in processing the event.
        !          5890:  * @exc:  Exception Object ref
        !          5891:  *
        !          5892:  * This method allows the dispatch of events into the implementations event
        !          5893:  * model. Events dispatched in this manner will have the same capturing and
        !          5894:  * bubbling behavior as events dispatched directly by the implementation. The
        !          5895:  * target of the event is any nodes in the subtree of the EventTarget on which
        !          5896:  * dispatchEvent is called.
        !          5897:  *
        !          5898:  * GDOME_UNSPECIFIED_EVENT_TYPE_ERR: Raised if the Event's type was not
        !          5899:  * specified by initializing the event before dispatchEvent was called.
        !          5900:  * Specification of the Event's type as %NULL or an empty string will also
        !          5901:  * trigger this exception.
        !          5902:  */
        !          5903: void
        !          5904: gdome_t_subTreeDispatchEvent (GdomeText *self, GdomeEvent *evt, GdomeException *exc)
        !          5905: {
        !          5906:  if (self == NULL) {
        !          5907:    *exc = GDOME_NULL_POINTER_ERR;
        !          5908:    return;
        !          5909:  }
        !          5910:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          5911:    *exc = GDOME_INVALID_STATE_ERR;
        !          5912:    return;
        !          5913:  }
        !          5914:  *exc = 0;
        !          5915:  ((Gdome_xml_Text *)self)->vtab->super.super.subTreeDispatchEvent ((GdomeNode *)self, evt, exc);
        !          5916: }
        !          5917: /**
        !          5918:  * gdome_t_canAppend:
        !          5919:  * @self:  Node Object ref
        !          5920:  * @newChild:  The Node Object ref of the node to test
        !          5921:  * @exc:  Exception Object ref
        !          5922:  *
        !          5923:  * Tests if a @newChild can be added in the child list of this node.
        !          5924:  * Returns: %TRUE if @newChild can be added, %FALSE otherwise.
        !          5925:  */
        !          5926: GdomeBoolean
        !          5927: gdome_t_canAppend (GdomeText *self, GdomeNode *newChild, GdomeException *exc)
        !          5928: {
        !          5929:  if (self == NULL) {
        !          5930:    *exc = GDOME_NULL_POINTER_ERR;
        !          5931:    return FALSE;
        !          5932:  }
        !          5933:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          5934:    *exc = GDOME_INVALID_STATE_ERR;
        !          5935:    return FALSE;
        !          5936:  }
        !          5937:  *exc = 0;
        !          5938:  return ((Gdome_xml_Text *)self)->vtab->super.super.canAppend ((GdomeNode *)self, newChild, exc);
        !          5939: }
        !          5940: 
        !          5941: /******************************************************************************
        !          5942:           GdomeCDATASection interface API
        !          5943:  ******************************************************************************/
        !          5944: /**
        !          5945:  * gdome_cds_splitText:
        !          5946:  * @self:  The Text Object ref
        !          5947:  * @offset: The 16-bit unit offset at which to split, starting from 0
        !          5948:  * @exc:  The GdomeException Object ref
        !          5949:  *
        !          5950:  * Breaks this node into two nodes at the specified @offset, keeping both in
        !          5951:  * the tree as siblings. After being split, this node will contain all the
        !          5952:  * content up to the @offset point. A new node of the same type, which contains
        !          5953:  * all the content at and after the @offset point, is returned. If the original
        !          5954:  * node had a parent node, the new node is inserted as the next sibling of the
        !          5955:  * original node. When the @offset is equal to the length of this node, the new
        !          5956:  * node has no data.
        !          5957:  *
        !          5958:  * %GDOME_INDEX_SIZE_ERR: Raised if the specified @offset is greater than the
        !          5959:  * number of 16-bit units in data.
        !          5960:  * %GDOME_NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly.
        !          5961:  * Returns: the new node, of the same type as this node.
        !          5962:  */
        !          5963: GdomeText *
        !          5964: gdome_cds_splitText (GdomeCDATASection *self, gulong offset, GdomeException *exc)
        !          5965: {
        !          5966:  if (self == NULL) {
        !          5967:    *exc = GDOME_NULL_POINTER_ERR;
        !          5968:    return NULL;
        !          5969:  }
        !          5970:  if (((Gdome_xml_Text *)self)->n == NULL) {
        !          5971:    *exc = GDOME_INVALID_STATE_ERR;
        !          5972:    return NULL;
        !          5973:  }
        !          5974:  *exc = 0;
        !          5975:  return ((Gdome_xml_CDATASection *)self)->vtab->super.splitText ((GdomeText *)self, offset, exc);
        !          5976: }
        !          5977: /**
        !          5978:  * gdome_cds_data:
        !          5979:  * @self:  The CharacterData Object ref
        !          5980:  * @exc:  The Exception Object ref
        !          5981:  *
        !          5982:  * Returns: the character data of the node that implements this interface.
        !          5983:  */
        !          5984: GdomeDOMString *
        !          5985: gdome_cds_data (GdomeCDATASection *self, GdomeException *exc)
        !          5986: {
        !          5987:  if (self == NULL) {
        !          5988:    *exc = GDOME_NULL_POINTER_ERR;
        !          5989:    return NULL;
        !          5990:  }
        !          5991:  if (((Gdome_xml_CharacterData *)self)->n == NULL) {
        !          5992:    *exc = GDOME_INVALID_STATE_ERR;
        !          5993:    return NULL;
        !          5994:  }
        !          5995:  *exc = 0;
        !          5996:  return ((Gdome_xml_CDATASection *)self)->vtab->super.super.data ((GdomeCharacterData *)self, exc);
        !          5997: }
        !          5998: /**
        !          5999:  * gdome_cds_set_data:
        !          6000:  * @self:  The CharacterData Object ref
        !          6001:  * @data:  The data value for this node
        !          6002:  * @exc:  The Exception Object ref
        !          6003:  *
        !          6004:  * Sets the data value of this node.
        !          6005:  *
        !          6006:  * %GDOME_NO_MODIFICATION_ALLOWED_ERR: Raised when the node is readonly.
        !          6007:  */
        !          6008: void
        !          6009: gdome_cds_set_data (GdomeCDATASection *self, GdomeDOMString *data, GdomeException *exc)
        !          6010: {
        !          6011:  if (self == NULL) {
        !          6012:    *exc = GDOME_NULL_POINTER_ERR;
        !          6013:    return;
        !          6014:  }
        !          6015:  if (((Gdome_xml_CharacterData *)self)->n == NULL) {
        !          6016:    *exc = GDOME_INVALID_STATE_ERR;
        !          6017:    return;
        !          6018:  }
        !          6019:  *exc = 0;
        !          6020:  ((Gdome_xml_CDATASection *)self)->vtab->super.super.set_data ((GdomeCharacterData *)self, data, exc);
        !          6021: }
        !          6022: /**
        !          6023:  * gdome_cds_length:
        !          6024:  * @self:  The CharacterData Object ref
        !          6025:  * @exc:  The GdomeException Object ref
        !          6026:  *
        !          6027:  * Returns: The number of 16-bit units that are available. This may have the
        !          6028:  * value zero, i.e., CharacterData nodes may be empty.
        !          6029:  */
        !          6030: gulong
        !          6031: gdome_cds_length (GdomeCDATASection *self, GdomeException *exc)
        !          6032: {
        !          6033:  if (self == NULL) {
        !          6034:    *exc = GDOME_NULL_POINTER_ERR;
        !          6035:    return 0L;
        !          6036:  }
        !          6037:  if (((Gdome_xml_CharacterData *)self)->n == NULL) {
        !          6038:    *exc = GDOME_INVALID_STATE_ERR;
        !          6039:    return 0L;
        !          6040:  }
        !          6041:  *exc = 0;
        !          6042:  return ((Gdome_xml_CDATASection *)self)->vtab->super.super.length ((GdomeCharacterData *)self, exc);
        !          6043: }
        !          6044: /**
        !          6045:  * gdome_cds_appendData:
        !          6046:  * @self:  The CharacterData Object ref
        !          6047:  * @arg:  The string to append
        !          6048:  * @exc:  The Exception Object ref
        !          6049:  *
        !          6050:  * Append the string to the end of the character data of the node. Upon
        !          6051:  * success, data provides access to the concatenation of data and the
        !          6052:  * string specified.
        !          6053:  *
        !          6054:  * %GDOME_NO_MODIFICATION_ALLOWED_ERR: Raised when the node is readonly.
        !          6055:  */
        !          6056: void
        !          6057: gdome_cds_appendData (GdomeCDATASection *self, GdomeDOMString *arg, GdomeException *exc)
        !          6058: {
        !          6059:  if (self == NULL) {
        !          6060:    *exc = GDOME_NULL_POINTER_ERR;
        !          6061:    return;
        !          6062:  }
        !          6063:  if (((Gdome_xml_CharacterData *)self)->n == NULL) {
        !          6064:    *exc = GDOME_INVALID_STATE_ERR;
        !          6065:    return;
        !          6066:  }
        !          6067:  *exc = 0;
        !          6068:  ((Gdome_xml_CDATASection *)self)->vtab->super.super.appendData ((GdomeCharacterData *)self, arg, exc);
        !          6069: }
        !          6070: /**
        !          6071:  * gdome_cds_deleteData:
        !          6072:  * @self:  The CharacterData Object ref
        !          6073:  * @offset:  The offset from which to start removing
        !          6074:  * @count:  The number of 16-bit units to delete.
        !          6075:  * @exc:  The Exception Object ref
        !          6076:  *
        !          6077:  * Remove a range of 16-bit units from the node. If the sum of @offset and
        !          6078:  * @count exceeds length then all 16-bit units from @offset to the end of the
        !          6079:  * data are deleted. Upon success, data and length reflect the change.
        !          6080:  *
        !          6081:  * %GDOME_INDEX_SIZE_ERR: Raised if the specified offset is greater than the
        !          6082:  * number of 16-bit units in data.
        !          6083:  * %GDOME_NO_MODIFICATION_ALLOWED_ERR: Raised when the node is readonly.
        !          6084:  */
        !          6085: void
        !          6086: gdome_cds_deleteData (GdomeCDATASection *self, gulong offset, gulong count, GdomeException *exc)
        !          6087: {
        !          6088:  if (self == NULL) {
        !          6089:    *exc = GDOME_NULL_POINTER_ERR;
        !          6090:    return;
        !          6091:  }
        !          6092:  if (((Gdome_xml_CharacterData *)self)->n == NULL) {
        !          6093:    *exc = GDOME_INVALID_STATE_ERR;
        !          6094:    return;
        !          6095:  }
        !          6096:  *exc = 0;
        !          6097:  ((Gdome_xml_CDATASection *)self)->vtab->super.super.deleteData ((GdomeCharacterData *)self, offset, count, exc);
        !          6098: }
        !          6099: /**
        !          6100:  * gdome_cds_insertData:
        !          6101:  * @self:  The CharacterData Object ref
        !          6102:  * @offset:  The character offset at which to insert
        !          6103:  * @arg:  The string to insert
        !          6104:  * @exc:  The Exception Object ref
        !          6105:  *
        !          6106:  * Insert a string at the specified 16-bit unit offset.
        !          6107:  *
        !          6108:  * %GDOME_INDEX_SIZE_ERR: Raised if the specified offset is greater than the
        !          6109:  * number of 16-bit units in data.
        !          6110:  * %GDOME_NO_MODIFICATION_ALLOWED_ERR: Raised when the node is readonly.
        !          6111:  */
        !          6112: void
        !          6113: gdome_cds_insertData (GdomeCDATASection *self, gulong offset, GdomeDOMString *arg, GdomeException *exc)
        !          6114: {
        !          6115:  if (self == NULL) {
        !          6116:    *exc = GDOME_NULL_POINTER_ERR;
        !          6117:    return;
        !          6118:  }
        !          6119:  if (((Gdome_xml_CharacterData *)self)->n == NULL) {
        !          6120:    *exc = GDOME_INVALID_STATE_ERR;
        !          6121:    return;
        !          6122:  }
        !          6123:  *exc = 0;
        !          6124:  ((Gdome_xml_CDATASection *)self)->vtab->super.super.insertData ((GdomeCharacterData *)self, offset, arg, exc);
        !          6125: }
        !          6126: /**
        !          6127:  * gdome_cds_replaceData:
        !          6128:  * @self:  The CharacterData Object ref
        !          6129:  * @offset:  The offset from which to start replacing
        !          6130:  * @count:  The number of 16-bit units to replace.
        !          6131:  * @arg:  The String with which the range must be replaced
        !          6132:  * @exc:  The GdomeException Object ref
        !          6133:  *
        !          6134:  * Replace the characters starting at the specified 16-bit unit @offset with
        !          6135:  * the specified string. If the sum of @offset and @count exceeds length, then
        !          6136:  * all 16-bit units to the end of the data are replaced;
        !          6137:  *
        !          6138:  * %GDOME_INDEX_SIZE_ERR: Raised if the specified @offset is greater than the
        !          6139:  * number of 16-bit units in data.
        !          6140:  * %GDOME_NO_MODIFICATION_ALLOWED_ERR: Raised when the node is readonly.
        !          6141:  */
        !          6142: void
        !          6143: gdome_cds_replaceData (GdomeCDATASection *self, gulong offset, gulong count, GdomeDOMString *arg, GdomeException *exc)
        !          6144: {
        !          6145:  if (self == NULL) {
        !          6146:    *exc = GDOME_NULL_POINTER_ERR;
        !          6147:    return;
        !          6148:  }
        !          6149:  if (((Gdome_xml_CharacterData *)self)->n == NULL) {
        !          6150:    *exc = GDOME_INVALID_STATE_ERR;
        !          6151:    return;
        !          6152:  }
        !          6153:  *exc = 0;
        !          6154:  ((Gdome_xml_CDATASection *)self)->vtab->super.super.replaceData ((GdomeCharacterData *)self, offset, count, arg, exc);
        !          6155: }
        !          6156: /**
        !          6157:  * gdome_cds_substringData:
        !          6158:  * @self:  The CharacterData Object ref
        !          6159:  * @offset:  Start offset of substring to extract
        !          6160:  * @count:  The number of 16-bit units to extract
        !          6161:  * @exc:  The Exception Object ref
        !          6162:  *
        !          6163:  * Extracts a range of data from the node.
        !          6164:  *
        !          6165:  * %GDOME_INDEX_SIZE_ERR: Raised if the specified @offset is greater than the
        !          6166:  * number of 16-bit units in data.
        !          6167:  * Returns: The specified substring. If the sum of @offset and @count exceeds
        !          6168:  * the length, then all 16-bit units to the end of the data are returned.
        !          6169:  */
        !          6170: GdomeDOMString *
        !          6171: gdome_cds_substringData (GdomeCDATASection *self, gulong offset, gulong count, GdomeException *exc)
        !          6172: {
        !          6173:  if (self == NULL) {
        !          6174:    *exc = GDOME_NULL_POINTER_ERR;
        !          6175:    return NULL;
        !          6176:  }
        !          6177:  if (((Gdome_xml_CharacterData *)self)->n == NULL) {
        !          6178:    *exc = GDOME_INVALID_STATE_ERR;
        !          6179:    return NULL;
        !          6180:  }
        !          6181:  *exc = 0;
        !          6182:  return ((Gdome_xml_CDATASection *)self)->vtab->super.super.substringData ((GdomeCharacterData *)self, offset, count, exc);
        !          6183: }
        !          6184: /**
        !          6185:  * gdome_cds_attributes:
        !          6186:  * @self:  Node Object ref
        !          6187:  * @exc:  Exception Object ref
        !          6188:  *
        !          6189:  * Returns: a NamedNodeMap containing the attributes of this node (if it is an
        !          6190:  * Element) or %NULL otherwise.
        !          6191:  */
        !          6192: GdomeNamedNodeMap *
        !          6193: gdome_cds_attributes (GdomeCDATASection *self, GdomeException *exc)
        !          6194: {
        !          6195:  if (self == NULL) {
        !          6196:    *exc = GDOME_NULL_POINTER_ERR;
        !          6197:    return NULL;
        !          6198:  }
        !          6199:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          6200:    *exc = GDOME_INVALID_STATE_ERR;
        !          6201:    return NULL;
        !          6202:  }
        !          6203:  *exc = 0;
        !          6204:  return ((Gdome_xml_CDATASection *)self)->vtab->super.super.super.attributes ((GdomeNode *)self, exc);
        !          6205: }
        !          6206: /**
        !          6207:  * gdome_cds_childNodes:
        !          6208:  * @self:  Node Object ref
        !          6209:  * @exc:  Exception Object ref
        !          6210:  *
        !          6211:  * Returns: a NodeList that contains all children of this node. If there are no
        !          6212:  * children, this is a NodeList containing no nodes.  Note that attributes are
        !          6213:  * not considered to be children of element nodes - use gdome_n_attributes to
        !          6214:  * obtain the attributes.
        !          6215:  */
        !          6216: GdomeNodeList *
        !          6217: gdome_cds_childNodes (GdomeCDATASection *self, GdomeException *exc)
        !          6218: {
        !          6219:  if (self == NULL) {
        !          6220:    *exc = GDOME_NULL_POINTER_ERR;
        !          6221:    return NULL;
        !          6222:  }
        !          6223:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          6224:    *exc = GDOME_INVALID_STATE_ERR;
        !          6225:    return NULL;
        !          6226:  }
        !          6227:  *exc = 0;
        !          6228:  return ((Gdome_xml_CDATASection *)self)->vtab->super.super.super.childNodes ((GdomeNode *)self, exc);
        !          6229: }
        !          6230: /**
        !          6231:  * gdome_cds_firstChild:
        !          6232:  * @self:  Node Object ref
        !          6233:  * @exc:  Exception Object ref
        !          6234:  * 
        !          6235:  * Returns: the first child of this node. If there is no such node,
        !          6236:  * this returns %NULL.
        !          6237:  */
        !          6238: GdomeNode *
        !          6239: gdome_cds_firstChild (GdomeCDATASection *self, GdomeException *exc)
        !          6240: {
        !          6241:  if (self == NULL) {
        !          6242:    *exc = GDOME_NULL_POINTER_ERR;
        !          6243:    return NULL;
        !          6244:  }
        !          6245:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          6246:    *exc = GDOME_INVALID_STATE_ERR;
        !          6247:    return NULL;
        !          6248:  }
        !          6249:  *exc = 0;
        !          6250:  return ((Gdome_xml_CDATASection *)self)->vtab->super.super.super.firstChild ((GdomeNode *)self, exc);
        !          6251: }
        !          6252: /**
        !          6253:  * gdome_cds_lastChild:
        !          6254:  * @self:  Node Object ref
        !          6255:  * @exc:  Exception Object ref
        !          6256:  *
        !          6257:  * Returns: the last child of this node. If there is no such node,
        !          6258:  * this returns %NULL.
        !          6259:  */
        !          6260: GdomeNode *
        !          6261: gdome_cds_lastChild (GdomeCDATASection *self, GdomeException *exc)
        !          6262: {
        !          6263:  if (self == NULL) {
        !          6264:    *exc = GDOME_NULL_POINTER_ERR;
        !          6265:    return NULL;
        !          6266:  }
        !          6267:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          6268:    *exc = GDOME_INVALID_STATE_ERR;
        !          6269:    return NULL;
        !          6270:  }
        !          6271:  *exc = 0;
        !          6272:  return ((Gdome_xml_CDATASection *)self)->vtab->super.super.super.lastChild ((GdomeNode *)self, exc);
        !          6273: }
        !          6274: /**
        !          6275:  * gdome_cds_localName:
        !          6276:  * @self:  Node Objects ref
        !          6277:  * @exc:  Exception Object ref
        !          6278:  *
        !          6279:  * Returns: the local part of the qualified name of this node.
        !          6280:  * For nodes of any type other than %GDOME_ELEMENT_NODE and
        !          6281:  * %GDOME_ATTRIBUTE_NODE and nodes created with a DOM Level 1 method, this is
        !          6282:  * always %NULL.
        !          6283:  */
        !          6284: GdomeDOMString *
        !          6285: gdome_cds_localName (GdomeCDATASection *self, GdomeException *exc)
        !          6286: {
        !          6287:  if (self == NULL) {
        !          6288:    *exc = GDOME_NULL_POINTER_ERR;
        !          6289:    return NULL;
        !          6290:  }
        !          6291:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          6292:    *exc = GDOME_INVALID_STATE_ERR;
        !          6293:    return NULL;
        !          6294:  }
        !          6295:  *exc = 0;
        !          6296:  return ((Gdome_xml_CDATASection *)self)->vtab->super.super.super.localName ((GdomeNode *)self, exc);
        !          6297: }
        !          6298: /**
        !          6299:  * gdome_cds_namespaceURI:
        !          6300:  * @self:  Node Objects ref
        !          6301:  * @exc:  Exception Object ref
        !          6302:  *
        !          6303:  * Returns: the namespace URI of this node, or %NULL if it is unspecified.
        !          6304:  * For nodes of any type other than %GDOME_ELEMENT_NODE and
        !          6305:  * %GDOME_ATTRIBUTE_NODE and nodes created with a DOM Level 1 method, this is
        !          6306:  * always %NULL.
        !          6307:  */
        !          6308: GdomeDOMString *
        !          6309: gdome_cds_namespaceURI (GdomeCDATASection *self, GdomeException *exc)
        !          6310: {
        !          6311:  if (self == NULL) {
        !          6312:    *exc = GDOME_NULL_POINTER_ERR;
        !          6313:    return NULL;
        !          6314:  }
        !          6315:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          6316:    *exc = GDOME_INVALID_STATE_ERR;
        !          6317:    return NULL;
        !          6318:  }
        !          6319:  *exc = 0;
        !          6320:  return ((Gdome_xml_CDATASection *)self)->vtab->super.super.super.namespaceURI ((GdomeNode *)self, exc);
        !          6321: }
        !          6322: /**
        !          6323:  * gdome_cds_nextSibling:
        !          6324:  * @self:  Node Object ref
        !          6325:  * @exc:  Exception Object ref
        !          6326:  *
        !          6327:  * Returns: the node immediately following this node. If there is no such
        !          6328:  * node, this returns %NULL.
        !          6329:  */
        !          6330: GdomeNode *
        !          6331: gdome_cds_nextSibling (GdomeCDATASection *self, GdomeException *exc)
        !          6332: {
        !          6333:  if (self == NULL) {
        !          6334:    *exc = GDOME_NULL_POINTER_ERR;
        !          6335:    return NULL;
        !          6336:  }
        !          6337:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          6338:    *exc = GDOME_INVALID_STATE_ERR;
        !          6339:    return NULL;
        !          6340:  }
        !          6341:  *exc = 0;
        !          6342:  return ((Gdome_xml_CDATASection *)self)->vtab->super.super.super.nextSibling ((GdomeNode *)self, exc);
        !          6343: }
        !          6344: /**
        !          6345:  * gdome_cds_nodeName:
        !          6346:  * @self:  Node Object ref
        !          6347:  * @exc:  Exception Object ref
        !          6348:  *
        !          6349:  * Returns: the name of this node, depending on its type.
        !          6350:  */
        !          6351: GdomeDOMString *
        !          6352: gdome_cds_nodeName (GdomeCDATASection *self, GdomeException *exc)
        !          6353: {
        !          6354:  if (self == NULL) {
        !          6355:    *exc = GDOME_NULL_POINTER_ERR;
        !          6356:    return NULL;
        !          6357:  }
        !          6358:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          6359:    *exc = GDOME_INVALID_STATE_ERR;
        !          6360:    return NULL;
        !          6361:  }
        !          6362:  *exc = 0;
        !          6363:  return ((Gdome_xml_CDATASection *)self)->vtab->super.super.super.nodeName ((GdomeNode *)self, exc);
        !          6364: }
        !          6365: /**
        !          6366:  * gdome_cds_nodeType:
        !          6367:  * @self:  Node Object ref
        !          6368:  * @exc:  Exception Object ref
        !          6369:  *
        !          6370:  * Returns: an integer bigger than %0 representing the type of the underlying
        !          6371:  * object or %0 on error.
        !          6372:  */
        !          6373: unsigned short
        !          6374: gdome_cds_nodeType (GdomeCDATASection *self, GdomeException *exc)
        !          6375: {
        !          6376:  if (self == NULL) {
        !          6377:    *exc = GDOME_NULL_POINTER_ERR;
        !          6378:    return 0;
        !          6379:  }
        !          6380:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          6381:    *exc = GDOME_INVALID_STATE_ERR;
        !          6382:    return 0;
        !          6383:  }
        !          6384:  *exc = 0;
        !          6385:  return ((Gdome_xml_CDATASection *)self)->vtab->super.super.super.nodeType ((GdomeNode *)self, exc);
        !          6386: }
        !          6387: /**
        !          6388:  * gdome_cds_nodeValue:
        !          6389:  * @self:  Node Object ref
        !          6390:  * @exc:  Exception Object ref
        !          6391:  *
        !          6392:  * Returns: the value of this node, depending on its type.
        !          6393:  */
        !          6394: GdomeDOMString *
        !          6395: gdome_cds_nodeValue (GdomeCDATASection *self, GdomeException *exc)
        !          6396: {
        !          6397:  if (self == NULL) {
        !          6398:    *exc = GDOME_NULL_POINTER_ERR;
        !          6399:    return NULL;
        !          6400:  }
        !          6401:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          6402:    *exc = GDOME_INVALID_STATE_ERR;
        !          6403:    return NULL;
        !          6404:  }
        !          6405:  *exc = 0;
        !          6406:  return ((Gdome_xml_CDATASection *)self)->vtab->super.super.super.nodeValue ((GdomeNode *)self, exc);
        !          6407: }
        !          6408: /**
        !          6409:  * gdome_cds_set_nodeValue:
        !          6410:  * @self:  Node Object ref
        !          6411:  * @nodeValue:  The new value for this node.
        !          6412:  * @exc:  Exception Object ref
        !          6413:  *
        !          6414:  * Sets The value of this node, depending on its type.
        !          6415:  *
        !          6416:  * %GDOME_NO_MODIFICATION_ALLOWED_ERR: Raised when the node is readonly.
        !          6417:  */
        !          6418: void
        !          6419: gdome_cds_set_nodeValue (GdomeCDATASection *self, GdomeDOMString *nodeValue, GdomeException *exc)
        !          6420: {
        !          6421:  if (self == NULL) {
        !          6422:    *exc = GDOME_NULL_POINTER_ERR;
        !          6423:    return;
        !          6424:  }
        !          6425:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          6426:    *exc = GDOME_INVALID_STATE_ERR;
        !          6427:    return;
        !          6428:  }
        !          6429:  *exc = 0;
        !          6430:  ((Gdome_xml_CDATASection *)self)->vtab->super.super.super.set_nodeValue ((GdomeNode *)self, nodeValue, exc);
        !          6431: }
        !          6432: /**
        !          6433:  * gdome_cds_ownerDocument:
        !          6434:  * @self:  Node Objects ref
        !          6435:  * @exc:  Exception Object ref
        !          6436:  *
        !          6437:  * Returns: the documment object associated with this node. This is also the
        !          6438:  * Document object used to create new nodes. When this node is a Document or a
        !          6439:  * DocumentType which is not used with any Document yet, this is %NULL.
        !          6440:  */
        !          6441: GdomeDocument *
        !          6442: gdome_cds_ownerDocument (GdomeCDATASection *self, GdomeException *exc)
        !          6443: {
        !          6444:  if (self == NULL) {
        !          6445:    *exc = GDOME_NULL_POINTER_ERR;
        !          6446:    return NULL;
        !          6447:  }
        !          6448:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          6449:    *exc = GDOME_INVALID_STATE_ERR;
        !          6450:    return NULL;
        !          6451:  }
        !          6452:  *exc = 0;
        !          6453:  return ((Gdome_xml_CDATASection *)self)->vtab->super.super.super.ownerDocument ((GdomeNode *)self, exc);
        !          6454: }
        !          6455: /**
        !          6456:  * gdome_cds_parentNode:
        !          6457:  * @self: Node Object ref
        !          6458:  * @exc: Exception Object ref
        !          6459:  *
        !          6460:  * Returns: the parent of this node. All nodes, except Attr,
        !          6461:  * Document, DocumentFragment, Entity, and Notation may have a parent. However,
        !          6462:  * if a node has just been created and not yet added to the tree, or if it has
        !          6463:  * been removed from the tree, this is %NULL.
        !          6464:  */
        !          6465: GdomeNode *
        !          6466: gdome_cds_parentNode (GdomeCDATASection *self, GdomeException *exc)
        !          6467: {
        !          6468:  if (self == NULL) {
        !          6469:    *exc = GDOME_NULL_POINTER_ERR;
        !          6470:    return NULL;
        !          6471:  }
        !          6472:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          6473:    *exc = GDOME_INVALID_STATE_ERR;
        !          6474:    return NULL;
        !          6475:  }
        !          6476:  *exc = 0;
        !          6477:  return ((Gdome_xml_CDATASection *)self)->vtab->super.super.super.parentNode ((GdomeNode *)self, exc);
        !          6478: }
        !          6479: /**
        !          6480:  * gdome_cds_prefix:
        !          6481:  * @self:  Node Objects ref
        !          6482:  * @exc:  Exception Object ref
        !          6483:  *
        !          6484:  * Returns: the namespace prefix of this node, or %NULL if it is unspecified.
        !          6485:  * For nodes of any type other than %GDOME_ELEMENT_NODE and
        !          6486:  * %GDOME_ATTRIBUTE_NODE and nodes created with a DOM Level 1 method, this is
        !          6487:  * always %NULL.
        !          6488:  */
        !          6489: GdomeDOMString *
        !          6490: gdome_cds_prefix (GdomeCDATASection *self, GdomeException *exc)
        !          6491: {
        !          6492:  if (self == NULL) {
        !          6493:    *exc = GDOME_NULL_POINTER_ERR;
        !          6494:    return NULL;
        !          6495:  }
        !          6496:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          6497:    *exc = GDOME_INVALID_STATE_ERR;
        !          6498:    return NULL;
        !          6499:  }
        !          6500:  *exc = 0;
        !          6501:  return ((Gdome_xml_CDATASection *)self)->vtab->super.super.super.prefix ((GdomeNode *)self, exc);
        !          6502: }
        !          6503: /**
        !          6504:  * gdome_cds_set_prefix:
        !          6505:  * @self:  Node Object ref
        !          6506:  * @prefix:  The new prefix for this node.
        !          6507:  * @exc:  Exception Object ref
        !          6508:  *
        !          6509:  * Sets a new nemaspace prefix for this node.
        !          6510:  *
        !          6511:  * %GDOME_NO_MODIFICATION_ALLOWED_ERR: Raised when the node is readonly.
        !          6512:  * %GDOME_NAMESPACE_ERR: Raised if the specified @prefix is malformed per the
        !          6513:  * Namespaces in XML specification, if the namespaceURI of this node is %NULL,
        !          6514:  * if the specified prefix is "xml" and the namespaceURI of this node is
        !          6515:  * different from "http://www.w3.org/XML/1998/namespace", if this node is an
        !          6516:  * attribute and the specified prefix is "xmlns" and the namespaceURI of this
        !          6517:  * node is different from "http://www.w3.org/2000/xmlns/", or if this node is
        !          6518:  * an attribute and the qualifiedName of this node is "xmlns".
        !          6519:  */
        !          6520: void
        !          6521: gdome_cds_set_prefix (GdomeCDATASection *self, GdomeDOMString *prefix, GdomeException *exc)
        !          6522: {
        !          6523:  if (self == NULL) {
        !          6524:    *exc = GDOME_NULL_POINTER_ERR;
        !          6525:    return;
        !          6526:  }
        !          6527:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          6528:    *exc = GDOME_INVALID_STATE_ERR;
        !          6529:    return;
        !          6530:  }
        !          6531:  *exc = 0;
        !          6532:  ((Gdome_xml_CDATASection *)self)->vtab->super.super.super.set_prefix ((GdomeNode *)self, prefix, exc);
        !          6533: }
        !          6534: /**
        !          6535:  * gdome_cds_previousSibling:
        !          6536:  * @self:  Node Object ref
        !          6537:  * @exc:  Exception Object ref
        !          6538:  *
        !          6539:  * Returns: the node immediately preceding this node. If there is no such
        !          6540:  * node, this returns %NULL.
        !          6541:  */
        !          6542: GdomeNode *
        !          6543: gdome_cds_previousSibling (GdomeCDATASection *self, GdomeException *exc)
        !          6544: {
        !          6545:  if (self == NULL) {
        !          6546:    *exc = GDOME_NULL_POINTER_ERR;
        !          6547:    return NULL;
        !          6548:  }
        !          6549:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          6550:    *exc = GDOME_INVALID_STATE_ERR;
        !          6551:    return NULL;
        !          6552:  }
        !          6553:  *exc = 0;
        !          6554:  return ((Gdome_xml_CDATASection *)self)->vtab->super.super.super.previousSibling ((GdomeNode *)self, exc);
        !          6555: }
        !          6556: /**
        !          6557:  * gdome_cds_ref:
        !          6558:  * @self:  Node Object ref
        !          6559:  * @exc:  Exception Object ref
        !          6560:  *
        !          6561:  * Increase the reference count of the specified Node.
        !          6562:  */
        !          6563: void
        !          6564: gdome_cds_ref (GdomeCDATASection *self, GdomeException *exc)
        !          6565: {
        !          6566:  if (self == NULL) {
        !          6567:    *exc = GDOME_NULL_POINTER_ERR;
        !          6568:    return;
        !          6569:  }
        !          6570:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          6571:    *exc = GDOME_INVALID_STATE_ERR;
        !          6572:    return;
        !          6573:  }
        !          6574:  *exc = 0;
        !          6575:  ((Gdome_xml_CDATASection *)self)->vtab->super.super.super.ref ((GdomeNode *)self, exc);
        !          6576: }
        !          6577: /**
        !          6578:  * gdome_cds_unref:
        !          6579:  * @self:  Node Object ref
        !          6580:  * @exc:  Exception Object ref
        !          6581:  *
        !          6582:  * Decrease the reference count of the specified Node. Free the Node structure
        !          6583:  * if the Node will have zero reference.
        !          6584:  */
        !          6585: void
        !          6586: gdome_cds_unref (GdomeCDATASection *self, GdomeException *exc)
        !          6587: {
        !          6588:  if (self == NULL) {
        !          6589:    *exc = GDOME_NULL_POINTER_ERR;
        !          6590:    return;
        !          6591:  }
        !          6592:  *exc = 0;
        !          6593:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          6594:    if (((Gdome_xml_Node *)self)->refcnt > 0)
        !          6595:      ((Gdome_xml_Node *)self)->refcnt--;
        !          6596: 
        !          6597:    if (((Gdome_xml_Node *)self)->refcnt == 0 && ((Gdome_xml_Node *)self)->ll == NULL) {
        !          6598: #ifdef DEBUG_REFCNT
        !          6599:      gdome_refdbg_delRef ((void *)self, GDOME_REFDBG_NODE);
        !          6600: #endif
        !          6601:      g_free (self);
        !          6602:    }
        !          6603:    return;
        !          6604:  }
        !          6605:  ((Gdome_xml_CDATASection *)self)->vtab->super.super.super.unref ((GdomeNode *)self, exc);
        !          6606: }
        !          6607: /**
        !          6608:  * gdome_cds_query_interface:
        !          6609:  * @self:  Node Object ref
        !          6610:  * @interface:  interface needed
        !          6611:  * @exc:  Exception Object ref
        !          6612:  *
        !          6613:  * Returns: a reference to this object that implements the @interface needed,
        !          6614:  *          or %NULL if the @interface is not supported by this Object.
        !          6615:  */
        !          6616: gpointer
        !          6617: gdome_cds_query_interface (GdomeCDATASection *self, const char *interface, GdomeException *exc)
        !          6618: {
        !          6619:  if (self == NULL) {
        !          6620:    *exc = GDOME_NULL_POINTER_ERR;
        !          6621:    return NULL;
        !          6622:  }
        !          6623:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          6624:    *exc = GDOME_INVALID_STATE_ERR;
        !          6625:    return NULL;
        !          6626:  }
        !          6627:  *exc = 0;
        !          6628:  return ((Gdome_xml_CDATASection *)self)->vtab->super.super.super.query_interface ((GdomeNode *)self, interface, exc);
        !          6629: }
        !          6630: /**
        !          6631:  * gdome_cds_appendChild:
        !          6632:  * @self:  Node Object ref
        !          6633:  * @newChild:  The node to add
        !          6634:  * @exc:  Exception Object ref
        !          6635:  *
        !          6636:  * Adds the node @newChild to the end of the list of children of this node.
        !          6637:  * If the @newChild is already in the tree, it is first removed. If it is a
        !          6638:  * DocumentFragment node, the entire contents of the document fragment are
        !          6639:  * moved into the child list of this node
        !          6640:  *
        !          6641:  * %GDOME_HIERARCHY_REQUEST_ERR: Raised if this node is of a type that does not
        !          6642:  * allow children of the type of the @newChild node, or if the node to append is
        !          6643:  * one of this node's ancestors or this node itself.
        !          6644:  * %GDOME_WRONG_DOCUMENT_ERR: Raised if @newChild was created from a different
        !          6645:  * document than the one that created this node.
        !          6646:  * %GDOME_NO_MODIFICATION_ALLOWED_ERR: Raised when the node is readonly.
        !          6647:  * Returns: the node added.
        !          6648:  */
        !          6649: GdomeNode *
        !          6650: gdome_cds_appendChild (GdomeCDATASection *self, GdomeNode *newChild, GdomeException *exc)
        !          6651: {
        !          6652:  if (self == NULL) {
        !          6653:    *exc = GDOME_NULL_POINTER_ERR;
        !          6654:    return NULL;
        !          6655:  }
        !          6656:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          6657:    *exc = GDOME_INVALID_STATE_ERR;
        !          6658:    return NULL;
        !          6659:  }
        !          6660:  *exc = 0;
        !          6661:  return ((Gdome_xml_CDATASection *)self)->vtab->super.super.super.appendChild ((GdomeNode *)self, newChild, exc);
        !          6662: }
        !          6663: /**
        !          6664:  * gdome_cds_cloneNode:
        !          6665:  * @self:  Node Object ref
        !          6666:  * @deep:  If true, recursively clone the subtree under the specified node;
        !          6667:  *         if false, clone only the node itself (and its attributes, if it is
        !          6668:  *         an Element).
        !          6669:  * @exc:  Exception Object ref
        !          6670:  *
        !          6671:  * Makes a duplicate of this node, i.e., serves as a generic copy
        !          6672:  * constructor for nodes. The duplicate node has no parent; (parentNode is
        !          6673:  * %NULL).
        !          6674:  * %GDOME_DOCUMENT_TYPE_NODE, %GDOME_NOTATION_NODE and %GDOME_ENTITY_NODE
        !          6675:  * nodes are not supported.
        !          6676:  *
        !          6677:  * %GDOME_NOT_SUPPORTED_ERR: Raised if the type of node being cloned is not
        !          6678:  * supported.
        !          6679:  * Returns: the duplicate node.
        !          6680:  */
        !          6681: GdomeNode *
        !          6682: gdome_cds_cloneNode (GdomeCDATASection *self, GdomeBoolean deep, GdomeException *exc)
        !          6683: {
        !          6684:  if (self == NULL) {
        !          6685:    *exc = GDOME_NULL_POINTER_ERR;
        !          6686:    return NULL;
        !          6687:  }
        !          6688:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          6689:    *exc = GDOME_INVALID_STATE_ERR;
        !          6690:    return NULL;
        !          6691:  }
        !          6692:  *exc = 0;
        !          6693:  return ((Gdome_xml_CDATASection *)self)->vtab->super.super.super.cloneNode ((GdomeNode *)self, deep, exc);
        !          6694: }
        !          6695: /**
        !          6696:  * gdome_cds_hasAttributes:
        !          6697:  * @self:  Node Object ref
        !          6698:  * @exc:  Exception Object ref
        !          6699:  *
        !          6700:  * Returns: %TRUE if this node has any attributes, %FALSE otherwise.
        !          6701:  */
        !          6702: GdomeBoolean
        !          6703: gdome_cds_hasAttributes (GdomeCDATASection *self, GdomeException *exc)
        !          6704: {
        !          6705:  if (self == NULL) {
        !          6706:    *exc = GDOME_NULL_POINTER_ERR;
        !          6707:    return FALSE;
        !          6708:  }
        !          6709:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          6710:    *exc = GDOME_INVALID_STATE_ERR;
        !          6711:    return FALSE;
        !          6712:  }
        !          6713:  *exc = 0;
        !          6714:  return ((Gdome_xml_CDATASection *)self)->vtab->super.super.super.hasAttributes ((GdomeNode *)self, exc);
        !          6715: }
        !          6716: /**
        !          6717:  * gdome_cds_hasChildNodes:
        !          6718:  * @self:  Node Object ref
        !          6719:  * @exc:  Exception Object ref
        !          6720:  *
        !          6721:  * Returns: %TRUE if this node has any children, %FALSE otherwise.
        !          6722:  */
        !          6723: GdomeBoolean
        !          6724: gdome_cds_hasChildNodes (GdomeCDATASection *self, GdomeException *exc)
        !          6725: {
        !          6726:  if (self == NULL) {
        !          6727:    *exc = GDOME_NULL_POINTER_ERR;
        !          6728:    return FALSE;
        !          6729:  }
        !          6730:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          6731:    *exc = GDOME_INVALID_STATE_ERR;
        !          6732:    return FALSE;
        !          6733:  }
        !          6734:  *exc = 0;
        !          6735:  return ((Gdome_xml_CDATASection *)self)->vtab->super.super.super.hasChildNodes ((GdomeNode *)self, exc);
        !          6736: }
        !          6737: /**
        !          6738:  * gdome_cds_insertBefore:
        !          6739:  * @self:  Node Object ref
        !          6740:  * @newChild:  The new node to put in the child list
        !          6741:  * @refChild:  the reference node, i.e., the node before which the new node
        !          6742:  *             must be inserted.
        !          6743:  * @exc:  Exception Object ref
        !          6744:  *
        !          6745:  * Inserts the node @newChild before the existing child node @refChild. If
        !          6746:  * @refChild is %NULL, insert @newChild at the end of the list of children.
        !          6747:  * If @newChild is a DocumentFragment node, all of its children are inserted,
        !          6748:  * in the same order, before @refChild. If the @newChild is already in the
        !          6749:  * tree, it is first removed.
        !          6750:  *
        !          6751:  * %GDOME_HIERARCHY_REQUEST_ERR: Raised if this node is of a type that does not
        !          6752:  * allow children of the type of the @newChild node, or if the node to insert is
        !          6753:  * one of this node's ancestors or this node itself.
        !          6754:  * %GDOME_WRONG_DOCUMENT_ERR: Raised if @newChild was created from a different
        !          6755:  * document than the one that created this node.
        !          6756:  * %GDOME_NOT_FOUND_ERR: Raised if @refChild is not a child of this node.
        !          6757:  * %GDOME_NO_MODIFICATION_ALLOWED_ERR: Raised when the node is readonly.
        !          6758:  * Returns: the node being inserted.
        !          6759:  */
        !          6760: GdomeNode *
        !          6761: gdome_cds_insertBefore (GdomeCDATASection *self, GdomeNode *newChild, GdomeNode *refChild, GdomeException *exc)
        !          6762: {
        !          6763:  if (self == NULL) {
        !          6764:    *exc = GDOME_NULL_POINTER_ERR;
        !          6765:    return NULL;
        !          6766:  }
        !          6767:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          6768:    *exc = GDOME_INVALID_STATE_ERR;
        !          6769:    return NULL;
        !          6770:  }
        !          6771:  *exc = 0;
        !          6772:  return ((Gdome_xml_CDATASection *)self)->vtab->super.super.super.insertBefore ((GdomeNode *)self, newChild, refChild, exc);
        !          6773: }
        !          6774: /**
        !          6775:  * gdome_cds_isSupported:
        !          6776:  * @self:  Node Object ref
        !          6777:  * @feature:  The name of the feature to test.
        !          6778:  * @version:  This is the version number of the feature to test. In Level 2,
        !          6779:  *            version 1, this is the string "2.0". If the version is not
        !          6780:  *            specified, supporting any version of the feature will cause the
        !          6781:  *            method to return %TRUE.
        !          6782:  * @exc:  Exception Object ref
        !          6783:  *
        !          6784:  * Tests whether the DOM implementation implements a specific feature and that
        !          6785:  * feature is supported by this node.
        !          6786:  * Returns: %TRUE if the specified feature is supported on this node, %FALSE
        !          6787:  * otherwise.
        !          6788:  */
        !          6789: GdomeBoolean
        !          6790: gdome_cds_isSupported (GdomeCDATASection *self, GdomeDOMString *feature, GdomeDOMString *version, GdomeException *exc)
        !          6791: {
        !          6792:  if (self == NULL) {
        !          6793:    *exc = GDOME_NULL_POINTER_ERR;
        !          6794:    return FALSE;
        !          6795:  }
        !          6796:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          6797:    *exc = GDOME_INVALID_STATE_ERR;
        !          6798:    return FALSE;
        !          6799:  }
        !          6800:  *exc = 0;
        !          6801:  return ((Gdome_xml_CDATASection *)self)->vtab->super.super.super.isSupported ((GdomeNode *)self, feature, version, exc);
        !          6802: }
        !          6803: /**
        !          6804:  * gdome_cds_normalize:
        !          6805:  * @self:  Node Object ref
        !          6806:  * @exc:  Exception Object ref
        !          6807:  *
        !          6808:  * Puts all Text nodes in the full depth of the sub-tree underneath this Node,
        !          6809:  * including attribute nodes, into a "normal" form where only structure (e.g.,
        !          6810:  * elements, comments, processing instructions, CDATA sections, and entity
        !          6811:  * references) separates Text nodes, i.e., there are neither adjacent Text
        !          6812:  * nodes nor empty Text nodes.
        !          6813:  */
        !          6814: void
        !          6815: gdome_cds_normalize (GdomeCDATASection *self, GdomeException *exc)
        !          6816: {
        !          6817:  if (self == NULL) {
        !          6818:    *exc = GDOME_NULL_POINTER_ERR;
        !          6819:    return;
        !          6820:  }
        !          6821:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          6822:    *exc = GDOME_INVALID_STATE_ERR;
        !          6823:    return;
        !          6824:  }
        !          6825:  *exc = 0;
        !          6826:  ((Gdome_xml_CDATASection *)self)->vtab->super.super.super.normalize ((GdomeNode *)self, exc);
        !          6827: }
        !          6828: /**
        !          6829:  * gdome_cds_removeChild:
        !          6830:  * @self:  Node Object ref
        !          6831:  * @oldChild:  The node being removed
        !          6832:  * @exc:  Exception Object ref
        !          6833:  *
        !          6834:  * Removes the child node indicated by @oldChild from the list of children, and
        !          6835:  * returns it.
        !          6836:  *
        !          6837:  * %GDOME_NOT_FOUND_ERR: Raised if @oldChild is not a child of this node.
        !          6838:  * %GDOME_NO_MODIFICATION_ALLOWED_ERR: Raised when the node is readonly.
        !          6839:  * Returns: the node removed.
        !          6840:  */
        !          6841: GdomeNode *
        !          6842: gdome_cds_removeChild (GdomeCDATASection *self, GdomeNode *oldChild, GdomeException *exc)
        !          6843: {
        !          6844:  if (self == NULL) {
        !          6845:    *exc = GDOME_NULL_POINTER_ERR;
        !          6846:    return NULL;
        !          6847:  }
        !          6848:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          6849:    *exc = GDOME_INVALID_STATE_ERR;
        !          6850:    return NULL;
        !          6851:  }
        !          6852:  *exc = 0;
        !          6853:  return ((Gdome_xml_CDATASection *)self)->vtab->super.super.super.removeChild ((GdomeNode *)self, oldChild, exc);
        !          6854: }
        !          6855: /**
        !          6856:  * gdome_cds_replaceChild:
        !          6857:  * @self:  Node Object ref
        !          6858:  * @newChild:  The new node to put in the child list
        !          6859:  * @oldChild:  The node being replaced in the list
        !          6860:  * @exc:  Exception Object ref
        !          6861:  *
        !          6862:  * Replaces the child node @oldChild with @newChild in the list of children,
        !          6863:  * and returns the @oldChild node. If @newChild is a DocumentFragment object,
        !          6864:  * @oldChild is replaced by all of the DocumentFragment children, which are
        !          6865:  * inserted in the same order. If the @newChild is already in the tree, it is
        !          6866:  * first removed.
        !          6867:  *
        !          6868:  * %GDOME_HIERARCHY_REQUEST_ERR: Raised if this node is of a type that does
        !          6869:  * not allow children of the type of the @newChild node, or if the node to put
        !          6870:  * in is one of this node's ancestors or this node itself.
        !          6871:  * %GDOME_WRONG_DOCUMENT_ERR: Raised if @newChild was created from a different
        !          6872:  * document than the one that created this node.
        !          6873:  * %GDOME_NOT_FOUND_ERR: Raised if @oldChild is not a child of this node.
        !          6874:  * %GDOME_NO_MODIFICATION_ALLOWED_ERR: Raised when the node is readonly.
        !          6875:  * Returns: the node replaced.
        !          6876:  */
        !          6877: GdomeNode *
        !          6878: gdome_cds_replaceChild (GdomeCDATASection *self, GdomeNode *newChild, GdomeNode *oldChild, GdomeException *exc)
        !          6879: {
        !          6880:  if (self == NULL) {
        !          6881:    *exc = GDOME_NULL_POINTER_ERR;
        !          6882:    return NULL;
        !          6883:  }
        !          6884:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          6885:    *exc = GDOME_INVALID_STATE_ERR;
        !          6886:    return NULL;
        !          6887:  }
        !          6888:  *exc = 0;
        !          6889:  return ((Gdome_xml_CDATASection *)self)->vtab->super.super.super.replaceChild ((GdomeNode *)self, newChild, oldChild, exc);
        !          6890: }
        !          6891: /**
        !          6892:  * gdome_cds_addEventListener:
        !          6893:  * @self:  Node Object ref
        !          6894:  * @type:  the event type for which the user is registering
        !          6895:  * @listener:  the listener parameter takes an interface implemented by the
        !          6896:  *             user which contains the methods to be called when the event occurs.
        !          6897:  * @useCapture:  if %TRUE, useCapture indicates that the user wishes to initiate
        !          6898:  *               capture. After initiating capture, all events of the specified
        !          6899:  *               type will be dispatched to the registered EventListener before
        !          6900:  *               being dispatched to any EventTargets beneath them in the tree.
        !          6901:  *               Events which are bubbling upward through the tree will not
        !          6902:  *               trigger an EventListener designated to use capture.
        !          6903:  * @exc:  Exception Object ref
        !          6904:  *
        !          6905:  * This method allows the registration of event listeners on the event target.
        !          6906:  * If an EventListener is added to an EventTarget while it is processing an
        !          6907:  * event, it will not be triggered by the current actions but may be triggered
        !          6908:  * during a later stage of event flow, such as the bubbling phase.
        !          6909:  * If multiple identical EventListeners are registered on the same EventTarget
        !          6910:  * with the same parameters the duplicate instances are discarded. They do not
        !          6911:  * cause the EventListener to be called twice and since they are discarded
        !          6912:  * they do not need to be removed with the removeEventListener method.
        !          6913:  */
        !          6914: void
        !          6915: gdome_cds_addEventListener (GdomeCDATASection *self, GdomeDOMString *type, GdomeEventListener *listener, GdomeBoolean useCapture, GdomeException *exc)
        !          6916: {
        !          6917:  if (self == NULL) {
        !          6918:    *exc = GDOME_NULL_POINTER_ERR;
        !          6919:    return;
        !          6920:  }
        !          6921:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          6922:    *exc = GDOME_INVALID_STATE_ERR;
        !          6923:    return;
        !          6924:  }
        !          6925:  *exc = 0;
        !          6926:  ((Gdome_xml_CDATASection *)self)->vtab->super.super.super.addEventListener ((GdomeNode *)self, type, listener, useCapture, exc);
        !          6927: }
        !          6928: /**
        !          6929:  * gdome_cds_removeEventListener:
        !          6930:  * @self:  Node Object ref
        !          6931:  * @type:  Specifies the event type of the EventListener being removed.
        !          6932:  * @listener:  The EventListener parameter indicates the EventListener to be
        !          6933:  *             removed.
        !          6934:  * @useCapture:  Specifies whether the EventListener being removed was
        !          6935:  *               registered as a capturing listener or not. If a listener was
        !          6936:  *               registered twice, one with capture and one without, each must
        !          6937:  *               be removed separately. Removal of a capturing listener does
        !          6938:  *               not affect a non-capturing version of the same listener, and
        !          6939:  *               vice versa.
        !          6940:  * @exc:  Exception Object ref
        !          6941:  *
        !          6942:  * This method allows the removal of event listeners from the event target. If
        !          6943:  * an EventListener is removed from an EventTarget while it is processing an
        !          6944:  * event, it will not be triggered by the current actions. EventListeners can
        !          6945:  * never be invoked after being removed. Calling removeEventListener with
        !          6946:  * arguments which do not identify any currently registered EventListener on
        !          6947:  * the EventTarget has no effect.
        !          6948:  */
        !          6949: void
        !          6950: gdome_cds_removeEventListener (GdomeCDATASection *self, GdomeDOMString *type, GdomeEventListener *listener, GdomeBoolean useCapture, GdomeException *exc)
        !          6951: {
        !          6952:  if (self == NULL) {
        !          6953:    *exc = GDOME_NULL_POINTER_ERR;
        !          6954:    return;
        !          6955:  }
        !          6956:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          6957:    *exc = GDOME_INVALID_STATE_ERR;
        !          6958:    return;
        !          6959:  }
        !          6960:  *exc = 0;
        !          6961:  ((Gdome_xml_CDATASection *)self)->vtab->super.super.super.removeEventListener ((GdomeNode *)self, type, listener, useCapture, exc);
        !          6962: }
        !          6963: /**
        !          6964:  * gdome_cds_dispatchEvent:
        !          6965:  * @self:  Node Object ref
        !          6966:  * @evt:  Specifies the event type, behavior, and contextual information to be
        !          6967:  *        used in processing the event.
        !          6968:  * @exc:  Exception Object ref
        !          6969:  *
        !          6970:  * This method allows the dispatch of events into the implementations event
        !          6971:  * model. Events dispatched in this manner will have the same capturing and
        !          6972:  * bubbling behavior as events dispatched directly by the implementation. The
        !          6973:  * target of the event is the EventTarget on which dispatchEvent is called.
        !          6974:  *
        !          6975:  * GDOME_UNSPECIFIED_EVENT_TYPE_ERR: Raised if the Event's type was not
        !          6976:  * specified by initializing the event before dispatchEvent was called.
        !          6977:  * Specification of the Event's type as %NULL or an empty string will also
        !          6978:  * trigger this exception.
        !          6979:  * Returns: if preventDefault was called the value is %FALSE, else the value
        !          6980:  *          is %TRUE.
        !          6981:  */
        !          6982: GdomeBoolean
        !          6983: gdome_cds_dispatchEvent (GdomeCDATASection *self, GdomeEvent *evt, GdomeException *exc)
        !          6984: {
        !          6985:  if (self == NULL) {
        !          6986:    *exc = GDOME_NULL_POINTER_ERR;
        !          6987:    return FALSE;
        !          6988:  }
        !          6989:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          6990:    *exc = GDOME_INVALID_STATE_ERR;
        !          6991:    return FALSE;
        !          6992:  }
        !          6993:  *exc = 0;
        !          6994:  return ((Gdome_xml_CDATASection *)self)->vtab->super.super.super.dispatchEvent ((GdomeNode *)self, evt, exc);
        !          6995: }
        !          6996: /**
        !          6997:  * gdome_cds_subTreeDispatchEvent:
        !          6998:  * @self:  Node Object ref
        !          6999:  * @evt:  Specifies the event type, behavior, and contextual information to be
        !          7000:  *        used in processing the event.
        !          7001:  * @exc:  Exception Object ref
        !          7002:  *
        !          7003:  * This method allows the dispatch of events into the implementations event
        !          7004:  * model. Events dispatched in this manner will have the same capturing and
        !          7005:  * bubbling behavior as events dispatched directly by the implementation. The
        !          7006:  * target of the event is any nodes in the subtree of the EventTarget on which
        !          7007:  * dispatchEvent is called.
        !          7008:  *
        !          7009:  * GDOME_UNSPECIFIED_EVENT_TYPE_ERR: Raised if the Event's type was not
        !          7010:  * specified by initializing the event before dispatchEvent was called.
        !          7011:  * Specification of the Event's type as %NULL or an empty string will also
        !          7012:  * trigger this exception.
        !          7013:  */
        !          7014: void
        !          7015: gdome_cds_subTreeDispatchEvent (GdomeCDATASection *self, GdomeEvent *evt, GdomeException *exc)
        !          7016: {
        !          7017:  if (self == NULL) {
        !          7018:    *exc = GDOME_NULL_POINTER_ERR;
        !          7019:    return;
        !          7020:  }
        !          7021:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          7022:    *exc = GDOME_INVALID_STATE_ERR;
        !          7023:    return;
        !          7024:  }
        !          7025:  *exc = 0;
        !          7026:  ((Gdome_xml_CDATASection *)self)->vtab->super.super.super.subTreeDispatchEvent ((GdomeNode *)self, evt, exc);
        !          7027: }
        !          7028: /**
        !          7029:  * gdome_cds_canAppend:
        !          7030:  * @self:  Node Object ref
        !          7031:  * @newChild:  The Node Object ref of the node to test
        !          7032:  * @exc:  Exception Object ref
        !          7033:  *
        !          7034:  * Tests if a @newChild can be added in the child list of this node.
        !          7035:  * Returns: %TRUE if @newChild can be added, %FALSE otherwise.
        !          7036:  */
        !          7037: GdomeBoolean
        !          7038: gdome_cds_canAppend (GdomeCDATASection *self, GdomeNode *newChild, GdomeException *exc)
        !          7039: {
        !          7040:  if (self == NULL) {
        !          7041:    *exc = GDOME_NULL_POINTER_ERR;
        !          7042:    return FALSE;
        !          7043:  }
        !          7044:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          7045:    *exc = GDOME_INVALID_STATE_ERR;
        !          7046:    return FALSE;
        !          7047:  }
        !          7048:  *exc = 0;
        !          7049:  return ((Gdome_xml_CDATASection *)self)->vtab->super.super.super.canAppend ((GdomeNode *)self, newChild, exc);
        !          7050: }
        !          7051: 
        !          7052: /******************************************************************************
        !          7053:           GdomeComment interface API
        !          7054:  ******************************************************************************/
        !          7055: /**
        !          7056:  * gdome_c_data:
        !          7057:  * @self:  The CharacterData Object ref
        !          7058:  * @exc:  The Exception Object ref
        !          7059:  *
        !          7060:  * Returns: the character data of the node that implements this interface.
        !          7061:  */
        !          7062: GdomeDOMString *
        !          7063: gdome_c_data (GdomeComment *self, GdomeException *exc)
        !          7064: {
        !          7065:  if (self == NULL) {
        !          7066:    *exc = GDOME_NULL_POINTER_ERR;
        !          7067:    return NULL;
        !          7068:  }
        !          7069:  if (((Gdome_xml_CharacterData *)self)->n == NULL) {
        !          7070:    *exc = GDOME_INVALID_STATE_ERR;
        !          7071:    return NULL;
        !          7072:  }
        !          7073:  *exc = 0;
        !          7074:  return ((Gdome_xml_Comment *)self)->vtab->super.data ((GdomeCharacterData *)self, exc);
        !          7075: }
        !          7076: /**
        !          7077:  * gdome_c_set_data:
        !          7078:  * @self:  The CharacterData Object ref
        !          7079:  * @data:  The data value for this node
        !          7080:  * @exc:  The Exception Object ref
        !          7081:  *
        !          7082:  * Sets the data value of this node.
        !          7083:  *
        !          7084:  * %GDOME_NO_MODIFICATION_ALLOWED_ERR: Raised when the node is readonly.
        !          7085:  */
        !          7086: void
        !          7087: gdome_c_set_data (GdomeComment *self, GdomeDOMString *data, GdomeException *exc)
        !          7088: {
        !          7089:  if (self == NULL) {
        !          7090:    *exc = GDOME_NULL_POINTER_ERR;
        !          7091:    return;
        !          7092:  }
        !          7093:  if (((Gdome_xml_CharacterData *)self)->n == NULL) {
        !          7094:    *exc = GDOME_INVALID_STATE_ERR;
        !          7095:    return;
        !          7096:  }
        !          7097:  *exc = 0;
        !          7098:  ((Gdome_xml_Comment *)self)->vtab->super.set_data ((GdomeCharacterData *)self, data, exc);
        !          7099: }
        !          7100: /**
        !          7101:  * gdome_c_length:
        !          7102:  * @self:  The CharacterData Object ref
        !          7103:  * @exc:  The GdomeException Object ref
        !          7104:  *
        !          7105:  * Returns: The number of 16-bit units that are available. This may have the
        !          7106:  * value zero, i.e., CharacterData nodes may be empty.
        !          7107:  */
        !          7108: gulong
        !          7109: gdome_c_length (GdomeComment *self, GdomeException *exc)
        !          7110: {
        !          7111:  if (self == NULL) {
        !          7112:    *exc = GDOME_NULL_POINTER_ERR;
        !          7113:    return 0L;
        !          7114:  }
        !          7115:  if (((Gdome_xml_CharacterData *)self)->n == NULL) {
        !          7116:    *exc = GDOME_INVALID_STATE_ERR;
        !          7117:    return 0L;
        !          7118:  }
        !          7119:  *exc = 0;
        !          7120:  return ((Gdome_xml_Comment *)self)->vtab->super.length ((GdomeCharacterData *)self, exc);
        !          7121: }
        !          7122: /**
        !          7123:  * gdome_c_appendData:
        !          7124:  * @self:  The CharacterData Object ref
        !          7125:  * @arg:  The string to append
        !          7126:  * @exc:  The Exception Object ref
        !          7127:  *
        !          7128:  * Append the string to the end of the character data of the node. Upon
        !          7129:  * success, data provides access to the concatenation of data and the
        !          7130:  * string specified.
        !          7131:  *
        !          7132:  * %GDOME_NO_MODIFICATION_ALLOWED_ERR: Raised when the node is readonly.
        !          7133:  */
        !          7134: void
        !          7135: gdome_c_appendData (GdomeComment *self, GdomeDOMString *arg, GdomeException *exc)
        !          7136: {
        !          7137:  if (self == NULL) {
        !          7138:    *exc = GDOME_NULL_POINTER_ERR;
        !          7139:    return;
        !          7140:  }
        !          7141:  if (((Gdome_xml_CharacterData *)self)->n == NULL) {
        !          7142:    *exc = GDOME_INVALID_STATE_ERR;
        !          7143:    return;
        !          7144:  }
        !          7145:  *exc = 0;
        !          7146:  ((Gdome_xml_Comment *)self)->vtab->super.appendData ((GdomeCharacterData *)self, arg, exc);
        !          7147: }
        !          7148: /**
        !          7149:  * gdome_c_deleteData:
        !          7150:  * @self:  The CharacterData Object ref
        !          7151:  * @offset:  The offset from which to start removing
        !          7152:  * @count:  The number of 16-bit units to delete.
        !          7153:  * @exc:  The Exception Object ref
        !          7154:  *
        !          7155:  * Remove a range of 16-bit units from the node. If the sum of @offset and
        !          7156:  * @count exceeds length then all 16-bit units from @offset to the end of the
        !          7157:  * data are deleted. Upon success, data and length reflect the change.
        !          7158:  *
        !          7159:  * %GDOME_INDEX_SIZE_ERR: Raised if the specified offset is greater than the
        !          7160:  * number of 16-bit units in data.
        !          7161:  * %GDOME_NO_MODIFICATION_ALLOWED_ERR: Raised when the node is readonly.
        !          7162:  */
        !          7163: void
        !          7164: gdome_c_deleteData (GdomeComment *self, gulong offset, gulong count, GdomeException *exc)
        !          7165: {
        !          7166:  if (self == NULL) {
        !          7167:    *exc = GDOME_NULL_POINTER_ERR;
        !          7168:    return;
        !          7169:  }
        !          7170:  if (((Gdome_xml_CharacterData *)self)->n == NULL) {
        !          7171:    *exc = GDOME_INVALID_STATE_ERR;
        !          7172:    return;
        !          7173:  }
        !          7174:  *exc = 0;
        !          7175:  ((Gdome_xml_Comment *)self)->vtab->super.deleteData ((GdomeCharacterData *)self, offset, count, exc);
        !          7176: }
        !          7177: /**
        !          7178:  * gdome_c_insertData:
        !          7179:  * @self:  The CharacterData Object ref
        !          7180:  * @offset:  The character offset at which to insert
        !          7181:  * @arg:  The string to insert
        !          7182:  * @exc:  The Exception Object ref
        !          7183:  *
        !          7184:  * Insert a string at the specified 16-bit unit offset.
        !          7185:  *
        !          7186:  * %GDOME_INDEX_SIZE_ERR: Raised if the specified offset is greater than the
        !          7187:  * number of 16-bit units in data.
        !          7188:  * %GDOME_NO_MODIFICATION_ALLOWED_ERR: Raised when the node is readonly.
        !          7189:  */
        !          7190: void
        !          7191: gdome_c_insertData (GdomeComment *self, gulong offset, GdomeDOMString *arg, GdomeException *exc)
        !          7192: {
        !          7193:  if (self == NULL) {
        !          7194:    *exc = GDOME_NULL_POINTER_ERR;
        !          7195:    return;
        !          7196:  }
        !          7197:  if (((Gdome_xml_CharacterData *)self)->n == NULL) {
        !          7198:    *exc = GDOME_INVALID_STATE_ERR;
        !          7199:    return;
        !          7200:  }
        !          7201:  *exc = 0;
        !          7202:  ((Gdome_xml_Comment *)self)->vtab->super.insertData ((GdomeCharacterData *)self, offset, arg, exc);
        !          7203: }
        !          7204: /**
        !          7205:  * gdome_c_replaceData:
        !          7206:  * @self:  The CharacterData Object ref
        !          7207:  * @offset:  The offset from which to start replacing
        !          7208:  * @count:  The number of 16-bit units to replace.
        !          7209:  * @arg:  The String with which the range must be replaced
        !          7210:  * @exc:  The GdomeException Object ref
        !          7211:  *
        !          7212:  * Replace the characters starting at the specified 16-bit unit @offset with
        !          7213:  * the specified string. If the sum of @offset and @count exceeds length, then
        !          7214:  * all 16-bit units to the end of the data are replaced;
        !          7215:  *
        !          7216:  * %GDOME_INDEX_SIZE_ERR: Raised if the specified @offset is greater than the
        !          7217:  * number of 16-bit units in data.
        !          7218:  * %GDOME_NO_MODIFICATION_ALLOWED_ERR: Raised when the node is readonly.
        !          7219:  */
        !          7220: void
        !          7221: gdome_c_replaceData (GdomeComment *self, gulong offset, gulong count, GdomeDOMString *arg, GdomeException *exc)
        !          7222: {
        !          7223:  if (self == NULL) {
        !          7224:    *exc = GDOME_NULL_POINTER_ERR;
        !          7225:    return;
        !          7226:  }
        !          7227:  if (((Gdome_xml_CharacterData *)self)->n == NULL) {
        !          7228:    *exc = GDOME_INVALID_STATE_ERR;
        !          7229:    return;
        !          7230:  }
        !          7231:  *exc = 0;
        !          7232:  ((Gdome_xml_Comment *)self)->vtab->super.replaceData ((GdomeCharacterData *)self, offset, count, arg, exc);
        !          7233: }
        !          7234: /**
        !          7235:  * gdome_c_substringData:
        !          7236:  * @self:  The CharacterData Object ref
        !          7237:  * @offset:  Start offset of substring to extract
        !          7238:  * @count:  The number of 16-bit units to extract
        !          7239:  * @exc:  The Exception Object ref
        !          7240:  *
        !          7241:  * Extracts a range of data from the node.
        !          7242:  *
        !          7243:  * %GDOME_INDEX_SIZE_ERR: Raised if the specified @offset is greater than the
        !          7244:  * number of 16-bit units in data.
        !          7245:  * Returns: The specified substring. If the sum of @offset and @count exceeds
        !          7246:  * the length, then all 16-bit units to the end of the data are returned.
        !          7247:  */
        !          7248: GdomeDOMString *
        !          7249: gdome_c_substringData (GdomeComment *self, gulong offset, gulong count, GdomeException *exc)
        !          7250: {
        !          7251:  if (self == NULL) {
        !          7252:    *exc = GDOME_NULL_POINTER_ERR;
        !          7253:    return NULL;
        !          7254:  }
        !          7255:  if (((Gdome_xml_CharacterData *)self)->n == NULL) {
        !          7256:    *exc = GDOME_INVALID_STATE_ERR;
        !          7257:    return NULL;
        !          7258:  }
        !          7259:  *exc = 0;
        !          7260:  return ((Gdome_xml_Comment *)self)->vtab->super.substringData ((GdomeCharacterData *)self, offset, count, exc);
        !          7261: }
        !          7262: /**
        !          7263:  * gdome_c_attributes:
        !          7264:  * @self:  Node Object ref
        !          7265:  * @exc:  Exception Object ref
        !          7266:  *
        !          7267:  * Returns: a NamedNodeMap containing the attributes of this node (if it is an
        !          7268:  * Element) or %NULL otherwise.
        !          7269:  */
        !          7270: GdomeNamedNodeMap *
        !          7271: gdome_c_attributes (GdomeComment *self, GdomeException *exc)
        !          7272: {
        !          7273:  if (self == NULL) {
        !          7274:    *exc = GDOME_NULL_POINTER_ERR;
        !          7275:    return NULL;
        !          7276:  }
        !          7277:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          7278:    *exc = GDOME_INVALID_STATE_ERR;
        !          7279:    return NULL;
        !          7280:  }
        !          7281:  *exc = 0;
        !          7282:  return ((Gdome_xml_Comment *)self)->vtab->super.super.attributes ((GdomeNode *)self, exc);
        !          7283: }
        !          7284: /**
        !          7285:  * gdome_c_childNodes:
        !          7286:  * @self:  Node Object ref
        !          7287:  * @exc:  Exception Object ref
        !          7288:  *
        !          7289:  * Returns: a NodeList that contains all children of this node. If there are no
        !          7290:  * children, this is a NodeList containing no nodes.  Note that attributes are
        !          7291:  * not considered to be children of element nodes - use gdome_n_attributes to
        !          7292:  * obtain the attributes.
        !          7293:  */
        !          7294: GdomeNodeList *
        !          7295: gdome_c_childNodes (GdomeComment *self, GdomeException *exc)
        !          7296: {
        !          7297:  if (self == NULL) {
        !          7298:    *exc = GDOME_NULL_POINTER_ERR;
        !          7299:    return NULL;
        !          7300:  }
        !          7301:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          7302:    *exc = GDOME_INVALID_STATE_ERR;
        !          7303:    return NULL;
        !          7304:  }
        !          7305:  *exc = 0;
        !          7306:  return ((Gdome_xml_Comment *)self)->vtab->super.super.childNodes ((GdomeNode *)self, exc);
        !          7307: }
        !          7308: /**
        !          7309:  * gdome_c_firstChild:
        !          7310:  * @self:  Node Object ref
        !          7311:  * @exc:  Exception Object ref
        !          7312:  * 
        !          7313:  * Returns: the first child of this node. If there is no such node,
        !          7314:  * this returns %NULL.
        !          7315:  */
        !          7316: GdomeNode *
        !          7317: gdome_c_firstChild (GdomeComment *self, GdomeException *exc)
        !          7318: {
        !          7319:  if (self == NULL) {
        !          7320:    *exc = GDOME_NULL_POINTER_ERR;
        !          7321:    return NULL;
        !          7322:  }
        !          7323:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          7324:    *exc = GDOME_INVALID_STATE_ERR;
        !          7325:    return NULL;
        !          7326:  }
        !          7327:  *exc = 0;
        !          7328:  return ((Gdome_xml_Comment *)self)->vtab->super.super.firstChild ((GdomeNode *)self, exc);
        !          7329: }
        !          7330: /**
        !          7331:  * gdome_c_lastChild:
        !          7332:  * @self:  Node Object ref
        !          7333:  * @exc:  Exception Object ref
        !          7334:  *
        !          7335:  * Returns: the last child of this node. If there is no such node,
        !          7336:  * this returns %NULL.
        !          7337:  */
        !          7338: GdomeNode *
        !          7339: gdome_c_lastChild (GdomeComment *self, GdomeException *exc)
        !          7340: {
        !          7341:  if (self == NULL) {
        !          7342:    *exc = GDOME_NULL_POINTER_ERR;
        !          7343:    return NULL;
        !          7344:  }
        !          7345:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          7346:    *exc = GDOME_INVALID_STATE_ERR;
        !          7347:    return NULL;
        !          7348:  }
        !          7349:  *exc = 0;
        !          7350:  return ((Gdome_xml_Comment *)self)->vtab->super.super.lastChild ((GdomeNode *)self, exc);
        !          7351: }
        !          7352: /**
        !          7353:  * gdome_c_localName:
        !          7354:  * @self:  Node Objects ref
        !          7355:  * @exc:  Exception Object ref
        !          7356:  *
        !          7357:  * Returns: the local part of the qualified name of this node.
        !          7358:  * For nodes of any type other than %GDOME_ELEMENT_NODE and
        !          7359:  * %GDOME_ATTRIBUTE_NODE and nodes created with a DOM Level 1 method, this is
        !          7360:  * always %NULL.
        !          7361:  */
        !          7362: GdomeDOMString *
        !          7363: gdome_c_localName (GdomeComment *self, GdomeException *exc)
        !          7364: {
        !          7365:  if (self == NULL) {
        !          7366:    *exc = GDOME_NULL_POINTER_ERR;
        !          7367:    return NULL;
        !          7368:  }
        !          7369:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          7370:    *exc = GDOME_INVALID_STATE_ERR;
        !          7371:    return NULL;
        !          7372:  }
        !          7373:  *exc = 0;
        !          7374:  return ((Gdome_xml_Comment *)self)->vtab->super.super.localName ((GdomeNode *)self, exc);
        !          7375: }
        !          7376: /**
        !          7377:  * gdome_c_namespaceURI:
        !          7378:  * @self:  Node Objects ref
        !          7379:  * @exc:  Exception Object ref
        !          7380:  *
        !          7381:  * Returns: the namespace URI of this node, or %NULL if it is unspecified.
        !          7382:  * For nodes of any type other than %GDOME_ELEMENT_NODE and
        !          7383:  * %GDOME_ATTRIBUTE_NODE and nodes created with a DOM Level 1 method, this is
        !          7384:  * always %NULL.
        !          7385:  */
        !          7386: GdomeDOMString *
        !          7387: gdome_c_namespaceURI (GdomeComment *self, GdomeException *exc)
        !          7388: {
        !          7389:  if (self == NULL) {
        !          7390:    *exc = GDOME_NULL_POINTER_ERR;
        !          7391:    return NULL;
        !          7392:  }
        !          7393:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          7394:    *exc = GDOME_INVALID_STATE_ERR;
        !          7395:    return NULL;
        !          7396:  }
        !          7397:  *exc = 0;
        !          7398:  return ((Gdome_xml_Comment *)self)->vtab->super.super.namespaceURI ((GdomeNode *)self, exc);
        !          7399: }
        !          7400: /**
        !          7401:  * gdome_c_nextSibling:
        !          7402:  * @self:  Node Object ref
        !          7403:  * @exc:  Exception Object ref
        !          7404:  *
        !          7405:  * Returns: the node immediately following this node. If there is no such
        !          7406:  * node, this returns %NULL.
        !          7407:  */
        !          7408: GdomeNode *
        !          7409: gdome_c_nextSibling (GdomeComment *self, GdomeException *exc)
        !          7410: {
        !          7411:  if (self == NULL) {
        !          7412:    *exc = GDOME_NULL_POINTER_ERR;
        !          7413:    return NULL;
        !          7414:  }
        !          7415:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          7416:    *exc = GDOME_INVALID_STATE_ERR;
        !          7417:    return NULL;
        !          7418:  }
        !          7419:  *exc = 0;
        !          7420:  return ((Gdome_xml_Comment *)self)->vtab->super.super.nextSibling ((GdomeNode *)self, exc);
        !          7421: }
        !          7422: /**
        !          7423:  * gdome_c_nodeName:
        !          7424:  * @self:  Node Object ref
        !          7425:  * @exc:  Exception Object ref
        !          7426:  *
        !          7427:  * Returns: the name of this node, depending on its type.
        !          7428:  */
        !          7429: GdomeDOMString *
        !          7430: gdome_c_nodeName (GdomeComment *self, GdomeException *exc)
        !          7431: {
        !          7432:  if (self == NULL) {
        !          7433:    *exc = GDOME_NULL_POINTER_ERR;
        !          7434:    return NULL;
        !          7435:  }
        !          7436:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          7437:    *exc = GDOME_INVALID_STATE_ERR;
        !          7438:    return NULL;
        !          7439:  }
        !          7440:  *exc = 0;
        !          7441:  return ((Gdome_xml_Comment *)self)->vtab->super.super.nodeName ((GdomeNode *)self, exc);
        !          7442: }
        !          7443: /**
        !          7444:  * gdome_c_nodeType:
        !          7445:  * @self:  Node Object ref
        !          7446:  * @exc:  Exception Object ref
        !          7447:  *
        !          7448:  * Returns: an integer bigger than %0 representing the type of the underlying
        !          7449:  * object or %0 on error.
        !          7450:  */
        !          7451: unsigned short
        !          7452: gdome_c_nodeType (GdomeComment *self, GdomeException *exc)
        !          7453: {
        !          7454:  if (self == NULL) {
        !          7455:    *exc = GDOME_NULL_POINTER_ERR;
        !          7456:    return 0;
        !          7457:  }
        !          7458:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          7459:    *exc = GDOME_INVALID_STATE_ERR;
        !          7460:    return 0;
        !          7461:  }
        !          7462:  *exc = 0;
        !          7463:  return ((Gdome_xml_Comment *)self)->vtab->super.super.nodeType ((GdomeNode *)self, exc);
        !          7464: }
        !          7465: /**
        !          7466:  * gdome_c_nodeValue:
        !          7467:  * @self:  Node Object ref
        !          7468:  * @exc:  Exception Object ref
        !          7469:  *
        !          7470:  * Returns: the value of this node, depending on its type.
        !          7471:  */
        !          7472: GdomeDOMString *
        !          7473: gdome_c_nodeValue (GdomeComment *self, GdomeException *exc)
        !          7474: {
        !          7475:  if (self == NULL) {
        !          7476:    *exc = GDOME_NULL_POINTER_ERR;
        !          7477:    return NULL;
        !          7478:  }
        !          7479:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          7480:    *exc = GDOME_INVALID_STATE_ERR;
        !          7481:    return NULL;
        !          7482:  }
        !          7483:  *exc = 0;
        !          7484:  return ((Gdome_xml_Comment *)self)->vtab->super.super.nodeValue ((GdomeNode *)self, exc);
        !          7485: }
        !          7486: /**
        !          7487:  * gdome_c_set_nodeValue:
        !          7488:  * @self:  Node Object ref
        !          7489:  * @nodeValue:  The new value for this node.
        !          7490:  * @exc:  Exception Object ref
        !          7491:  *
        !          7492:  * Sets The value of this node, depending on its type.
        !          7493:  *
        !          7494:  * %GDOME_NO_MODIFICATION_ALLOWED_ERR: Raised when the node is readonly.
        !          7495:  */
        !          7496: void
        !          7497: gdome_c_set_nodeValue (GdomeComment *self, GdomeDOMString *nodeValue, GdomeException *exc)
        !          7498: {
        !          7499:  if (self == NULL) {
        !          7500:    *exc = GDOME_NULL_POINTER_ERR;
        !          7501:    return;
        !          7502:  }
        !          7503:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          7504:    *exc = GDOME_INVALID_STATE_ERR;
        !          7505:    return;
        !          7506:  }
        !          7507:  *exc = 0;
        !          7508:  ((Gdome_xml_Comment *)self)->vtab->super.super.set_nodeValue ((GdomeNode *)self, nodeValue, exc);
        !          7509: }
        !          7510: /**
        !          7511:  * gdome_c_ownerDocument:
        !          7512:  * @self:  Node Objects ref
        !          7513:  * @exc:  Exception Object ref
        !          7514:  *
        !          7515:  * Returns: the documment object associated with this node. This is also the
        !          7516:  * Document object used to create new nodes. When this node is a Document or a
        !          7517:  * DocumentType which is not used with any Document yet, this is %NULL.
        !          7518:  */
        !          7519: GdomeDocument *
        !          7520: gdome_c_ownerDocument (GdomeComment *self, GdomeException *exc)
        !          7521: {
        !          7522:  if (self == NULL) {
        !          7523:    *exc = GDOME_NULL_POINTER_ERR;
        !          7524:    return NULL;
        !          7525:  }
        !          7526:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          7527:    *exc = GDOME_INVALID_STATE_ERR;
        !          7528:    return NULL;
        !          7529:  }
        !          7530:  *exc = 0;
        !          7531:  return ((Gdome_xml_Comment *)self)->vtab->super.super.ownerDocument ((GdomeNode *)self, exc);
        !          7532: }
        !          7533: /**
        !          7534:  * gdome_c_parentNode:
        !          7535:  * @self: Node Object ref
        !          7536:  * @exc: Exception Object ref
        !          7537:  *
        !          7538:  * Returns: the parent of this node. All nodes, except Attr,
        !          7539:  * Document, DocumentFragment, Entity, and Notation may have a parent. However,
        !          7540:  * if a node has just been created and not yet added to the tree, or if it has
        !          7541:  * been removed from the tree, this is %NULL.
        !          7542:  */
        !          7543: GdomeNode *
        !          7544: gdome_c_parentNode (GdomeComment *self, GdomeException *exc)
        !          7545: {
        !          7546:  if (self == NULL) {
        !          7547:    *exc = GDOME_NULL_POINTER_ERR;
        !          7548:    return NULL;
        !          7549:  }
        !          7550:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          7551:    *exc = GDOME_INVALID_STATE_ERR;
        !          7552:    return NULL;
        !          7553:  }
        !          7554:  *exc = 0;
        !          7555:  return ((Gdome_xml_Comment *)self)->vtab->super.super.parentNode ((GdomeNode *)self, exc);
        !          7556: }
        !          7557: /**
        !          7558:  * gdome_c_prefix:
        !          7559:  * @self:  Node Objects ref
        !          7560:  * @exc:  Exception Object ref
        !          7561:  *
        !          7562:  * Returns: the namespace prefix of this node, or %NULL if it is unspecified.
        !          7563:  * For nodes of any type other than %GDOME_ELEMENT_NODE and
        !          7564:  * %GDOME_ATTRIBUTE_NODE and nodes created with a DOM Level 1 method, this is
        !          7565:  * always %NULL.
        !          7566:  */
        !          7567: GdomeDOMString *
        !          7568: gdome_c_prefix (GdomeComment *self, GdomeException *exc)
        !          7569: {
        !          7570:  if (self == NULL) {
        !          7571:    *exc = GDOME_NULL_POINTER_ERR;
        !          7572:    return NULL;
        !          7573:  }
        !          7574:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          7575:    *exc = GDOME_INVALID_STATE_ERR;
        !          7576:    return NULL;
        !          7577:  }
        !          7578:  *exc = 0;
        !          7579:  return ((Gdome_xml_Comment *)self)->vtab->super.super.prefix ((GdomeNode *)self, exc);
        !          7580: }
        !          7581: /**
        !          7582:  * gdome_c_set_prefix:
        !          7583:  * @self:  Node Object ref
        !          7584:  * @prefix:  The new prefix for this node.
        !          7585:  * @exc:  Exception Object ref
        !          7586:  *
        !          7587:  * Sets a new nemaspace prefix for this node.
        !          7588:  *
        !          7589:  * %GDOME_NO_MODIFICATION_ALLOWED_ERR: Raised when the node is readonly.
        !          7590:  * %GDOME_NAMESPACE_ERR: Raised if the specified @prefix is malformed per the
        !          7591:  * Namespaces in XML specification, if the namespaceURI of this node is %NULL,
        !          7592:  * if the specified prefix is "xml" and the namespaceURI of this node is
        !          7593:  * different from "http://www.w3.org/XML/1998/namespace", if this node is an
        !          7594:  * attribute and the specified prefix is "xmlns" and the namespaceURI of this
        !          7595:  * node is different from "http://www.w3.org/2000/xmlns/", or if this node is
        !          7596:  * an attribute and the qualifiedName of this node is "xmlns".
        !          7597:  */
        !          7598: void
        !          7599: gdome_c_set_prefix (GdomeComment *self, GdomeDOMString *prefix, GdomeException *exc)
        !          7600: {
        !          7601:  if (self == NULL) {
        !          7602:    *exc = GDOME_NULL_POINTER_ERR;
        !          7603:    return;
        !          7604:  }
        !          7605:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          7606:    *exc = GDOME_INVALID_STATE_ERR;
        !          7607:    return;
        !          7608:  }
        !          7609:  *exc = 0;
        !          7610:  ((Gdome_xml_Comment *)self)->vtab->super.super.set_prefix ((GdomeNode *)self, prefix, exc);
        !          7611: }
        !          7612: /**
        !          7613:  * gdome_c_previousSibling:
        !          7614:  * @self:  Node Object ref
        !          7615:  * @exc:  Exception Object ref
        !          7616:  *
        !          7617:  * Returns: the node immediately preceding this node. If there is no such
        !          7618:  * node, this returns %NULL.
        !          7619:  */
        !          7620: GdomeNode *
        !          7621: gdome_c_previousSibling (GdomeComment *self, GdomeException *exc)
        !          7622: {
        !          7623:  if (self == NULL) {
        !          7624:    *exc = GDOME_NULL_POINTER_ERR;
        !          7625:    return NULL;
        !          7626:  }
        !          7627:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          7628:    *exc = GDOME_INVALID_STATE_ERR;
        !          7629:    return NULL;
        !          7630:  }
        !          7631:  *exc = 0;
        !          7632:  return ((Gdome_xml_Comment *)self)->vtab->super.super.previousSibling ((GdomeNode *)self, exc);
        !          7633: }
        !          7634: /**
        !          7635:  * gdome_c_ref:
        !          7636:  * @self:  Node Object ref
        !          7637:  * @exc:  Exception Object ref
        !          7638:  *
        !          7639:  * Increase the reference count of the specified Node.
        !          7640:  */
        !          7641: void
        !          7642: gdome_c_ref (GdomeComment *self, GdomeException *exc)
        !          7643: {
        !          7644:  if (self == NULL) {
        !          7645:    *exc = GDOME_NULL_POINTER_ERR;
        !          7646:    return;
        !          7647:  }
        !          7648:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          7649:    *exc = GDOME_INVALID_STATE_ERR;
        !          7650:    return;
        !          7651:  }
        !          7652:  *exc = 0;
        !          7653:  ((Gdome_xml_Comment *)self)->vtab->super.super.ref ((GdomeNode *)self, exc);
        !          7654: }
        !          7655: /**
        !          7656:  * gdome_c_unref:
        !          7657:  * @self:  Node Object ref
        !          7658:  * @exc:  Exception Object ref
        !          7659:  *
        !          7660:  * Decrease the reference count of the specified Node. Free the Node structure
        !          7661:  * if the Node will have zero reference.
        !          7662:  */
        !          7663: void
        !          7664: gdome_c_unref (GdomeComment *self, GdomeException *exc)
        !          7665: {
        !          7666:  if (self == NULL) {
        !          7667:    *exc = GDOME_NULL_POINTER_ERR;
        !          7668:    return;
        !          7669:  }
        !          7670:  *exc = 0;
        !          7671:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          7672:    if (((Gdome_xml_Node *)self)->refcnt > 0)
        !          7673:      ((Gdome_xml_Node *)self)->refcnt--;
        !          7674: 
        !          7675:    if (((Gdome_xml_Node *)self)->refcnt == 0 && ((Gdome_xml_Node *)self)->ll == NULL) {
        !          7676: #ifdef DEBUG_REFCNT
        !          7677:      gdome_refdbg_delRef ((void *)self, GDOME_REFDBG_NODE);
        !          7678: #endif
        !          7679:      g_free (self);
        !          7680:    }
        !          7681:    return;
        !          7682:  }
        !          7683:  ((Gdome_xml_Comment *)self)->vtab->super.super.unref ((GdomeNode *)self, exc);
        !          7684: }
        !          7685: /**
        !          7686:  * gdome_c_query_interface:
        !          7687:  * @self:  Node Object ref
        !          7688:  * @interface:  interface needed
        !          7689:  * @exc:  Exception Object ref
        !          7690:  *
        !          7691:  * Returns: a reference to this object that implements the @interface needed,
        !          7692:  *          or %NULL if the @interface is not supported by this Object.
        !          7693:  */
        !          7694: gpointer
        !          7695: gdome_c_query_interface (GdomeComment *self, const char *interface, GdomeException *exc)
        !          7696: {
        !          7697:  if (self == NULL) {
        !          7698:    *exc = GDOME_NULL_POINTER_ERR;
        !          7699:    return NULL;
        !          7700:  }
        !          7701:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          7702:    *exc = GDOME_INVALID_STATE_ERR;
        !          7703:    return NULL;
        !          7704:  }
        !          7705:  *exc = 0;
        !          7706:  return ((Gdome_xml_Comment *)self)->vtab->super.super.query_interface ((GdomeNode *)self, interface, exc);
        !          7707: }
        !          7708: /**
        !          7709:  * gdome_c_appendChild:
        !          7710:  * @self:  Node Object ref
        !          7711:  * @newChild:  The node to add
        !          7712:  * @exc:  Exception Object ref
        !          7713:  *
        !          7714:  * Adds the node @newChild to the end of the list of children of this node.
        !          7715:  * If the @newChild is already in the tree, it is first removed. If it is a
        !          7716:  * DocumentFragment node, the entire contents of the document fragment are
        !          7717:  * moved into the child list of this node
        !          7718:  *
        !          7719:  * %GDOME_HIERARCHY_REQUEST_ERR: Raised if this node is of a type that does not
        !          7720:  * allow children of the type of the @newChild node, or if the node to append is
        !          7721:  * one of this node's ancestors or this node itself.
        !          7722:  * %GDOME_WRONG_DOCUMENT_ERR: Raised if @newChild was created from a different
        !          7723:  * document than the one that created this node.
        !          7724:  * %GDOME_NO_MODIFICATION_ALLOWED_ERR: Raised when the node is readonly.
        !          7725:  * Returns: the node added.
        !          7726:  */
        !          7727: GdomeNode *
        !          7728: gdome_c_appendChild (GdomeComment *self, GdomeNode *newChild, GdomeException *exc)
        !          7729: {
        !          7730:  if (self == NULL) {
        !          7731:    *exc = GDOME_NULL_POINTER_ERR;
        !          7732:    return NULL;
        !          7733:  }
        !          7734:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          7735:    *exc = GDOME_INVALID_STATE_ERR;
        !          7736:    return NULL;
        !          7737:  }
        !          7738:  *exc = 0;
        !          7739:  return ((Gdome_xml_Comment *)self)->vtab->super.super.appendChild ((GdomeNode *)self, newChild, exc);
        !          7740: }
        !          7741: /**
        !          7742:  * gdome_c_cloneNode:
        !          7743:  * @self:  Node Object ref
        !          7744:  * @deep:  If true, recursively clone the subtree under the specified node;
        !          7745:  *         if false, clone only the node itself (and its attributes, if it is
        !          7746:  *         an Element).
        !          7747:  * @exc:  Exception Object ref
        !          7748:  *
        !          7749:  * Makes a duplicate of this node, i.e., serves as a generic copy
        !          7750:  * constructor for nodes. The duplicate node has no parent; (parentNode is
        !          7751:  * %NULL).
        !          7752:  * %GDOME_DOCUMENT_TYPE_NODE, %GDOME_NOTATION_NODE and %GDOME_ENTITY_NODE
        !          7753:  * nodes are not supported.
        !          7754:  *
        !          7755:  * %GDOME_NOT_SUPPORTED_ERR: Raised if the type of node being cloned is not
        !          7756:  * supported.
        !          7757:  * Returns: the duplicate node.
        !          7758:  */
        !          7759: GdomeNode *
        !          7760: gdome_c_cloneNode (GdomeComment *self, GdomeBoolean deep, GdomeException *exc)
        !          7761: {
        !          7762:  if (self == NULL) {
        !          7763:    *exc = GDOME_NULL_POINTER_ERR;
        !          7764:    return NULL;
        !          7765:  }
        !          7766:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          7767:    *exc = GDOME_INVALID_STATE_ERR;
        !          7768:    return NULL;
        !          7769:  }
        !          7770:  *exc = 0;
        !          7771:  return ((Gdome_xml_Comment *)self)->vtab->super.super.cloneNode ((GdomeNode *)self, deep, exc);
        !          7772: }
        !          7773: /**
        !          7774:  * gdome_c_hasAttributes:
        !          7775:  * @self:  Node Object ref
        !          7776:  * @exc:  Exception Object ref
        !          7777:  *
        !          7778:  * Returns: %TRUE if this node has any attributes, %FALSE otherwise.
        !          7779:  */
        !          7780: GdomeBoolean
        !          7781: gdome_c_hasAttributes (GdomeComment *self, GdomeException *exc)
        !          7782: {
        !          7783:  if (self == NULL) {
        !          7784:    *exc = GDOME_NULL_POINTER_ERR;
        !          7785:    return FALSE;
        !          7786:  }
        !          7787:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          7788:    *exc = GDOME_INVALID_STATE_ERR;
        !          7789:    return FALSE;
        !          7790:  }
        !          7791:  *exc = 0;
        !          7792:  return ((Gdome_xml_Comment *)self)->vtab->super.super.hasAttributes ((GdomeNode *)self, exc);
        !          7793: }
        !          7794: /**
        !          7795:  * gdome_c_hasChildNodes:
        !          7796:  * @self:  Node Object ref
        !          7797:  * @exc:  Exception Object ref
        !          7798:  *
        !          7799:  * Returns: %TRUE if this node has any children, %FALSE otherwise.
        !          7800:  */
        !          7801: GdomeBoolean
        !          7802: gdome_c_hasChildNodes (GdomeComment *self, GdomeException *exc)
        !          7803: {
        !          7804:  if (self == NULL) {
        !          7805:    *exc = GDOME_NULL_POINTER_ERR;
        !          7806:    return FALSE;
        !          7807:  }
        !          7808:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          7809:    *exc = GDOME_INVALID_STATE_ERR;
        !          7810:    return FALSE;
        !          7811:  }
        !          7812:  *exc = 0;
        !          7813:  return ((Gdome_xml_Comment *)self)->vtab->super.super.hasChildNodes ((GdomeNode *)self, exc);
        !          7814: }
        !          7815: /**
        !          7816:  * gdome_c_insertBefore:
        !          7817:  * @self:  Node Object ref
        !          7818:  * @newChild:  The new node to put in the child list
        !          7819:  * @refChild:  the reference node, i.e., the node before which the new node
        !          7820:  *             must be inserted.
        !          7821:  * @exc:  Exception Object ref
        !          7822:  *
        !          7823:  * Inserts the node @newChild before the existing child node @refChild. If
        !          7824:  * @refChild is %NULL, insert @newChild at the end of the list of children.
        !          7825:  * If @newChild is a DocumentFragment node, all of its children are inserted,
        !          7826:  * in the same order, before @refChild. If the @newChild is already in the
        !          7827:  * tree, it is first removed.
        !          7828:  *
        !          7829:  * %GDOME_HIERARCHY_REQUEST_ERR: Raised if this node is of a type that does not
        !          7830:  * allow children of the type of the @newChild node, or if the node to insert is
        !          7831:  * one of this node's ancestors or this node itself.
        !          7832:  * %GDOME_WRONG_DOCUMENT_ERR: Raised if @newChild was created from a different
        !          7833:  * document than the one that created this node.
        !          7834:  * %GDOME_NOT_FOUND_ERR: Raised if @refChild is not a child of this node.
        !          7835:  * %GDOME_NO_MODIFICATION_ALLOWED_ERR: Raised when the node is readonly.
        !          7836:  * Returns: the node being inserted.
        !          7837:  */
        !          7838: GdomeNode *
        !          7839: gdome_c_insertBefore (GdomeComment *self, GdomeNode *newChild, GdomeNode *refChild, GdomeException *exc)
        !          7840: {
        !          7841:  if (self == NULL) {
        !          7842:    *exc = GDOME_NULL_POINTER_ERR;
        !          7843:    return NULL;
        !          7844:  }
        !          7845:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          7846:    *exc = GDOME_INVALID_STATE_ERR;
        !          7847:    return NULL;
        !          7848:  }
        !          7849:  *exc = 0;
        !          7850:  return ((Gdome_xml_Comment *)self)->vtab->super.super.insertBefore ((GdomeNode *)self, newChild, refChild, exc);
        !          7851: }
        !          7852: /**
        !          7853:  * gdome_c_isSupported:
        !          7854:  * @self:  Node Object ref
        !          7855:  * @feature:  The name of the feature to test.
        !          7856:  * @version:  This is the version number of the feature to test. In Level 2,
        !          7857:  *            version 1, this is the string "2.0". If the version is not
        !          7858:  *            specified, supporting any version of the feature will cause the
        !          7859:  *            method to return %TRUE.
        !          7860:  * @exc:  Exception Object ref
        !          7861:  *
        !          7862:  * Tests whether the DOM implementation implements a specific feature and that
        !          7863:  * feature is supported by this node.
        !          7864:  * Returns: %TRUE if the specified feature is supported on this node, %FALSE
        !          7865:  * otherwise.
        !          7866:  */
        !          7867: GdomeBoolean
        !          7868: gdome_c_isSupported (GdomeComment *self, GdomeDOMString *feature, GdomeDOMString *version, GdomeException *exc)
        !          7869: {
        !          7870:  if (self == NULL) {
        !          7871:    *exc = GDOME_NULL_POINTER_ERR;
        !          7872:    return FALSE;
        !          7873:  }
        !          7874:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          7875:    *exc = GDOME_INVALID_STATE_ERR;
        !          7876:    return FALSE;
        !          7877:  }
        !          7878:  *exc = 0;
        !          7879:  return ((Gdome_xml_Comment *)self)->vtab->super.super.isSupported ((GdomeNode *)self, feature, version, exc);
        !          7880: }
        !          7881: /**
        !          7882:  * gdome_c_normalize:
        !          7883:  * @self:  Node Object ref
        !          7884:  * @exc:  Exception Object ref
        !          7885:  *
        !          7886:  * Puts all Text nodes in the full depth of the sub-tree underneath this Node,
        !          7887:  * including attribute nodes, into a "normal" form where only structure (e.g.,
        !          7888:  * elements, comments, processing instructions, CDATA sections, and entity
        !          7889:  * references) separates Text nodes, i.e., there are neither adjacent Text
        !          7890:  * nodes nor empty Text nodes.
        !          7891:  */
        !          7892: void
        !          7893: gdome_c_normalize (GdomeComment *self, GdomeException *exc)
        !          7894: {
        !          7895:  if (self == NULL) {
        !          7896:    *exc = GDOME_NULL_POINTER_ERR;
        !          7897:    return;
        !          7898:  }
        !          7899:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          7900:    *exc = GDOME_INVALID_STATE_ERR;
        !          7901:    return;
        !          7902:  }
        !          7903:  *exc = 0;
        !          7904:  ((Gdome_xml_Comment *)self)->vtab->super.super.normalize ((GdomeNode *)self, exc);
        !          7905: }
        !          7906: /**
        !          7907:  * gdome_c_removeChild:
        !          7908:  * @self:  Node Object ref
        !          7909:  * @oldChild:  The node being removed
        !          7910:  * @exc:  Exception Object ref
        !          7911:  *
        !          7912:  * Removes the child node indicated by @oldChild from the list of children, and
        !          7913:  * returns it.
        !          7914:  *
        !          7915:  * %GDOME_NOT_FOUND_ERR: Raised if @oldChild is not a child of this node.
        !          7916:  * %GDOME_NO_MODIFICATION_ALLOWED_ERR: Raised when the node is readonly.
        !          7917:  * Returns: the node removed.
        !          7918:  */
        !          7919: GdomeNode *
        !          7920: gdome_c_removeChild (GdomeComment *self, GdomeNode *oldChild, GdomeException *exc)
        !          7921: {
        !          7922:  if (self == NULL) {
        !          7923:    *exc = GDOME_NULL_POINTER_ERR;
        !          7924:    return NULL;
        !          7925:  }
        !          7926:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          7927:    *exc = GDOME_INVALID_STATE_ERR;
        !          7928:    return NULL;
        !          7929:  }
        !          7930:  *exc = 0;
        !          7931:  return ((Gdome_xml_Comment *)self)->vtab->super.super.removeChild ((GdomeNode *)self, oldChild, exc);
        !          7932: }
        !          7933: /**
        !          7934:  * gdome_c_replaceChild:
        !          7935:  * @self:  Node Object ref
        !          7936:  * @newChild:  The new node to put in the child list
        !          7937:  * @oldChild:  The node being replaced in the list
        !          7938:  * @exc:  Exception Object ref
        !          7939:  *
        !          7940:  * Replaces the child node @oldChild with @newChild in the list of children,
        !          7941:  * and returns the @oldChild node. If @newChild is a DocumentFragment object,
        !          7942:  * @oldChild is replaced by all of the DocumentFragment children, which are
        !          7943:  * inserted in the same order. If the @newChild is already in the tree, it is
        !          7944:  * first removed.
        !          7945:  *
        !          7946:  * %GDOME_HIERARCHY_REQUEST_ERR: Raised if this node is of a type that does
        !          7947:  * not allow children of the type of the @newChild node, or if the node to put
        !          7948:  * in is one of this node's ancestors or this node itself.
        !          7949:  * %GDOME_WRONG_DOCUMENT_ERR: Raised if @newChild was created from a different
        !          7950:  * document than the one that created this node.
        !          7951:  * %GDOME_NOT_FOUND_ERR: Raised if @oldChild is not a child of this node.
        !          7952:  * %GDOME_NO_MODIFICATION_ALLOWED_ERR: Raised when the node is readonly.
        !          7953:  * Returns: the node replaced.
        !          7954:  */
        !          7955: GdomeNode *
        !          7956: gdome_c_replaceChild (GdomeComment *self, GdomeNode *newChild, GdomeNode *oldChild, GdomeException *exc)
        !          7957: {
        !          7958:  if (self == NULL) {
        !          7959:    *exc = GDOME_NULL_POINTER_ERR;
        !          7960:    return NULL;
        !          7961:  }
        !          7962:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          7963:    *exc = GDOME_INVALID_STATE_ERR;
        !          7964:    return NULL;
        !          7965:  }
        !          7966:  *exc = 0;
        !          7967:  return ((Gdome_xml_Comment *)self)->vtab->super.super.replaceChild ((GdomeNode *)self, newChild, oldChild, exc);
        !          7968: }
        !          7969: /**
        !          7970:  * gdome_c_addEventListener:
        !          7971:  * @self:  Node Object ref
        !          7972:  * @type:  the event type for which the user is registering
        !          7973:  * @listener:  the listener parameter takes an interface implemented by the
        !          7974:  *             user which contains the methods to be called when the event occurs.
        !          7975:  * @useCapture:  if %TRUE, useCapture indicates that the user wishes to initiate
        !          7976:  *               capture. After initiating capture, all events of the specified
        !          7977:  *               type will be dispatched to the registered EventListener before
        !          7978:  *               being dispatched to any EventTargets beneath them in the tree.
        !          7979:  *               Events which are bubbling upward through the tree will not
        !          7980:  *               trigger an EventListener designated to use capture.
        !          7981:  * @exc:  Exception Object ref
        !          7982:  *
        !          7983:  * This method allows the registration of event listeners on the event target.
        !          7984:  * If an EventListener is added to an EventTarget while it is processing an
        !          7985:  * event, it will not be triggered by the current actions but may be triggered
        !          7986:  * during a later stage of event flow, such as the bubbling phase.
        !          7987:  * If multiple identical EventListeners are registered on the same EventTarget
        !          7988:  * with the same parameters the duplicate instances are discarded. They do not
        !          7989:  * cause the EventListener to be called twice and since they are discarded
        !          7990:  * they do not need to be removed with the removeEventListener method.
        !          7991:  */
        !          7992: void
        !          7993: gdome_c_addEventListener (GdomeComment *self, GdomeDOMString *type, GdomeEventListener *listener, GdomeBoolean useCapture, GdomeException *exc)
        !          7994: {
        !          7995:  if (self == NULL) {
        !          7996:    *exc = GDOME_NULL_POINTER_ERR;
        !          7997:    return;
        !          7998:  }
        !          7999:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          8000:    *exc = GDOME_INVALID_STATE_ERR;
        !          8001:    return;
        !          8002:  }
        !          8003:  *exc = 0;
        !          8004:  ((Gdome_xml_Comment *)self)->vtab->super.super.addEventListener ((GdomeNode *)self, type, listener, useCapture, exc);
        !          8005: }
        !          8006: /**
        !          8007:  * gdome_c_removeEventListener:
        !          8008:  * @self:  Node Object ref
        !          8009:  * @type:  Specifies the event type of the EventListener being removed.
        !          8010:  * @listener:  The EventListener parameter indicates the EventListener to be
        !          8011:  *             removed.
        !          8012:  * @useCapture:  Specifies whether the EventListener being removed was
        !          8013:  *               registered as a capturing listener or not. If a listener was
        !          8014:  *               registered twice, one with capture and one without, each must
        !          8015:  *               be removed separately. Removal of a capturing listener does
        !          8016:  *               not affect a non-capturing version of the same listener, and
        !          8017:  *               vice versa.
        !          8018:  * @exc:  Exception Object ref
        !          8019:  *
        !          8020:  * This method allows the removal of event listeners from the event target. If
        !          8021:  * an EventListener is removed from an EventTarget while it is processing an
        !          8022:  * event, it will not be triggered by the current actions. EventListeners can
        !          8023:  * never be invoked after being removed. Calling removeEventListener with
        !          8024:  * arguments which do not identify any currently registered EventListener on
        !          8025:  * the EventTarget has no effect.
        !          8026:  */
        !          8027: void
        !          8028: gdome_c_removeEventListener (GdomeComment *self, GdomeDOMString *type, GdomeEventListener *listener, GdomeBoolean useCapture, GdomeException *exc)
        !          8029: {
        !          8030:  if (self == NULL) {
        !          8031:    *exc = GDOME_NULL_POINTER_ERR;
        !          8032:    return;
        !          8033:  }
        !          8034:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          8035:    *exc = GDOME_INVALID_STATE_ERR;
        !          8036:    return;
        !          8037:  }
        !          8038:  *exc = 0;
        !          8039:  ((Gdome_xml_Comment *)self)->vtab->super.super.removeEventListener ((GdomeNode *)self, type, listener, useCapture, exc);
        !          8040: }
        !          8041: /**
        !          8042:  * gdome_c_dispatchEvent:
        !          8043:  * @self:  Node Object ref
        !          8044:  * @evt:  Specifies the event type, behavior, and contextual information to be
        !          8045:  *        used in processing the event.
        !          8046:  * @exc:  Exception Object ref
        !          8047:  *
        !          8048:  * This method allows the dispatch of events into the implementations event
        !          8049:  * model. Events dispatched in this manner will have the same capturing and
        !          8050:  * bubbling behavior as events dispatched directly by the implementation. The
        !          8051:  * target of the event is the EventTarget on which dispatchEvent is called.
        !          8052:  *
        !          8053:  * GDOME_UNSPECIFIED_EVENT_TYPE_ERR: Raised if the Event's type was not
        !          8054:  * specified by initializing the event before dispatchEvent was called.
        !          8055:  * Specification of the Event's type as %NULL or an empty string will also
        !          8056:  * trigger this exception.
        !          8057:  * Returns: if preventDefault was called the value is %FALSE, else the value
        !          8058:  *          is %TRUE.
        !          8059:  */
        !          8060: GdomeBoolean
        !          8061: gdome_c_dispatchEvent (GdomeComment *self, GdomeEvent *evt, GdomeException *exc)
        !          8062: {
        !          8063:  if (self == NULL) {
        !          8064:    *exc = GDOME_NULL_POINTER_ERR;
        !          8065:    return FALSE;
        !          8066:  }
        !          8067:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          8068:    *exc = GDOME_INVALID_STATE_ERR;
        !          8069:    return FALSE;
        !          8070:  }
        !          8071:  *exc = 0;
        !          8072:  return ((Gdome_xml_Comment *)self)->vtab->super.super.dispatchEvent ((GdomeNode *)self, evt, exc);
        !          8073: }
        !          8074: /**
        !          8075:  * gdome_c_subTreeDispatchEvent:
        !          8076:  * @self:  Node Object ref
        !          8077:  * @evt:  Specifies the event type, behavior, and contextual information to be
        !          8078:  *        used in processing the event.
        !          8079:  * @exc:  Exception Object ref
        !          8080:  *
        !          8081:  * This method allows the dispatch of events into the implementations event
        !          8082:  * model. Events dispatched in this manner will have the same capturing and
        !          8083:  * bubbling behavior as events dispatched directly by the implementation. The
        !          8084:  * target of the event is any nodes in the subtree of the EventTarget on which
        !          8085:  * dispatchEvent is called.
        !          8086:  *
        !          8087:  * GDOME_UNSPECIFIED_EVENT_TYPE_ERR: Raised if the Event's type was not
        !          8088:  * specified by initializing the event before dispatchEvent was called.
        !          8089:  * Specification of the Event's type as %NULL or an empty string will also
        !          8090:  * trigger this exception.
        !          8091:  */
        !          8092: void
        !          8093: gdome_c_subTreeDispatchEvent (GdomeComment *self, GdomeEvent *evt, GdomeException *exc)
        !          8094: {
        !          8095:  if (self == NULL) {
        !          8096:    *exc = GDOME_NULL_POINTER_ERR;
        !          8097:    return;
        !          8098:  }
        !          8099:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          8100:    *exc = GDOME_INVALID_STATE_ERR;
        !          8101:    return;
        !          8102:  }
        !          8103:  *exc = 0;
        !          8104:  ((Gdome_xml_Comment *)self)->vtab->super.super.subTreeDispatchEvent ((GdomeNode *)self, evt, exc);
        !          8105: }
        !          8106: /**
        !          8107:  * gdome_c_canAppend:
        !          8108:  * @self:  Node Object ref
        !          8109:  * @newChild:  The Node Object ref of the node to test
        !          8110:  * @exc:  Exception Object ref
        !          8111:  *
        !          8112:  * Tests if a @newChild can be added in the child list of this node.
        !          8113:  * Returns: %TRUE if @newChild can be added, %FALSE otherwise.
        !          8114:  */
        !          8115: GdomeBoolean
        !          8116: gdome_c_canAppend (GdomeComment *self, GdomeNode *newChild, GdomeException *exc)
        !          8117: {
        !          8118:  if (self == NULL) {
        !          8119:    *exc = GDOME_NULL_POINTER_ERR;
        !          8120:    return FALSE;
        !          8121:  }
        !          8122:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          8123:    *exc = GDOME_INVALID_STATE_ERR;
        !          8124:    return FALSE;
        !          8125:  }
        !          8126:  *exc = 0;
        !          8127:  return ((Gdome_xml_Comment *)self)->vtab->super.super.canAppend ((GdomeNode *)self, newChild, exc);
        !          8128: }
        !          8129: 
        !          8130: /******************************************************************************
        !          8131:           GdomeAttr interface API
        !          8132:  ******************************************************************************/
        !          8133: /**
        !          8134:  * gdome_a_name:
        !          8135:  * @self:  Attr Object ref
        !          8136:  * @exc:  Exception Object ref
        !          8137:  *
        !          8138:  * Returns: the qualified name of this attribute.
        !          8139:  */
        !          8140: GdomeDOMString *
        !          8141: gdome_a_name (GdomeAttr *self, GdomeException *exc)
        !          8142: {
        !          8143:  if (self == NULL) {
        !          8144:    *exc = GDOME_NULL_POINTER_ERR;
        !          8145:    return NULL;
        !          8146:  }
        !          8147:  if (((Gdome_xml_Attr *)self)->n == NULL) {
        !          8148:    *exc = GDOME_INVALID_STATE_ERR;
        !          8149:    return NULL;
        !          8150:  }
        !          8151:  *exc = 0;
        !          8152:  return ((Gdome_xml_Attr *)self)->vtab->name (self, exc);
        !          8153: }
        !          8154: /**
        !          8155:  * gdome_a_ownerElement:
        !          8156:  * @self:  Attr Object ref
        !          8157:  * @exc:  Exception Object ref
        !          8158:  *
        !          8159:  * Returns: the Element node this attribute is attached to or %NULL if this
        !          8160:  * attribute is not in use.
        !          8161:  */
        !          8162: GdomeElement *
        !          8163: gdome_a_ownerElement (GdomeAttr *self, GdomeException *exc)
        !          8164: {
        !          8165:  if (self == NULL) {
        !          8166:    *exc = GDOME_NULL_POINTER_ERR;
        !          8167:    return NULL;
        !          8168:  }
        !          8169:  if (((Gdome_xml_Attr *)self)->n == NULL) {
        !          8170:    *exc = GDOME_INVALID_STATE_ERR;
        !          8171:    return NULL;
        !          8172:  }
        !          8173:  *exc = 0;
        !          8174:  return ((Gdome_xml_Attr *)self)->vtab->ownerElement (self, exc);
        !          8175: }
        !          8176: /**
        !          8177:  * gdome_a_specified:
        !          8178:  * @self:  Attr Object ref
        !          8179:  * @exc:  Exception Object ref
        !          8180:  *
        !          8181:  * NOT IMPLEMENTED
        !          8182:  * Returns: %TRUE
        !          8183:  */
        !          8184: GdomeBoolean
        !          8185: gdome_a_specified (GdomeAttr *self, GdomeException *exc)
        !          8186: {
        !          8187:  if (self == NULL) {
        !          8188:    *exc = GDOME_NULL_POINTER_ERR;
        !          8189:    return FALSE;
        !          8190:  }
        !          8191:  if (((Gdome_xml_Attr *)self)->n == NULL) {
        !          8192:    *exc = GDOME_INVALID_STATE_ERR;
        !          8193:    return FALSE;
        !          8194:  }
        !          8195:  *exc = 0;
        !          8196:  return ((Gdome_xml_Attr *)self)->vtab->specified (self, exc);
        !          8197: }
        !          8198: /**
        !          8199:  * gdome_a_value:
        !          8200:  * @self:  Attr Object ref
        !          8201:  * @exc:  Exception Object ref
        !          8202:  *
        !          8203:  * Returns: the value of this attribute.
        !          8204:  */
        !          8205: GdomeDOMString *
        !          8206: gdome_a_value (GdomeAttr *self, GdomeException *exc)
        !          8207: {
        !          8208:  if (self == NULL) {
        !          8209:    *exc = GDOME_NULL_POINTER_ERR;
        !          8210:    return NULL;
        !          8211:  }
        !          8212:  if (((Gdome_xml_Attr *)self)->n == NULL) {
        !          8213:    *exc = GDOME_INVALID_STATE_ERR;
        !          8214:    return NULL;
        !          8215:  }
        !          8216:  *exc = 0;
        !          8217:  return ((Gdome_xml_Attr *)self)->vtab->value (self, exc);
        !          8218: }
        !          8219: /**
        !          8220:  * gdome_a_set_value:
        !          8221:  * @self:  Attr Object ref
        !          8222:  * @value:  The new value to set
        !          8223:  * @exc:  Exception Object ref
        !          8224:  *
        !          8225:  * Sets the value of this attribute.
        !          8226:  *
        !          8227:  * %GDOME_NO_MODIFICATION_ALLOWED_ERR: Raised when the node is readonly.
        !          8228:  */
        !          8229: void
        !          8230: gdome_a_set_value (GdomeAttr *self, GdomeDOMString *value, GdomeException *exc)
        !          8231: {
        !          8232:  if (self == NULL) {
        !          8233:    *exc = GDOME_NULL_POINTER_ERR;
        !          8234:    return;
        !          8235:  }
        !          8236:  if (((Gdome_xml_Attr *)self)->n == NULL) {
        !          8237:    *exc = GDOME_INVALID_STATE_ERR;
        !          8238:    return;
        !          8239:  }
        !          8240:  *exc = 0;
        !          8241:  ((Gdome_xml_Attr *)self)->vtab->set_value (self, value, exc);
        !          8242: }
        !          8243: /**
        !          8244:  * gdome_a_attributes:
        !          8245:  * @self:  Node Object ref
        !          8246:  * @exc:  Exception Object ref
        !          8247:  *
        !          8248:  * Returns: a NamedNodeMap containing the attributes of this node (if it is an
        !          8249:  * Element) or %NULL otherwise.
        !          8250:  */
        !          8251: GdomeNamedNodeMap *
        !          8252: gdome_a_attributes (GdomeAttr *self, GdomeException *exc)
        !          8253: {
        !          8254:  if (self == NULL) {
        !          8255:    *exc = GDOME_NULL_POINTER_ERR;
        !          8256:    return NULL;
        !          8257:  }
        !          8258:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          8259:    *exc = GDOME_INVALID_STATE_ERR;
        !          8260:    return NULL;
        !          8261:  }
        !          8262:  *exc = 0;
        !          8263:  return ((Gdome_xml_Attr *)self)->vtab->super.attributes ((GdomeNode *)self, exc);
        !          8264: }
        !          8265: /**
        !          8266:  * gdome_a_childNodes:
        !          8267:  * @self:  Node Object ref
        !          8268:  * @exc:  Exception Object ref
        !          8269:  *
        !          8270:  * Returns: a NodeList that contains all children of this node. If there are no
        !          8271:  * children, this is a NodeList containing no nodes.  Note that attributes are
        !          8272:  * not considered to be children of element nodes - use gdome_n_attributes to
        !          8273:  * obtain the attributes.
        !          8274:  */
        !          8275: GdomeNodeList *
        !          8276: gdome_a_childNodes (GdomeAttr *self, GdomeException *exc)
        !          8277: {
        !          8278:  if (self == NULL) {
        !          8279:    *exc = GDOME_NULL_POINTER_ERR;
        !          8280:    return NULL;
        !          8281:  }
        !          8282:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          8283:    *exc = GDOME_INVALID_STATE_ERR;
        !          8284:    return NULL;
        !          8285:  }
        !          8286:  *exc = 0;
        !          8287:  return ((Gdome_xml_Attr *)self)->vtab->super.childNodes ((GdomeNode *)self, exc);
        !          8288: }
        !          8289: /**
        !          8290:  * gdome_a_firstChild:
        !          8291:  * @self:  Node Object ref
        !          8292:  * @exc:  Exception Object ref
        !          8293:  * 
        !          8294:  * Returns: the first child of this node. If there is no such node,
        !          8295:  * this returns %NULL.
        !          8296:  */
        !          8297: GdomeNode *
        !          8298: gdome_a_firstChild (GdomeAttr *self, GdomeException *exc)
        !          8299: {
        !          8300:  if (self == NULL) {
        !          8301:    *exc = GDOME_NULL_POINTER_ERR;
        !          8302:    return NULL;
        !          8303:  }
        !          8304:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          8305:    *exc = GDOME_INVALID_STATE_ERR;
        !          8306:    return NULL;
        !          8307:  }
        !          8308:  *exc = 0;
        !          8309:  return ((Gdome_xml_Attr *)self)->vtab->super.firstChild ((GdomeNode *)self, exc);
        !          8310: }
        !          8311: /**
        !          8312:  * gdome_a_lastChild:
        !          8313:  * @self:  Node Object ref
        !          8314:  * @exc:  Exception Object ref
        !          8315:  *
        !          8316:  * Returns: the last child of this node. If there is no such node,
        !          8317:  * this returns %NULL.
        !          8318:  */
        !          8319: GdomeNode *
        !          8320: gdome_a_lastChild (GdomeAttr *self, GdomeException *exc)
        !          8321: {
        !          8322:  if (self == NULL) {
        !          8323:    *exc = GDOME_NULL_POINTER_ERR;
        !          8324:    return NULL;
        !          8325:  }
        !          8326:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          8327:    *exc = GDOME_INVALID_STATE_ERR;
        !          8328:    return NULL;
        !          8329:  }
        !          8330:  *exc = 0;
        !          8331:  return ((Gdome_xml_Attr *)self)->vtab->super.lastChild ((GdomeNode *)self, exc);
        !          8332: }
        !          8333: /**
        !          8334:  * gdome_a_localName:
        !          8335:  * @self:  Node Objects ref
        !          8336:  * @exc:  Exception Object ref
        !          8337:  *
        !          8338:  * Returns: the local part of the qualified name of this node.
        !          8339:  * For nodes of any type other than %GDOME_ELEMENT_NODE and
        !          8340:  * %GDOME_ATTRIBUTE_NODE and nodes created with a DOM Level 1 method, this is
        !          8341:  * always %NULL.
        !          8342:  */
        !          8343: GdomeDOMString *
        !          8344: gdome_a_localName (GdomeAttr *self, GdomeException *exc)
        !          8345: {
        !          8346:  if (self == NULL) {
        !          8347:    *exc = GDOME_NULL_POINTER_ERR;
        !          8348:    return NULL;
        !          8349:  }
        !          8350:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          8351:    *exc = GDOME_INVALID_STATE_ERR;
        !          8352:    return NULL;
        !          8353:  }
        !          8354:  *exc = 0;
        !          8355:  return ((Gdome_xml_Attr *)self)->vtab->super.localName ((GdomeNode *)self, exc);
        !          8356: }
        !          8357: /**
        !          8358:  * gdome_a_namespaceURI:
        !          8359:  * @self:  Node Objects ref
        !          8360:  * @exc:  Exception Object ref
        !          8361:  *
        !          8362:  * Returns: the namespace URI of this node, or %NULL if it is unspecified.
        !          8363:  * For nodes of any type other than %GDOME_ELEMENT_NODE and
        !          8364:  * %GDOME_ATTRIBUTE_NODE and nodes created with a DOM Level 1 method, this is
        !          8365:  * always %NULL.
        !          8366:  */
        !          8367: GdomeDOMString *
        !          8368: gdome_a_namespaceURI (GdomeAttr *self, GdomeException *exc)
        !          8369: {
        !          8370:  if (self == NULL) {
        !          8371:    *exc = GDOME_NULL_POINTER_ERR;
        !          8372:    return NULL;
        !          8373:  }
        !          8374:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          8375:    *exc = GDOME_INVALID_STATE_ERR;
        !          8376:    return NULL;
        !          8377:  }
        !          8378:  *exc = 0;
        !          8379:  return ((Gdome_xml_Attr *)self)->vtab->super.namespaceURI ((GdomeNode *)self, exc);
        !          8380: }
        !          8381: /**
        !          8382:  * gdome_a_nextSibling:
        !          8383:  * @self:  Node Object ref
        !          8384:  * @exc:  Exception Object ref
        !          8385:  *
        !          8386:  * Returns: the node immediately following this node. If there is no such
        !          8387:  * node, this returns %NULL.
        !          8388:  */
        !          8389: GdomeNode *
        !          8390: gdome_a_nextSibling (GdomeAttr *self, GdomeException *exc)
        !          8391: {
        !          8392:  if (self == NULL) {
        !          8393:    *exc = GDOME_NULL_POINTER_ERR;
        !          8394:    return NULL;
        !          8395:  }
        !          8396:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          8397:    *exc = GDOME_INVALID_STATE_ERR;
        !          8398:    return NULL;
        !          8399:  }
        !          8400:  *exc = 0;
        !          8401:  return ((Gdome_xml_Attr *)self)->vtab->super.nextSibling ((GdomeNode *)self, exc);
        !          8402: }
        !          8403: /**
        !          8404:  * gdome_a_nodeName:
        !          8405:  * @self:  Node Object ref
        !          8406:  * @exc:  Exception Object ref
        !          8407:  *
        !          8408:  * Returns: the name of this node, depending on its type.
        !          8409:  */
        !          8410: GdomeDOMString *
        !          8411: gdome_a_nodeName (GdomeAttr *self, GdomeException *exc)
        !          8412: {
        !          8413:  if (self == NULL) {
        !          8414:    *exc = GDOME_NULL_POINTER_ERR;
        !          8415:    return NULL;
        !          8416:  }
        !          8417:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          8418:    *exc = GDOME_INVALID_STATE_ERR;
        !          8419:    return NULL;
        !          8420:  }
        !          8421:  *exc = 0;
        !          8422:  return ((Gdome_xml_Attr *)self)->vtab->super.nodeName ((GdomeNode *)self, exc);
        !          8423: }
        !          8424: /**
        !          8425:  * gdome_a_nodeType:
        !          8426:  * @self:  Node Object ref
        !          8427:  * @exc:  Exception Object ref
        !          8428:  *
        !          8429:  * Returns: an integer bigger than %0 representing the type of the underlying
        !          8430:  * object or %0 on error.
        !          8431:  */
        !          8432: unsigned short
        !          8433: gdome_a_nodeType (GdomeAttr *self, GdomeException *exc)
        !          8434: {
        !          8435:  if (self == NULL) {
        !          8436:    *exc = GDOME_NULL_POINTER_ERR;
        !          8437:    return 0;
        !          8438:  }
        !          8439:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          8440:    *exc = GDOME_INVALID_STATE_ERR;
        !          8441:    return 0;
        !          8442:  }
        !          8443:  *exc = 0;
        !          8444:  return ((Gdome_xml_Attr *)self)->vtab->super.nodeType ((GdomeNode *)self, exc);
        !          8445: }
        !          8446: /**
        !          8447:  * gdome_a_nodeValue:
        !          8448:  * @self:  Node Object ref
        !          8449:  * @exc:  Exception Object ref
        !          8450:  *
        !          8451:  * Returns: the value of this node, depending on its type.
        !          8452:  */
        !          8453: GdomeDOMString *
        !          8454: gdome_a_nodeValue (GdomeAttr *self, GdomeException *exc)
        !          8455: {
        !          8456:  if (self == NULL) {
        !          8457:    *exc = GDOME_NULL_POINTER_ERR;
        !          8458:    return NULL;
        !          8459:  }
        !          8460:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          8461:    *exc = GDOME_INVALID_STATE_ERR;
        !          8462:    return NULL;
        !          8463:  }
        !          8464:  *exc = 0;
        !          8465:  return ((Gdome_xml_Attr *)self)->vtab->super.nodeValue ((GdomeNode *)self, exc);
        !          8466: }
        !          8467: /**
        !          8468:  * gdome_a_set_nodeValue:
        !          8469:  * @self:  Node Object ref
        !          8470:  * @nodeValue:  The new value for this node.
        !          8471:  * @exc:  Exception Object ref
        !          8472:  *
        !          8473:  * Sets The value of this node, depending on its type.
        !          8474:  *
        !          8475:  * %GDOME_NO_MODIFICATION_ALLOWED_ERR: Raised when the node is readonly.
        !          8476:  */
        !          8477: void
        !          8478: gdome_a_set_nodeValue (GdomeAttr *self, GdomeDOMString *nodeValue, GdomeException *exc)
        !          8479: {
        !          8480:  if (self == NULL) {
        !          8481:    *exc = GDOME_NULL_POINTER_ERR;
        !          8482:    return;
        !          8483:  }
        !          8484:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          8485:    *exc = GDOME_INVALID_STATE_ERR;
        !          8486:    return;
        !          8487:  }
        !          8488:  *exc = 0;
        !          8489:  ((Gdome_xml_Attr *)self)->vtab->super.set_nodeValue ((GdomeNode *)self, nodeValue, exc);
        !          8490: }
        !          8491: /**
        !          8492:  * gdome_a_ownerDocument:
        !          8493:  * @self:  Node Objects ref
        !          8494:  * @exc:  Exception Object ref
        !          8495:  *
        !          8496:  * Returns: the documment object associated with this node. This is also the
        !          8497:  * Document object used to create new nodes. When this node is a Document or a
        !          8498:  * DocumentType which is not used with any Document yet, this is %NULL.
        !          8499:  */
        !          8500: GdomeDocument *
        !          8501: gdome_a_ownerDocument (GdomeAttr *self, GdomeException *exc)
        !          8502: {
        !          8503:  if (self == NULL) {
        !          8504:    *exc = GDOME_NULL_POINTER_ERR;
        !          8505:    return NULL;
        !          8506:  }
        !          8507:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          8508:    *exc = GDOME_INVALID_STATE_ERR;
        !          8509:    return NULL;
        !          8510:  }
        !          8511:  *exc = 0;
        !          8512:  return ((Gdome_xml_Attr *)self)->vtab->super.ownerDocument ((GdomeNode *)self, exc);
        !          8513: }
        !          8514: /**
        !          8515:  * gdome_a_parentNode:
        !          8516:  * @self: Node Object ref
        !          8517:  * @exc: Exception Object ref
        !          8518:  *
        !          8519:  * Returns: the parent of this node. All nodes, except Attr,
        !          8520:  * Document, DocumentFragment, Entity, and Notation may have a parent. However,
        !          8521:  * if a node has just been created and not yet added to the tree, or if it has
        !          8522:  * been removed from the tree, this is %NULL.
        !          8523:  */
        !          8524: GdomeNode *
        !          8525: gdome_a_parentNode (GdomeAttr *self, GdomeException *exc)
        !          8526: {
        !          8527:  if (self == NULL) {
        !          8528:    *exc = GDOME_NULL_POINTER_ERR;
        !          8529:    return NULL;
        !          8530:  }
        !          8531:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          8532:    *exc = GDOME_INVALID_STATE_ERR;
        !          8533:    return NULL;
        !          8534:  }
        !          8535:  *exc = 0;
        !          8536:  return ((Gdome_xml_Attr *)self)->vtab->super.parentNode ((GdomeNode *)self, exc);
        !          8537: }
        !          8538: /**
        !          8539:  * gdome_a_prefix:
        !          8540:  * @self:  Node Objects ref
        !          8541:  * @exc:  Exception Object ref
        !          8542:  *
        !          8543:  * Returns: the namespace prefix of this node, or %NULL if it is unspecified.
        !          8544:  * For nodes of any type other than %GDOME_ELEMENT_NODE and
        !          8545:  * %GDOME_ATTRIBUTE_NODE and nodes created with a DOM Level 1 method, this is
        !          8546:  * always %NULL.
        !          8547:  */
        !          8548: GdomeDOMString *
        !          8549: gdome_a_prefix (GdomeAttr *self, GdomeException *exc)
        !          8550: {
        !          8551:  if (self == NULL) {
        !          8552:    *exc = GDOME_NULL_POINTER_ERR;
        !          8553:    return NULL;
        !          8554:  }
        !          8555:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          8556:    *exc = GDOME_INVALID_STATE_ERR;
        !          8557:    return NULL;
        !          8558:  }
        !          8559:  *exc = 0;
        !          8560:  return ((Gdome_xml_Attr *)self)->vtab->super.prefix ((GdomeNode *)self, exc);
        !          8561: }
        !          8562: /**
        !          8563:  * gdome_a_set_prefix:
        !          8564:  * @self:  Node Object ref
        !          8565:  * @prefix:  The new prefix for this node.
        !          8566:  * @exc:  Exception Object ref
        !          8567:  *
        !          8568:  * Sets a new nemaspace prefix for this node.
        !          8569:  *
        !          8570:  * %GDOME_NO_MODIFICATION_ALLOWED_ERR: Raised when the node is readonly.
        !          8571:  * %GDOME_NAMESPACE_ERR: Raised if the specified @prefix is malformed per the
        !          8572:  * Namespaces in XML specification, if the namespaceURI of this node is %NULL,
        !          8573:  * if the specified prefix is "xml" and the namespaceURI of this node is
        !          8574:  * different from "http://www.w3.org/XML/1998/namespace", if this node is an
        !          8575:  * attribute and the specified prefix is "xmlns" and the namespaceURI of this
        !          8576:  * node is different from "http://www.w3.org/2000/xmlns/", or if this node is
        !          8577:  * an attribute and the qualifiedName of this node is "xmlns".
        !          8578:  */
        !          8579: void
        !          8580: gdome_a_set_prefix (GdomeAttr *self, GdomeDOMString *prefix, GdomeException *exc)
        !          8581: {
        !          8582:  if (self == NULL) {
        !          8583:    *exc = GDOME_NULL_POINTER_ERR;
        !          8584:    return;
        !          8585:  }
        !          8586:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          8587:    *exc = GDOME_INVALID_STATE_ERR;
        !          8588:    return;
        !          8589:  }
        !          8590:  *exc = 0;
        !          8591:  ((Gdome_xml_Attr *)self)->vtab->super.set_prefix ((GdomeNode *)self, prefix, exc);
        !          8592: }
        !          8593: /**
        !          8594:  * gdome_a_previousSibling:
        !          8595:  * @self:  Node Object ref
        !          8596:  * @exc:  Exception Object ref
        !          8597:  *
        !          8598:  * Returns: the node immediately preceding this node. If there is no such
        !          8599:  * node, this returns %NULL.
        !          8600:  */
        !          8601: GdomeNode *
        !          8602: gdome_a_previousSibling (GdomeAttr *self, GdomeException *exc)
        !          8603: {
        !          8604:  if (self == NULL) {
        !          8605:    *exc = GDOME_NULL_POINTER_ERR;
        !          8606:    return NULL;
        !          8607:  }
        !          8608:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          8609:    *exc = GDOME_INVALID_STATE_ERR;
        !          8610:    return NULL;
        !          8611:  }
        !          8612:  *exc = 0;
        !          8613:  return ((Gdome_xml_Attr *)self)->vtab->super.previousSibling ((GdomeNode *)self, exc);
        !          8614: }
        !          8615: /**
        !          8616:  * gdome_a_ref:
        !          8617:  * @self:  Node Object ref
        !          8618:  * @exc:  Exception Object ref
        !          8619:  *
        !          8620:  * Increase the reference count of the specified Node.
        !          8621:  */
        !          8622: void
        !          8623: gdome_a_ref (GdomeAttr *self, GdomeException *exc)
        !          8624: {
        !          8625:  if (self == NULL) {
        !          8626:    *exc = GDOME_NULL_POINTER_ERR;
        !          8627:    return;
        !          8628:  }
        !          8629:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          8630:    *exc = GDOME_INVALID_STATE_ERR;
        !          8631:    return;
        !          8632:  }
        !          8633:  *exc = 0;
        !          8634:  ((Gdome_xml_Attr *)self)->vtab->super.ref ((GdomeNode *)self, exc);
        !          8635: }
        !          8636: /**
        !          8637:  * gdome_a_unref:
        !          8638:  * @self:  Node Object ref
        !          8639:  * @exc:  Exception Object ref
        !          8640:  *
        !          8641:  * Decrease the reference count of the specified Node. Free the Node structure
        !          8642:  * if the Node will have zero reference.
        !          8643:  */
        !          8644: void
        !          8645: gdome_a_unref (GdomeAttr *self, GdomeException *exc)
        !          8646: {
        !          8647:  if (self == NULL) {
        !          8648:    *exc = GDOME_NULL_POINTER_ERR;
        !          8649:    return;
        !          8650:  }
        !          8651:  *exc = 0;
        !          8652:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          8653:    if (((Gdome_xml_Node *)self)->refcnt > 0)
        !          8654:      ((Gdome_xml_Node *)self)->refcnt--;
        !          8655: 
        !          8656:    if (((Gdome_xml_Node *)self)->refcnt == 0 && ((Gdome_xml_Node *)self)->ll == NULL) {
        !          8657: #ifdef DEBUG_REFCNT
        !          8658:      gdome_refdbg_delRef ((void *)self, GDOME_REFDBG_NODE);
        !          8659: #endif
        !          8660:      g_free (self);
        !          8661:    }
        !          8662:    return;
        !          8663:  }
        !          8664:  ((Gdome_xml_Attr *)self)->vtab->super.unref ((GdomeNode *)self, exc);
        !          8665: }
        !          8666: /**
        !          8667:  * gdome_a_query_interface:
        !          8668:  * @self:  Node Object ref
        !          8669:  * @interface:  interface needed
        !          8670:  * @exc:  Exception Object ref
        !          8671:  *
        !          8672:  * Returns: a reference to this object that implements the @interface needed,
        !          8673:  *          or %NULL if the @interface is not supported by this Object.
        !          8674:  */
        !          8675: gpointer
        !          8676: gdome_a_query_interface (GdomeAttr *self, const char *interface, GdomeException *exc)
        !          8677: {
        !          8678:  if (self == NULL) {
        !          8679:    *exc = GDOME_NULL_POINTER_ERR;
        !          8680:    return NULL;
        !          8681:  }
        !          8682:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          8683:    *exc = GDOME_INVALID_STATE_ERR;
        !          8684:    return NULL;
        !          8685:  }
        !          8686:  *exc = 0;
        !          8687:  return ((Gdome_xml_Attr *)self)->vtab->super.query_interface ((GdomeNode *)self, interface, exc);
        !          8688: }
        !          8689: /**
        !          8690:  * gdome_a_appendChild:
        !          8691:  * @self:  Node Object ref
        !          8692:  * @newChild:  The node to add
        !          8693:  * @exc:  Exception Object ref
        !          8694:  *
        !          8695:  * Adds the node @newChild to the end of the list of children of this node.
        !          8696:  * If the @newChild is already in the tree, it is first removed. If it is a
        !          8697:  * DocumentFragment node, the entire contents of the document fragment are
        !          8698:  * moved into the child list of this node
        !          8699:  *
        !          8700:  * %GDOME_HIERARCHY_REQUEST_ERR: Raised if this node is of a type that does not
        !          8701:  * allow children of the type of the @newChild node, or if the node to append is
        !          8702:  * one of this node's ancestors or this node itself.
        !          8703:  * %GDOME_WRONG_DOCUMENT_ERR: Raised if @newChild was created from a different
        !          8704:  * document than the one that created this node.
        !          8705:  * %GDOME_NO_MODIFICATION_ALLOWED_ERR: Raised when the node is readonly.
        !          8706:  * Returns: the node added.
        !          8707:  */
        !          8708: GdomeNode *
        !          8709: gdome_a_appendChild (GdomeAttr *self, GdomeNode *newChild, GdomeException *exc)
        !          8710: {
        !          8711:  if (self == NULL) {
        !          8712:    *exc = GDOME_NULL_POINTER_ERR;
        !          8713:    return NULL;
        !          8714:  }
        !          8715:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          8716:    *exc = GDOME_INVALID_STATE_ERR;
        !          8717:    return NULL;
        !          8718:  }
        !          8719:  *exc = 0;
        !          8720:  return ((Gdome_xml_Attr *)self)->vtab->super.appendChild ((GdomeNode *)self, newChild, exc);
        !          8721: }
        !          8722: /**
        !          8723:  * gdome_a_cloneNode:
        !          8724:  * @self:  Node Object ref
        !          8725:  * @deep:  If true, recursively clone the subtree under the specified node;
        !          8726:  *         if false, clone only the node itself (and its attributes, if it is
        !          8727:  *         an Element).
        !          8728:  * @exc:  Exception Object ref
        !          8729:  *
        !          8730:  * Makes a duplicate of this node, i.e., serves as a generic copy
        !          8731:  * constructor for nodes. The duplicate node has no parent; (parentNode is
        !          8732:  * %NULL).
        !          8733:  * %GDOME_DOCUMENT_TYPE_NODE, %GDOME_NOTATION_NODE and %GDOME_ENTITY_NODE
        !          8734:  * nodes are not supported.
        !          8735:  *
        !          8736:  * %GDOME_NOT_SUPPORTED_ERR: Raised if the type of node being cloned is not
        !          8737:  * supported.
        !          8738:  * Returns: the duplicate node.
        !          8739:  */
        !          8740: GdomeNode *
        !          8741: gdome_a_cloneNode (GdomeAttr *self, GdomeBoolean deep, GdomeException *exc)
        !          8742: {
        !          8743:  if (self == NULL) {
        !          8744:    *exc = GDOME_NULL_POINTER_ERR;
        !          8745:    return NULL;
        !          8746:  }
        !          8747:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          8748:    *exc = GDOME_INVALID_STATE_ERR;
        !          8749:    return NULL;
        !          8750:  }
        !          8751:  *exc = 0;
        !          8752:  return ((Gdome_xml_Attr *)self)->vtab->super.cloneNode ((GdomeNode *)self, deep, exc);
        !          8753: }
        !          8754: /**
        !          8755:  * gdome_a_hasAttributes:
        !          8756:  * @self:  Node Object ref
        !          8757:  * @exc:  Exception Object ref
        !          8758:  *
        !          8759:  * Returns: %TRUE if this node has any attributes, %FALSE otherwise.
        !          8760:  */
        !          8761: GdomeBoolean
        !          8762: gdome_a_hasAttributes (GdomeAttr *self, GdomeException *exc)
        !          8763: {
        !          8764:  if (self == NULL) {
        !          8765:    *exc = GDOME_NULL_POINTER_ERR;
        !          8766:    return FALSE;
        !          8767:  }
        !          8768:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          8769:    *exc = GDOME_INVALID_STATE_ERR;
        !          8770:    return FALSE;
        !          8771:  }
        !          8772:  *exc = 0;
        !          8773:  return ((Gdome_xml_Attr *)self)->vtab->super.hasAttributes ((GdomeNode *)self, exc);
        !          8774: }
        !          8775: /**
        !          8776:  * gdome_a_hasChildNodes:
        !          8777:  * @self:  Node Object ref
        !          8778:  * @exc:  Exception Object ref
        !          8779:  *
        !          8780:  * Returns: %TRUE if this node has any children, %FALSE otherwise.
        !          8781:  */
        !          8782: GdomeBoolean
        !          8783: gdome_a_hasChildNodes (GdomeAttr *self, GdomeException *exc)
        !          8784: {
        !          8785:  if (self == NULL) {
        !          8786:    *exc = GDOME_NULL_POINTER_ERR;
        !          8787:    return FALSE;
        !          8788:  }
        !          8789:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          8790:    *exc = GDOME_INVALID_STATE_ERR;
        !          8791:    return FALSE;
        !          8792:  }
        !          8793:  *exc = 0;
        !          8794:  return ((Gdome_xml_Attr *)self)->vtab->super.hasChildNodes ((GdomeNode *)self, exc);
        !          8795: }
        !          8796: /**
        !          8797:  * gdome_a_insertBefore:
        !          8798:  * @self:  Node Object ref
        !          8799:  * @newChild:  The new node to put in the child list
        !          8800:  * @refChild:  the reference node, i.e., the node before which the new node
        !          8801:  *             must be inserted.
        !          8802:  * @exc:  Exception Object ref
        !          8803:  *
        !          8804:  * Inserts the node @newChild before the existing child node @refChild. If
        !          8805:  * @refChild is %NULL, insert @newChild at the end of the list of children.
        !          8806:  * If @newChild is a DocumentFragment node, all of its children are inserted,
        !          8807:  * in the same order, before @refChild. If the @newChild is already in the
        !          8808:  * tree, it is first removed.
        !          8809:  *
        !          8810:  * %GDOME_HIERARCHY_REQUEST_ERR: Raised if this node is of a type that does not
        !          8811:  * allow children of the type of the @newChild node, or if the node to insert is
        !          8812:  * one of this node's ancestors or this node itself.
        !          8813:  * %GDOME_WRONG_DOCUMENT_ERR: Raised if @newChild was created from a different
        !          8814:  * document than the one that created this node.
        !          8815:  * %GDOME_NOT_FOUND_ERR: Raised if @refChild is not a child of this node.
        !          8816:  * %GDOME_NO_MODIFICATION_ALLOWED_ERR: Raised when the node is readonly.
        !          8817:  * Returns: the node being inserted.
        !          8818:  */
        !          8819: GdomeNode *
        !          8820: gdome_a_insertBefore (GdomeAttr *self, GdomeNode *newChild, GdomeNode *refChild, GdomeException *exc)
        !          8821: {
        !          8822:  if (self == NULL) {
        !          8823:    *exc = GDOME_NULL_POINTER_ERR;
        !          8824:    return NULL;
        !          8825:  }
        !          8826:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          8827:    *exc = GDOME_INVALID_STATE_ERR;
        !          8828:    return NULL;
        !          8829:  }
        !          8830:  *exc = 0;
        !          8831:  return ((Gdome_xml_Attr *)self)->vtab->super.insertBefore ((GdomeNode *)self, newChild, refChild, exc);
        !          8832: }
        !          8833: /**
        !          8834:  * gdome_a_isSupported:
        !          8835:  * @self:  Node Object ref
        !          8836:  * @feature:  The name of the feature to test.
        !          8837:  * @version:  This is the version number of the feature to test. In Level 2,
        !          8838:  *            version 1, this is the string "2.0". If the version is not
        !          8839:  *            specified, supporting any version of the feature will cause the
        !          8840:  *            method to return %TRUE.
        !          8841:  * @exc:  Exception Object ref
        !          8842:  *
        !          8843:  * Tests whether the DOM implementation implements a specific feature and that
        !          8844:  * feature is supported by this node.
        !          8845:  * Returns: %TRUE if the specified feature is supported on this node, %FALSE
        !          8846:  * otherwise.
        !          8847:  */
        !          8848: GdomeBoolean
        !          8849: gdome_a_isSupported (GdomeAttr *self, GdomeDOMString *feature, GdomeDOMString *version, GdomeException *exc)
        !          8850: {
        !          8851:  if (self == NULL) {
        !          8852:    *exc = GDOME_NULL_POINTER_ERR;
        !          8853:    return FALSE;
        !          8854:  }
        !          8855:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          8856:    *exc = GDOME_INVALID_STATE_ERR;
        !          8857:    return FALSE;
        !          8858:  }
        !          8859:  *exc = 0;
        !          8860:  return ((Gdome_xml_Attr *)self)->vtab->super.isSupported ((GdomeNode *)self, feature, version, exc);
        !          8861: }
        !          8862: /**
        !          8863:  * gdome_a_normalize:
        !          8864:  * @self:  Node Object ref
        !          8865:  * @exc:  Exception Object ref
        !          8866:  *
        !          8867:  * Puts all Text nodes in the full depth of the sub-tree underneath this Node,
        !          8868:  * including attribute nodes, into a "normal" form where only structure (e.g.,
        !          8869:  * elements, comments, processing instructions, CDATA sections, and entity
        !          8870:  * references) separates Text nodes, i.e., there are neither adjacent Text
        !          8871:  * nodes nor empty Text nodes.
        !          8872:  */
        !          8873: void
        !          8874: gdome_a_normalize (GdomeAttr *self, GdomeException *exc)
        !          8875: {
        !          8876:  if (self == NULL) {
        !          8877:    *exc = GDOME_NULL_POINTER_ERR;
        !          8878:    return;
        !          8879:  }
        !          8880:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          8881:    *exc = GDOME_INVALID_STATE_ERR;
        !          8882:    return;
        !          8883:  }
        !          8884:  *exc = 0;
        !          8885:  ((Gdome_xml_Attr *)self)->vtab->super.normalize ((GdomeNode *)self, exc);
        !          8886: }
        !          8887: /**
        !          8888:  * gdome_a_removeChild:
        !          8889:  * @self:  Node Object ref
        !          8890:  * @oldChild:  The node being removed
        !          8891:  * @exc:  Exception Object ref
        !          8892:  *
        !          8893:  * Removes the child node indicated by @oldChild from the list of children, and
        !          8894:  * returns it.
        !          8895:  *
        !          8896:  * %GDOME_NOT_FOUND_ERR: Raised if @oldChild is not a child of this node.
        !          8897:  * %GDOME_NO_MODIFICATION_ALLOWED_ERR: Raised when the node is readonly.
        !          8898:  * Returns: the node removed.
        !          8899:  */
        !          8900: GdomeNode *
        !          8901: gdome_a_removeChild (GdomeAttr *self, GdomeNode *oldChild, GdomeException *exc)
        !          8902: {
        !          8903:  if (self == NULL) {
        !          8904:    *exc = GDOME_NULL_POINTER_ERR;
        !          8905:    return NULL;
        !          8906:  }
        !          8907:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          8908:    *exc = GDOME_INVALID_STATE_ERR;
        !          8909:    return NULL;
        !          8910:  }
        !          8911:  *exc = 0;
        !          8912:  return ((Gdome_xml_Attr *)self)->vtab->super.removeChild ((GdomeNode *)self, oldChild, exc);
        !          8913: }
        !          8914: /**
        !          8915:  * gdome_a_replaceChild:
        !          8916:  * @self:  Node Object ref
        !          8917:  * @newChild:  The new node to put in the child list
        !          8918:  * @oldChild:  The node being replaced in the list
        !          8919:  * @exc:  Exception Object ref
        !          8920:  *
        !          8921:  * Replaces the child node @oldChild with @newChild in the list of children,
        !          8922:  * and returns the @oldChild node. If @newChild is a DocumentFragment object,
        !          8923:  * @oldChild is replaced by all of the DocumentFragment children, which are
        !          8924:  * inserted in the same order. If the @newChild is already in the tree, it is
        !          8925:  * first removed.
        !          8926:  *
        !          8927:  * %GDOME_HIERARCHY_REQUEST_ERR: Raised if this node is of a type that does
        !          8928:  * not allow children of the type of the @newChild node, or if the node to put
        !          8929:  * in is one of this node's ancestors or this node itself.
        !          8930:  * %GDOME_WRONG_DOCUMENT_ERR: Raised if @newChild was created from a different
        !          8931:  * document than the one that created this node.
        !          8932:  * %GDOME_NOT_FOUND_ERR: Raised if @oldChild is not a child of this node.
        !          8933:  * %GDOME_NO_MODIFICATION_ALLOWED_ERR: Raised when the node is readonly.
        !          8934:  * Returns: the node replaced.
        !          8935:  */
        !          8936: GdomeNode *
        !          8937: gdome_a_replaceChild (GdomeAttr *self, GdomeNode *newChild, GdomeNode *oldChild, GdomeException *exc)
        !          8938: {
        !          8939:  if (self == NULL) {
        !          8940:    *exc = GDOME_NULL_POINTER_ERR;
        !          8941:    return NULL;
        !          8942:  }
        !          8943:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          8944:    *exc = GDOME_INVALID_STATE_ERR;
        !          8945:    return NULL;
        !          8946:  }
        !          8947:  *exc = 0;
        !          8948:  return ((Gdome_xml_Attr *)self)->vtab->super.replaceChild ((GdomeNode *)self, newChild, oldChild, exc);
        !          8949: }
        !          8950: /**
        !          8951:  * gdome_a_addEventListener:
        !          8952:  * @self:  Node Object ref
        !          8953:  * @type:  the event type for which the user is registering
        !          8954:  * @listener:  the listener parameter takes an interface implemented by the
        !          8955:  *             user which contains the methods to be called when the event occurs.
        !          8956:  * @useCapture:  if %TRUE, useCapture indicates that the user wishes to initiate
        !          8957:  *               capture. After initiating capture, all events of the specified
        !          8958:  *               type will be dispatched to the registered EventListener before
        !          8959:  *               being dispatched to any EventTargets beneath them in the tree.
        !          8960:  *               Events which are bubbling upward through the tree will not
        !          8961:  *               trigger an EventListener designated to use capture.
        !          8962:  * @exc:  Exception Object ref
        !          8963:  *
        !          8964:  * This method allows the registration of event listeners on the event target.
        !          8965:  * If an EventListener is added to an EventTarget while it is processing an
        !          8966:  * event, it will not be triggered by the current actions but may be triggered
        !          8967:  * during a later stage of event flow, such as the bubbling phase.
        !          8968:  * If multiple identical EventListeners are registered on the same EventTarget
        !          8969:  * with the same parameters the duplicate instances are discarded. They do not
        !          8970:  * cause the EventListener to be called twice and since they are discarded
        !          8971:  * they do not need to be removed with the removeEventListener method.
        !          8972:  */
        !          8973: void
        !          8974: gdome_a_addEventListener (GdomeAttr *self, GdomeDOMString *type, GdomeEventListener *listener, GdomeBoolean useCapture, GdomeException *exc)
        !          8975: {
        !          8976:  if (self == NULL) {
        !          8977:    *exc = GDOME_NULL_POINTER_ERR;
        !          8978:    return;
        !          8979:  }
        !          8980:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          8981:    *exc = GDOME_INVALID_STATE_ERR;
        !          8982:    return;
        !          8983:  }
        !          8984:  *exc = 0;
        !          8985:  ((Gdome_xml_Attr *)self)->vtab->super.addEventListener ((GdomeNode *)self, type, listener, useCapture, exc);
        !          8986: }
        !          8987: /**
        !          8988:  * gdome_a_removeEventListener:
        !          8989:  * @self:  Node Object ref
        !          8990:  * @type:  Specifies the event type of the EventListener being removed.
        !          8991:  * @listener:  The EventListener parameter indicates the EventListener to be
        !          8992:  *             removed.
        !          8993:  * @useCapture:  Specifies whether the EventListener being removed was
        !          8994:  *               registered as a capturing listener or not. If a listener was
        !          8995:  *               registered twice, one with capture and one without, each must
        !          8996:  *               be removed separately. Removal of a capturing listener does
        !          8997:  *               not affect a non-capturing version of the same listener, and
        !          8998:  *               vice versa.
        !          8999:  * @exc:  Exception Object ref
        !          9000:  *
        !          9001:  * This method allows the removal of event listeners from the event target. If
        !          9002:  * an EventListener is removed from an EventTarget while it is processing an
        !          9003:  * event, it will not be triggered by the current actions. EventListeners can
        !          9004:  * never be invoked after being removed. Calling removeEventListener with
        !          9005:  * arguments which do not identify any currently registered EventListener on
        !          9006:  * the EventTarget has no effect.
        !          9007:  */
        !          9008: void
        !          9009: gdome_a_removeEventListener (GdomeAttr *self, GdomeDOMString *type, GdomeEventListener *listener, GdomeBoolean useCapture, GdomeException *exc)
        !          9010: {
        !          9011:  if (self == NULL) {
        !          9012:    *exc = GDOME_NULL_POINTER_ERR;
        !          9013:    return;
        !          9014:  }
        !          9015:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          9016:    *exc = GDOME_INVALID_STATE_ERR;
        !          9017:    return;
        !          9018:  }
        !          9019:  *exc = 0;
        !          9020:  ((Gdome_xml_Attr *)self)->vtab->super.removeEventListener ((GdomeNode *)self, type, listener, useCapture, exc);
        !          9021: }
        !          9022: /**
        !          9023:  * gdome_a_dispatchEvent:
        !          9024:  * @self:  Node Object ref
        !          9025:  * @evt:  Specifies the event type, behavior, and contextual information to be
        !          9026:  *        used in processing the event.
        !          9027:  * @exc:  Exception Object ref
        !          9028:  *
        !          9029:  * This method allows the dispatch of events into the implementations event
        !          9030:  * model. Events dispatched in this manner will have the same capturing and
        !          9031:  * bubbling behavior as events dispatched directly by the implementation. The
        !          9032:  * target of the event is the EventTarget on which dispatchEvent is called.
        !          9033:  *
        !          9034:  * GDOME_UNSPECIFIED_EVENT_TYPE_ERR: Raised if the Event's type was not
        !          9035:  * specified by initializing the event before dispatchEvent was called.
        !          9036:  * Specification of the Event's type as %NULL or an empty string will also
        !          9037:  * trigger this exception.
        !          9038:  * Returns: if preventDefault was called the value is %FALSE, else the value
        !          9039:  *          is %TRUE.
        !          9040:  */
        !          9041: GdomeBoolean
        !          9042: gdome_a_dispatchEvent (GdomeAttr *self, GdomeEvent *evt, GdomeException *exc)
        !          9043: {
        !          9044:  if (self == NULL) {
        !          9045:    *exc = GDOME_NULL_POINTER_ERR;
        !          9046:    return FALSE;
        !          9047:  }
        !          9048:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          9049:    *exc = GDOME_INVALID_STATE_ERR;
        !          9050:    return FALSE;
        !          9051:  }
        !          9052:  *exc = 0;
        !          9053:  return ((Gdome_xml_Attr *)self)->vtab->super.dispatchEvent ((GdomeNode *)self, evt, exc);
        !          9054: }
        !          9055: /**
        !          9056:  * gdome_a_subTreeDispatchEvent:
        !          9057:  * @self:  Node Object ref
        !          9058:  * @evt:  Specifies the event type, behavior, and contextual information to be
        !          9059:  *        used in processing the event.
        !          9060:  * @exc:  Exception Object ref
        !          9061:  *
        !          9062:  * This method allows the dispatch of events into the implementations event
        !          9063:  * model. Events dispatched in this manner will have the same capturing and
        !          9064:  * bubbling behavior as events dispatched directly by the implementation. The
        !          9065:  * target of the event is any nodes in the subtree of the EventTarget on which
        !          9066:  * dispatchEvent is called.
        !          9067:  *
        !          9068:  * GDOME_UNSPECIFIED_EVENT_TYPE_ERR: Raised if the Event's type was not
        !          9069:  * specified by initializing the event before dispatchEvent was called.
        !          9070:  * Specification of the Event's type as %NULL or an empty string will also
        !          9071:  * trigger this exception.
        !          9072:  */
        !          9073: void
        !          9074: gdome_a_subTreeDispatchEvent (GdomeAttr *self, GdomeEvent *evt, GdomeException *exc)
        !          9075: {
        !          9076:  if (self == NULL) {
        !          9077:    *exc = GDOME_NULL_POINTER_ERR;
        !          9078:    return;
        !          9079:  }
        !          9080:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          9081:    *exc = GDOME_INVALID_STATE_ERR;
        !          9082:    return;
        !          9083:  }
        !          9084:  *exc = 0;
        !          9085:  ((Gdome_xml_Attr *)self)->vtab->super.subTreeDispatchEvent ((GdomeNode *)self, evt, exc);
        !          9086: }
        !          9087: /**
        !          9088:  * gdome_a_canAppend:
        !          9089:  * @self:  Node Object ref
        !          9090:  * @newChild:  The Node Object ref of the node to test
        !          9091:  * @exc:  Exception Object ref
        !          9092:  *
        !          9093:  * Tests if a @newChild can be added in the child list of this node.
        !          9094:  * Returns: %TRUE if @newChild can be added, %FALSE otherwise.
        !          9095:  */
        !          9096: GdomeBoolean
        !          9097: gdome_a_canAppend (GdomeAttr *self, GdomeNode *newChild, GdomeException *exc)
        !          9098: {
        !          9099:  if (self == NULL) {
        !          9100:    *exc = GDOME_NULL_POINTER_ERR;
        !          9101:    return FALSE;
        !          9102:  }
        !          9103:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          9104:    *exc = GDOME_INVALID_STATE_ERR;
        !          9105:    return FALSE;
        !          9106:  }
        !          9107:  *exc = 0;
        !          9108:  return ((Gdome_xml_Attr *)self)->vtab->super.canAppend ((GdomeNode *)self, newChild, exc);
        !          9109: }
        !          9110: 
        !          9111: /******************************************************************************
        !          9112:           GdomeElement interface API
        !          9113:  ******************************************************************************/
        !          9114: /**
        !          9115:  * gdome_el_tagName:
        !          9116:  * @self:  Element Objects ref
        !          9117:  * @exc:  Exception Object ref
        !          9118:  *
        !          9119:  * Returns: the qualified name of the element.
        !          9120:  */
        !          9121: GdomeDOMString *
        !          9122: gdome_el_tagName (GdomeElement *self, GdomeException *exc)
        !          9123: {
        !          9124:  if (self == NULL) {
        !          9125:    *exc = GDOME_NULL_POINTER_ERR;
        !          9126:    return NULL;
        !          9127:  }
        !          9128:  if (((Gdome_xml_Element *)self)->n == NULL) {
        !          9129:    *exc = GDOME_INVALID_STATE_ERR;
        !          9130:    return NULL;
        !          9131:  }
        !          9132:  *exc = 0;
        !          9133:  return ((Gdome_xml_Element *)self)->vtab->tagName (self, exc);
        !          9134: }
        !          9135: /**
        !          9136:  * gdome_el_getAttribute:
        !          9137:  * @self:  Element Objects ref
        !          9138:  * @name:  The name of attribute of which the value is wanted
        !          9139:  * @exc:  Exception Object ref
        !          9140:  *
        !          9141:  * Retrieves an attribute value by name.
        !          9142:  * Returns: the Attr value as a string, or the empty string if that attribute
        !          9143:  * does not have a specified or default value.
        !          9144:  */
        !          9145: GdomeDOMString *
        !          9146: gdome_el_getAttribute (GdomeElement *self, GdomeDOMString *name, GdomeException *exc)
        !          9147: {
        !          9148:  if (self == NULL) {
        !          9149:    *exc = GDOME_NULL_POINTER_ERR;
        !          9150:    return NULL;
        !          9151:  }
        !          9152:  if (((Gdome_xml_Element *)self)->n == NULL) {
        !          9153:    *exc = GDOME_INVALID_STATE_ERR;
        !          9154:    return NULL;
        !          9155:  }
        !          9156:  *exc = 0;
        !          9157:  return ((Gdome_xml_Element *)self)->vtab->getAttribute (self, name, exc);
        !          9158: }
        !          9159: /**
        !          9160:  * gdome_el_getAttributeNS:
        !          9161:  * @self:  Element Objects ref
        !          9162:  * @namespaceURI:  The namespaceURI of attribute to retrieve
        !          9163:  * @localName:  The localName of the attribute to retrieve
        !          9164:  * @exc:  Exception Object ref
        !          9165:  *
        !          9166:  * Retrieves an attribute value by local name and namespace URI.
        !          9167:  * Returns: the Attr value as a string, or the empty string if that attribute
        !          9168:  * does not have a specified or default value.
        !          9169:  */
        !          9170: GdomeDOMString *
        !          9171: gdome_el_getAttributeNS (GdomeElement *self, GdomeDOMString *namespaceURI, GdomeDOMString *localName, GdomeException *exc)
        !          9172: {
        !          9173:  if (self == NULL) {
        !          9174:    *exc = GDOME_NULL_POINTER_ERR;
        !          9175:    return NULL;
        !          9176:  }
        !          9177:  if (((Gdome_xml_Element *)self)->n == NULL) {
        !          9178:    *exc = GDOME_INVALID_STATE_ERR;
        !          9179:    return NULL;
        !          9180:  }
        !          9181:  *exc = 0;
        !          9182:  return ((Gdome_xml_Element *)self)->vtab->getAttributeNS (self, namespaceURI, localName, exc);
        !          9183: }
        !          9184: /**
        !          9185:  * gdome_el_getAttributeNode:
        !          9186:  * @self:  Element Objects ref
        !          9187:  * @name:  The name of the attribute to retreive
        !          9188:  * @exc:  Exception Object ref
        !          9189:  *
        !          9190:  * Retrieves an attribute node by name.
        !          9191:  * To retrieve an attribute node by qualified name and namespace URI, use the
        !          9192:  * gdome_el_getAttributeNodeNS() method.
        !          9193:  * Returns: the Attr node with the specified @name or %NULL if there is no such
        !          9194:  * attribute.
        !          9195:  */
        !          9196: GdomeAttr *
        !          9197: gdome_el_getAttributeNode (GdomeElement *self, GdomeDOMString *name, GdomeException *exc)
        !          9198: {
        !          9199:  if (self == NULL) {
        !          9200:    *exc = GDOME_NULL_POINTER_ERR;
        !          9201:    return NULL;
        !          9202:  }
        !          9203:  if (((Gdome_xml_Element *)self)->n == NULL) {
        !          9204:    *exc = GDOME_INVALID_STATE_ERR;
        !          9205:    return NULL;
        !          9206:  }
        !          9207:  *exc = 0;
        !          9208:  return ((Gdome_xml_Element *)self)->vtab->getAttributeNode (self, name, exc);
        !          9209: }
        !          9210: /**
        !          9211:  * gdome_el_getAttributeNodeNS:
        !          9212:  * @self:  Element Objects ref
        !          9213:  * @namespaceURI:  The namespace URI of the attribute to retrieve.
        !          9214:  * @localName:  The local name of the attribute to retrieve.
        !          9215:  * @exc:  Exception Object ref
        !          9216:  *
        !          9217:  * Retrieves an Attr node by local name and namespace URI.
        !          9218:  * Returns: the Attr node with the specified attribute local name and
        !          9219:  * namespace URI or %NULL if there is no such attribute.
        !          9220:  */
        !          9221: GdomeAttr *
        !          9222: gdome_el_getAttributeNodeNS (GdomeElement *self, GdomeDOMString *namespaceURI, GdomeDOMString *localName, GdomeException *exc)
        !          9223: {
        !          9224:  if (self == NULL) {
        !          9225:    *exc = GDOME_NULL_POINTER_ERR;
        !          9226:    return NULL;
        !          9227:  }
        !          9228:  if (((Gdome_xml_Element *)self)->n == NULL) {
        !          9229:    *exc = GDOME_INVALID_STATE_ERR;
        !          9230:    return NULL;
        !          9231:  }
        !          9232:  *exc = 0;
        !          9233:  return ((Gdome_xml_Element *)self)->vtab->getAttributeNodeNS (self, namespaceURI, localName, exc);
        !          9234: }
        !          9235: /**
        !          9236:  * gdome_el_getElementsByTagName:
        !          9237:  * @self:  Element Objects ref
        !          9238:  * @name:  The name of the tag to match on. The special value * matches all
        !          9239:  *         tags.
        !          9240:  * @exc:  Exception Object ref
        !          9241:  *
        !          9242:  * Returns: a NodeList of all descendant elements with a given tag name, in the
        !          9243:  * order in which they are encountered in a preorder traversal of this Element
        !          9244:  * tree.
        !          9245:  */
        !          9246: GdomeNodeList *
        !          9247: gdome_el_getElementsByTagName (GdomeElement *self, GdomeDOMString *name, GdomeException *exc)
        !          9248: {
        !          9249:  if (self == NULL) {
        !          9250:    *exc = GDOME_NULL_POINTER_ERR;
        !          9251:    return NULL;
        !          9252:  }
        !          9253:  if (((Gdome_xml_Element *)self)->n == NULL) {
        !          9254:    *exc = GDOME_INVALID_STATE_ERR;
        !          9255:    return NULL;
        !          9256:  }
        !          9257:  *exc = 0;
        !          9258:  return ((Gdome_xml_Element *)self)->vtab->getElementsByTagName (self, name, exc);
        !          9259: }
        !          9260: /**
        !          9261:  * gdome_el_getElementsByTagNameNS:
        !          9262:  * @self:  Element Objects ref
        !          9263:  * @namespaceURI:  The namespace URI of the elements to match on. The special
        !          9264:  *              value * matches all namespaces.
        !          9265:  * @localName:  The local name of the elements to match on. The special value
        !          9266:  *              * matches all local names.
        !          9267:  * @exc:  Exception Object ref
        !          9268:  *
        !          9269:  * Returns: a NodeList of all the descendant elements with a given local name
        !          9270:  * and namespace URI in the order in which they are encountered in a preorder
        !          9271:  * traversal of this Element tree.
        !          9272:  */
        !          9273: GdomeNodeList *
        !          9274: gdome_el_getElementsByTagNameNS (GdomeElement *self, GdomeDOMString *namespaceURI, GdomeDOMString *localName, GdomeException *exc)
        !          9275: {
        !          9276:  if (self == NULL) {
        !          9277:    *exc = GDOME_NULL_POINTER_ERR;
        !          9278:    return NULL;
        !          9279:  }
        !          9280:  if (((Gdome_xml_Element *)self)->n == NULL) {
        !          9281:    *exc = GDOME_INVALID_STATE_ERR;
        !          9282:    return NULL;
        !          9283:  }
        !          9284:  *exc = 0;
        !          9285:  return ((Gdome_xml_Element *)self)->vtab->getElementsByTagNameNS (self, namespaceURI, localName, exc);
        !          9286: }
        !          9287: /**
        !          9288:  * gdome_el_hasAttribute:
        !          9289:  * @self:  Element Objects ref
        !          9290:  * @name:  The name of the attribute to look for.
        !          9291:  * @exc:  Exception Object ref
        !          9292:  *
        !          9293:  * Returns: %TRUE when an attribute with a given name is specified on this
        !          9294:  * element or has a default value, %FALSE otherwise.
        !          9295:  */
        !          9296: GdomeBoolean
        !          9297: gdome_el_hasAttribute (GdomeElement *self, GdomeDOMString *name, GdomeException *exc)
        !          9298: {
        !          9299:  if (self == NULL) {
        !          9300:    *exc = GDOME_NULL_POINTER_ERR;
        !          9301:    return FALSE;
        !          9302:  }
        !          9303:  if (((Gdome_xml_Element *)self)->n == NULL) {
        !          9304:    *exc = GDOME_INVALID_STATE_ERR;
        !          9305:    return FALSE;
        !          9306:  }
        !          9307:  *exc = 0;
        !          9308:  return ((Gdome_xml_Element *)self)->vtab->hasAttribute (self, name, exc);
        !          9309: }
        !          9310: /**
        !          9311:  * gdome_el_hasAttributeNS:
        !          9312:  * @self:  Element Objects ref
        !          9313:  * @namespaceURI:  The namespaceURI of the attribute to look for.
        !          9314:  * @localName:  The localName of the attribute to look for.
        !          9315:  * @exc:  Exception Object ref
        !          9316:  *
        !          9317:  * Returns: %TRUE when an attribute with a given local name and namespace URI
        !          9318:  * is specified on this element or has a default value, %FALSE otherwise.
        !          9319:  */
        !          9320: GdomeBoolean
        !          9321: gdome_el_hasAttributeNS (GdomeElement *self, GdomeDOMString *namespaceURI, GdomeDOMString *localName, GdomeException *exc)
        !          9322: {
        !          9323:  if (self == NULL) {
        !          9324:    *exc = GDOME_NULL_POINTER_ERR;
        !          9325:    return FALSE;
        !          9326:  }
        !          9327:  if (((Gdome_xml_Element *)self)->n == NULL) {
        !          9328:    *exc = GDOME_INVALID_STATE_ERR;
        !          9329:    return FALSE;
        !          9330:  }
        !          9331:  *exc = 0;
        !          9332:  return ((Gdome_xml_Element *)self)->vtab->hasAttributeNS (self, namespaceURI, localName, exc);
        !          9333: }
        !          9334: /**
        !          9335:  * gdome_el_removeAttribute:
        !          9336:  * @self:  Element Objects ref
        !          9337:  * @name:  The name of the attribute to remove
        !          9338:  * @exc:  Exception Object ref
        !          9339:  *
        !          9340:  * Removes an attribute by name. If the removed attribute is known to have a
        !          9341:  * default value, an attribute immediately appears containing the default
        !          9342:  * value as well as the corresponding namespace URI, local name, and prefix
        !          9343:  * when applicable.
        !          9344:  * To remove an attribute by local name and namespace URI, use the
        !          9345:  * gdome_el_removeAttributeNS() function.
        !          9346:  *
        !          9347:  * %GDOME_NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly.
        !          9348:  */
        !          9349: void
        !          9350: gdome_el_removeAttribute (GdomeElement *self, GdomeDOMString *name, GdomeException *exc)
        !          9351: {
        !          9352:  if (self == NULL) {
        !          9353:    *exc = GDOME_NULL_POINTER_ERR;
        !          9354:    return;
        !          9355:  }
        !          9356:  if (((Gdome_xml_Element *)self)->n == NULL) {
        !          9357:    *exc = GDOME_INVALID_STATE_ERR;
        !          9358:    return;
        !          9359:  }
        !          9360:  *exc = 0;
        !          9361:  ((Gdome_xml_Element *)self)->vtab->removeAttribute (self, name, exc);
        !          9362: }
        !          9363: /**
        !          9364:  * gdome_el_removeAttributeNS:
        !          9365:  * @self:  Element Objects ref
        !          9366:  * @namespaceURI:  The namespaceURI of attribute to remove
        !          9367:  * @localName:  The localName of the attribute to remove
        !          9368:  * @exc:  Exception Object ref
        !          9369:  *
        !          9370:  * Removes an attribute by local name and namespace URI. If the removed
        !          9371:  * attribute has a default value it is immediately replaced. The replacing
        !          9372:  * attribute has the same namespace URI and local name, as well as the
        !          9373:  * original prefix.
        !          9374:  *
        !          9375:  * %GDOME_NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly.
        !          9376:  */
        !          9377: void
        !          9378: gdome_el_removeAttributeNS (GdomeElement *self, GdomeDOMString *namespaceURI, GdomeDOMString *localName, GdomeException *exc)
        !          9379: {
        !          9380:  if (self == NULL) {
        !          9381:    *exc = GDOME_NULL_POINTER_ERR;
        !          9382:    return;
        !          9383:  }
        !          9384:  if (((Gdome_xml_Element *)self)->n == NULL) {
        !          9385:    *exc = GDOME_INVALID_STATE_ERR;
        !          9386:    return;
        !          9387:  }
        !          9388:  *exc = 0;
        !          9389:  ((Gdome_xml_Element *)self)->vtab->removeAttributeNS (self, namespaceURI, localName, exc);
        !          9390: }
        !          9391: /**
        !          9392:  * gdome_el_removeAttributeNode:
        !          9393:  * @self:  Element Objects ref
        !          9394:  * @oldAttr:  The Attr node to remove from the attribute list
        !          9395:  * @exc:  Exception Object ref
        !          9396:  *
        !          9397:  * Removes the specified attribute node. If the removed Attr has a default
        !          9398:  * value it is immediately replaced. The replacing attribute has the same
        !          9399:  * namespace URI and local name, as well as the original prefix, when
        !          9400:  * applicable.
        !          9401:  *
        !          9402:  * %GDOME_NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly.
        !          9403:  * %GDOME_NOT_FOUND_ERR: Raised if @oldAttr is not an attribute of the element.
        !          9404:  * Returns: the Attr node that was removed.
        !          9405:  */
        !          9406: GdomeAttr *
        !          9407: gdome_el_removeAttributeNode (GdomeElement *self, GdomeAttr *oldAttr, GdomeException *exc)
        !          9408: {
        !          9409:  if (self == NULL) {
        !          9410:    *exc = GDOME_NULL_POINTER_ERR;
        !          9411:    return NULL;
        !          9412:  }
        !          9413:  if (((Gdome_xml_Element *)self)->n == NULL) {
        !          9414:    *exc = GDOME_INVALID_STATE_ERR;
        !          9415:    return NULL;
        !          9416:  }
        !          9417:  *exc = 0;
        !          9418:  return ((Gdome_xml_Element *)self)->vtab->removeAttributeNode (self, oldAttr, exc);
        !          9419: }
        !          9420: /**
        !          9421:  * gdome_el_setAttribute:
        !          9422:  * @self:  Element Objects ref
        !          9423:  * @name:  The name of the attribute to create or alter
        !          9424:  * @value: Value to set in string form
        !          9425:  * @exc:  Exception Object ref
        !          9426:  *
        !          9427:  * Adds a new attribute. If an attribute with that name is already present in
        !          9428:  * the element, its value is changed to be that of the value parameter.
        !          9429:  *
        !          9430:  * %GDOME_NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly.
        !          9431:  */
        !          9432: void
        !          9433: gdome_el_setAttribute (GdomeElement *self, GdomeDOMString *name, GdomeDOMString *value, GdomeException *exc)
        !          9434: {
        !          9435:  if (self == NULL) {
        !          9436:    *exc = GDOME_NULL_POINTER_ERR;
        !          9437:    return;
        !          9438:  }
        !          9439:  if (((Gdome_xml_Element *)self)->n == NULL) {
        !          9440:    *exc = GDOME_INVALID_STATE_ERR;
        !          9441:    return;
        !          9442:  }
        !          9443:  *exc = 0;
        !          9444:  ((Gdome_xml_Element *)self)->vtab->setAttribute (self, name, value, exc);
        !          9445: }
        !          9446: /**
        !          9447:  * gdome_el_setAttributeNS:
        !          9448:  * @self:  Element Objects ref
        !          9449:  * @namespaceURI:  The namespace URI of attribute to create or alter
        !          9450:  * @qualifiedName:  The qualifiedName of the attribute to create or alter
        !          9451:  * @value: Value to set in string form
        !          9452:  * @exc:  Exception Object ref
        !          9453:  *
        !          9454:  * Adds a new attribute. If an attribute with the same @namespaceURI and
        !          9455:  * localName is already present in the element, its value is changed to be
        !          9456:  * that of the value parameter.
        !          9457:  *
        !          9458:  * %GDOME_NAMESPACE_ERR: Raised if the @qualifiedName is malformed, if the
        !          9459:  * @qualifiedName has a prefix and the @namespaceURI is %NULL, if the
        !          9460:  * @qualifiedName has a prefix that is "xml" and the @namespaceURI is different
        !          9461:  * from "http://www.w3.org/XML/1998/namespace", or if the @qualifiedName is
        !          9462:  * "xmlns" and the namespaceURI is different from "http://www.w3.org/2000/xmlns/".
        !          9463:  * %GDOME_NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly.
        !          9464:  */
        !          9465: void
        !          9466: gdome_el_setAttributeNS (GdomeElement *self, GdomeDOMString *namespaceURI, GdomeDOMString *qualifiedName, GdomeDOMString *value, GdomeException *exc)
        !          9467: {
        !          9468:  if (self == NULL) {
        !          9469:    *exc = GDOME_NULL_POINTER_ERR;
        !          9470:    return;
        !          9471:  }
        !          9472:  if (((Gdome_xml_Element *)self)->n == NULL) {
        !          9473:    *exc = GDOME_INVALID_STATE_ERR;
        !          9474:    return;
        !          9475:  }
        !          9476:  *exc = 0;
        !          9477:  ((Gdome_xml_Element *)self)->vtab->setAttributeNS (self, namespaceURI, qualifiedName, value, exc);
        !          9478: }
        !          9479: /**
        !          9480:  * gdome_el_setAttributeNode:
        !          9481:  * @self:  Element Object ref
        !          9482:  * @newAttr:  The Attr node to add to the attribute list
        !          9483:  * @exc:  Exception Object ref
        !          9484:  *
        !          9485:  * Adds a new attribute node. If an attribute with that name is already present
        !          9486:  * in the element, it is replaced by the new one.
        !          9487:  * To add a new attribute node with a qualified name and namespace URI, use the
        !          9488:  * gdome_el_setAttributeNodeNS() method.
        !          9489:  *
        !          9490:  * %GDOME_WRONG_DOCUMENT_ERR: Raised if @newAttr was created from a different
        !          9491:  * document than the one that created the element.
        !          9492:  * %GDOME_NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly.
        !          9493:  * %GDOME_INUSE_ATTRIBUTE_ERR: Raised if @newAttr is already an attribute of
        !          9494:  * another Element object. The DOM user must explicitly clone Attr nodes to
        !          9495:  * re-use them in other elements.
        !          9496:  * Returns: if the @newAttr attribute replaces an existing attribute, the
        !          9497:  * replaced Attr node is returned, otherwise %NULL is returned.
        !          9498:  */
        !          9499: GdomeAttr *
        !          9500: gdome_el_setAttributeNode (GdomeElement *self, GdomeAttr *newAttr, GdomeException *exc)
        !          9501: {
        !          9502:  if (self == NULL) {
        !          9503:    *exc = GDOME_NULL_POINTER_ERR;
        !          9504:    return NULL;
        !          9505:  }
        !          9506:  if (((Gdome_xml_Element *)self)->n == NULL) {
        !          9507:    *exc = GDOME_INVALID_STATE_ERR;
        !          9508:    return NULL;
        !          9509:  }
        !          9510:  *exc = 0;
        !          9511:  return ((Gdome_xml_Element *)self)->vtab->setAttributeNode (self, newAttr, exc);
        !          9512: }
        !          9513: /**
        !          9514:  * gdome_el_setAttributeNodeNS:
        !          9515:  * @self:  Element Object ref
        !          9516:  * @newAttr:  The Attr node to add to the attribute list
        !          9517:  * @exc:  Exception Object ref
        !          9518:  *
        !          9519:  * Adds a new attribute. If an attribute with that local name and that
        !          9520:  * namespace URI is already present in the element, it is replaced by the new
        !          9521:  * one.
        !          9522:  *
        !          9523:  * %GDOME_WRONG_DOCUMENT_ERR: Raised if @newAttr was created from a different
        !          9524:  * document than the one that created the element.
        !          9525:  * %GDOME_NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly.
        !          9526:  * %GDOME_INUSE_ATTRIBUTE_ERR: Raised if @newAttr is already an attribute of
        !          9527:  * another Element object. The DOM user must explicitly clone Attr nodes to
        !          9528:  * re-use them in other elements.
        !          9529:  * Returns: if the @newAttr attribute replaces an existing attribute with the
        !          9530:  * same local name and namespace URI, the replaced Attr node is returned,
        !          9531:  * otherwise %NULL is returned.
        !          9532:  */
        !          9533: GdomeAttr *
        !          9534: gdome_el_setAttributeNodeNS (GdomeElement *self, GdomeAttr *newAttr, GdomeException *exc)
        !          9535: {
        !          9536:  if (self == NULL) {
        !          9537:    *exc = GDOME_NULL_POINTER_ERR;
        !          9538:    return NULL;
        !          9539:  }
        !          9540:  if (((Gdome_xml_Element *)self)->n == NULL) {
        !          9541:    *exc = GDOME_INVALID_STATE_ERR;
        !          9542:    return NULL;
        !          9543:  }
        !          9544:  *exc = 0;
        !          9545:  return ((Gdome_xml_Element *)self)->vtab->setAttributeNodeNS (self, newAttr, exc);
        !          9546: }
        !          9547: /**
        !          9548:  * gdome_el_attributes:
        !          9549:  * @self:  Node Object ref
        !          9550:  * @exc:  Exception Object ref
        !          9551:  *
        !          9552:  * Returns: a NamedNodeMap containing the attributes of this node (if it is an
        !          9553:  * Element) or %NULL otherwise.
        !          9554:  */
        !          9555: GdomeNamedNodeMap *
        !          9556: gdome_el_attributes (GdomeElement *self, GdomeException *exc)
        !          9557: {
        !          9558:  if (self == NULL) {
        !          9559:    *exc = GDOME_NULL_POINTER_ERR;
        !          9560:    return NULL;
        !          9561:  }
        !          9562:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          9563:    *exc = GDOME_INVALID_STATE_ERR;
        !          9564:    return NULL;
        !          9565:  }
        !          9566:  *exc = 0;
        !          9567:  return ((Gdome_xml_Element *)self)->vtab->super.attributes ((GdomeNode *)self, exc);
        !          9568: }
        !          9569: /**
        !          9570:  * gdome_el_childNodes:
        !          9571:  * @self:  Node Object ref
        !          9572:  * @exc:  Exception Object ref
        !          9573:  *
        !          9574:  * Returns: a NodeList that contains all children of this node. If there are no
        !          9575:  * children, this is a NodeList containing no nodes.  Note that attributes are
        !          9576:  * not considered to be children of element nodes - use gdome_n_attributes to
        !          9577:  * obtain the attributes.
        !          9578:  */
        !          9579: GdomeNodeList *
        !          9580: gdome_el_childNodes (GdomeElement *self, GdomeException *exc)
        !          9581: {
        !          9582:  if (self == NULL) {
        !          9583:    *exc = GDOME_NULL_POINTER_ERR;
        !          9584:    return NULL;
        !          9585:  }
        !          9586:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          9587:    *exc = GDOME_INVALID_STATE_ERR;
        !          9588:    return NULL;
        !          9589:  }
        !          9590:  *exc = 0;
        !          9591:  return ((Gdome_xml_Element *)self)->vtab->super.childNodes ((GdomeNode *)self, exc);
        !          9592: }
        !          9593: /**
        !          9594:  * gdome_el_firstChild:
        !          9595:  * @self:  Node Object ref
        !          9596:  * @exc:  Exception Object ref
        !          9597:  * 
        !          9598:  * Returns: the first child of this node. If there is no such node,
        !          9599:  * this returns %NULL.
        !          9600:  */
        !          9601: GdomeNode *
        !          9602: gdome_el_firstChild (GdomeElement *self, GdomeException *exc)
        !          9603: {
        !          9604:  if (self == NULL) {
        !          9605:    *exc = GDOME_NULL_POINTER_ERR;
        !          9606:    return NULL;
        !          9607:  }
        !          9608:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          9609:    *exc = GDOME_INVALID_STATE_ERR;
        !          9610:    return NULL;
        !          9611:  }
        !          9612:  *exc = 0;
        !          9613:  return ((Gdome_xml_Element *)self)->vtab->super.firstChild ((GdomeNode *)self, exc);
        !          9614: }
        !          9615: /**
        !          9616:  * gdome_el_lastChild:
        !          9617:  * @self:  Node Object ref
        !          9618:  * @exc:  Exception Object ref
        !          9619:  *
        !          9620:  * Returns: the last child of this node. If there is no such node,
        !          9621:  * this returns %NULL.
        !          9622:  */
        !          9623: GdomeNode *
        !          9624: gdome_el_lastChild (GdomeElement *self, GdomeException *exc)
        !          9625: {
        !          9626:  if (self == NULL) {
        !          9627:    *exc = GDOME_NULL_POINTER_ERR;
        !          9628:    return NULL;
        !          9629:  }
        !          9630:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          9631:    *exc = GDOME_INVALID_STATE_ERR;
        !          9632:    return NULL;
        !          9633:  }
        !          9634:  *exc = 0;
        !          9635:  return ((Gdome_xml_Element *)self)->vtab->super.lastChild ((GdomeNode *)self, exc);
        !          9636: }
        !          9637: /**
        !          9638:  * gdome_el_localName:
        !          9639:  * @self:  Node Objects ref
        !          9640:  * @exc:  Exception Object ref
        !          9641:  *
        !          9642:  * Returns: the local part of the qualified name of this node.
        !          9643:  * For nodes of any type other than %GDOME_ELEMENT_NODE and
        !          9644:  * %GDOME_ATTRIBUTE_NODE and nodes created with a DOM Level 1 method, this is
        !          9645:  * always %NULL.
        !          9646:  */
        !          9647: GdomeDOMString *
        !          9648: gdome_el_localName (GdomeElement *self, GdomeException *exc)
        !          9649: {
        !          9650:  if (self == NULL) {
        !          9651:    *exc = GDOME_NULL_POINTER_ERR;
        !          9652:    return NULL;
        !          9653:  }
        !          9654:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          9655:    *exc = GDOME_INVALID_STATE_ERR;
        !          9656:    return NULL;
        !          9657:  }
        !          9658:  *exc = 0;
        !          9659:  return ((Gdome_xml_Element *)self)->vtab->super.localName ((GdomeNode *)self, exc);
        !          9660: }
        !          9661: /**
        !          9662:  * gdome_el_namespaceURI:
        !          9663:  * @self:  Node Objects ref
        !          9664:  * @exc:  Exception Object ref
        !          9665:  *
        !          9666:  * Returns: the namespace URI of this node, or %NULL if it is unspecified.
        !          9667:  * For nodes of any type other than %GDOME_ELEMENT_NODE and
        !          9668:  * %GDOME_ATTRIBUTE_NODE and nodes created with a DOM Level 1 method, this is
        !          9669:  * always %NULL.
        !          9670:  */
        !          9671: GdomeDOMString *
        !          9672: gdome_el_namespaceURI (GdomeElement *self, GdomeException *exc)
        !          9673: {
        !          9674:  if (self == NULL) {
        !          9675:    *exc = GDOME_NULL_POINTER_ERR;
        !          9676:    return NULL;
        !          9677:  }
        !          9678:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          9679:    *exc = GDOME_INVALID_STATE_ERR;
        !          9680:    return NULL;
        !          9681:  }
        !          9682:  *exc = 0;
        !          9683:  return ((Gdome_xml_Element *)self)->vtab->super.namespaceURI ((GdomeNode *)self, exc);
        !          9684: }
        !          9685: /**
        !          9686:  * gdome_el_nextSibling:
        !          9687:  * @self:  Node Object ref
        !          9688:  * @exc:  Exception Object ref
        !          9689:  *
        !          9690:  * Returns: the node immediately following this node. If there is no such
        !          9691:  * node, this returns %NULL.
        !          9692:  */
        !          9693: GdomeNode *
        !          9694: gdome_el_nextSibling (GdomeElement *self, GdomeException *exc)
        !          9695: {
        !          9696:  if (self == NULL) {
        !          9697:    *exc = GDOME_NULL_POINTER_ERR;
        !          9698:    return NULL;
        !          9699:  }
        !          9700:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          9701:    *exc = GDOME_INVALID_STATE_ERR;
        !          9702:    return NULL;
        !          9703:  }
        !          9704:  *exc = 0;
        !          9705:  return ((Gdome_xml_Element *)self)->vtab->super.nextSibling ((GdomeNode *)self, exc);
        !          9706: }
        !          9707: /**
        !          9708:  * gdome_el_nodeName:
        !          9709:  * @self:  Node Object ref
        !          9710:  * @exc:  Exception Object ref
        !          9711:  *
        !          9712:  * Returns: the name of this node, depending on its type.
        !          9713:  */
        !          9714: GdomeDOMString *
        !          9715: gdome_el_nodeName (GdomeElement *self, GdomeException *exc)
        !          9716: {
        !          9717:  if (self == NULL) {
        !          9718:    *exc = GDOME_NULL_POINTER_ERR;
        !          9719:    return NULL;
        !          9720:  }
        !          9721:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          9722:    *exc = GDOME_INVALID_STATE_ERR;
        !          9723:    return NULL;
        !          9724:  }
        !          9725:  *exc = 0;
        !          9726:  return ((Gdome_xml_Element *)self)->vtab->super.nodeName ((GdomeNode *)self, exc);
        !          9727: }
        !          9728: /**
        !          9729:  * gdome_el_nodeType:
        !          9730:  * @self:  Node Object ref
        !          9731:  * @exc:  Exception Object ref
        !          9732:  *
        !          9733:  * Returns: an integer bigger than %0 representing the type of the underlying
        !          9734:  * object or %0 on error.
        !          9735:  */
        !          9736: unsigned short
        !          9737: gdome_el_nodeType (GdomeElement *self, GdomeException *exc)
        !          9738: {
        !          9739:  if (self == NULL) {
        !          9740:    *exc = GDOME_NULL_POINTER_ERR;
        !          9741:    return 0;
        !          9742:  }
        !          9743:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          9744:    *exc = GDOME_INVALID_STATE_ERR;
        !          9745:    return 0;
        !          9746:  }
        !          9747:  *exc = 0;
        !          9748:  return ((Gdome_xml_Element *)self)->vtab->super.nodeType ((GdomeNode *)self, exc);
        !          9749: }
        !          9750: /**
        !          9751:  * gdome_el_nodeValue:
        !          9752:  * @self:  Node Object ref
        !          9753:  * @exc:  Exception Object ref
        !          9754:  *
        !          9755:  * Returns: the value of this node, depending on its type.
        !          9756:  */
        !          9757: GdomeDOMString *
        !          9758: gdome_el_nodeValue (GdomeElement *self, GdomeException *exc)
        !          9759: {
        !          9760:  if (self == NULL) {
        !          9761:    *exc = GDOME_NULL_POINTER_ERR;
        !          9762:    return NULL;
        !          9763:  }
        !          9764:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          9765:    *exc = GDOME_INVALID_STATE_ERR;
        !          9766:    return NULL;
        !          9767:  }
        !          9768:  *exc = 0;
        !          9769:  return ((Gdome_xml_Element *)self)->vtab->super.nodeValue ((GdomeNode *)self, exc);
        !          9770: }
        !          9771: /**
        !          9772:  * gdome_el_set_nodeValue:
        !          9773:  * @self:  Node Object ref
        !          9774:  * @nodeValue:  The new value for this node.
        !          9775:  * @exc:  Exception Object ref
        !          9776:  *
        !          9777:  * Sets The value of this node, depending on its type.
        !          9778:  *
        !          9779:  * %GDOME_NO_MODIFICATION_ALLOWED_ERR: Raised when the node is readonly.
        !          9780:  */
        !          9781: void
        !          9782: gdome_el_set_nodeValue (GdomeElement *self, GdomeDOMString *nodeValue, GdomeException *exc)
        !          9783: {
        !          9784:  if (self == NULL) {
        !          9785:    *exc = GDOME_NULL_POINTER_ERR;
        !          9786:    return;
        !          9787:  }
        !          9788:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          9789:    *exc = GDOME_INVALID_STATE_ERR;
        !          9790:    return;
        !          9791:  }
        !          9792:  *exc = 0;
        !          9793:  ((Gdome_xml_Element *)self)->vtab->super.set_nodeValue ((GdomeNode *)self, nodeValue, exc);
        !          9794: }
        !          9795: /**
        !          9796:  * gdome_el_ownerDocument:
        !          9797:  * @self:  Node Objects ref
        !          9798:  * @exc:  Exception Object ref
        !          9799:  *
        !          9800:  * Returns: the documment object associated with this node. This is also the
        !          9801:  * Document object used to create new nodes. When this node is a Document or a
        !          9802:  * DocumentType which is not used with any Document yet, this is %NULL.
        !          9803:  */
        !          9804: GdomeDocument *
        !          9805: gdome_el_ownerDocument (GdomeElement *self, GdomeException *exc)
        !          9806: {
        !          9807:  if (self == NULL) {
        !          9808:    *exc = GDOME_NULL_POINTER_ERR;
        !          9809:    return NULL;
        !          9810:  }
        !          9811:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          9812:    *exc = GDOME_INVALID_STATE_ERR;
        !          9813:    return NULL;
        !          9814:  }
        !          9815:  *exc = 0;
        !          9816:  return ((Gdome_xml_Element *)self)->vtab->super.ownerDocument ((GdomeNode *)self, exc);
        !          9817: }
        !          9818: /**
        !          9819:  * gdome_el_parentNode:
        !          9820:  * @self: Node Object ref
        !          9821:  * @exc: Exception Object ref
        !          9822:  *
        !          9823:  * Returns: the parent of this node. All nodes, except Attr,
        !          9824:  * Document, DocumentFragment, Entity, and Notation may have a parent. However,
        !          9825:  * if a node has just been created and not yet added to the tree, or if it has
        !          9826:  * been removed from the tree, this is %NULL.
        !          9827:  */
        !          9828: GdomeNode *
        !          9829: gdome_el_parentNode (GdomeElement *self, GdomeException *exc)
        !          9830: {
        !          9831:  if (self == NULL) {
        !          9832:    *exc = GDOME_NULL_POINTER_ERR;
        !          9833:    return NULL;
        !          9834:  }
        !          9835:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          9836:    *exc = GDOME_INVALID_STATE_ERR;
        !          9837:    return NULL;
        !          9838:  }
        !          9839:  *exc = 0;
        !          9840:  return ((Gdome_xml_Element *)self)->vtab->super.parentNode ((GdomeNode *)self, exc);
        !          9841: }
        !          9842: /**
        !          9843:  * gdome_el_prefix:
        !          9844:  * @self:  Node Objects ref
        !          9845:  * @exc:  Exception Object ref
        !          9846:  *
        !          9847:  * Returns: the namespace prefix of this node, or %NULL if it is unspecified.
        !          9848:  * For nodes of any type other than %GDOME_ELEMENT_NODE and
        !          9849:  * %GDOME_ATTRIBUTE_NODE and nodes created with a DOM Level 1 method, this is
        !          9850:  * always %NULL.
        !          9851:  */
        !          9852: GdomeDOMString *
        !          9853: gdome_el_prefix (GdomeElement *self, GdomeException *exc)
        !          9854: {
        !          9855:  if (self == NULL) {
        !          9856:    *exc = GDOME_NULL_POINTER_ERR;
        !          9857:    return NULL;
        !          9858:  }
        !          9859:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          9860:    *exc = GDOME_INVALID_STATE_ERR;
        !          9861:    return NULL;
        !          9862:  }
        !          9863:  *exc = 0;
        !          9864:  return ((Gdome_xml_Element *)self)->vtab->super.prefix ((GdomeNode *)self, exc);
        !          9865: }
        !          9866: /**
        !          9867:  * gdome_el_set_prefix:
        !          9868:  * @self:  Node Object ref
        !          9869:  * @prefix:  The new prefix for this node.
        !          9870:  * @exc:  Exception Object ref
        !          9871:  *
        !          9872:  * Sets a new nemaspace prefix for this node.
        !          9873:  *
        !          9874:  * %GDOME_NO_MODIFICATION_ALLOWED_ERR: Raised when the node is readonly.
        !          9875:  * %GDOME_NAMESPACE_ERR: Raised if the specified @prefix is malformed per the
        !          9876:  * Namespaces in XML specification, if the namespaceURI of this node is %NULL,
        !          9877:  * if the specified prefix is "xml" and the namespaceURI of this node is
        !          9878:  * different from "http://www.w3.org/XML/1998/namespace", if this node is an
        !          9879:  * attribute and the specified prefix is "xmlns" and the namespaceURI of this
        !          9880:  * node is different from "http://www.w3.org/2000/xmlns/", or if this node is
        !          9881:  * an attribute and the qualifiedName of this node is "xmlns".
        !          9882:  */
        !          9883: void
        !          9884: gdome_el_set_prefix (GdomeElement *self, GdomeDOMString *prefix, GdomeException *exc)
        !          9885: {
        !          9886:  if (self == NULL) {
        !          9887:    *exc = GDOME_NULL_POINTER_ERR;
        !          9888:    return;
        !          9889:  }
        !          9890:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          9891:    *exc = GDOME_INVALID_STATE_ERR;
        !          9892:    return;
        !          9893:  }
        !          9894:  *exc = 0;
        !          9895:  ((Gdome_xml_Element *)self)->vtab->super.set_prefix ((GdomeNode *)self, prefix, exc);
        !          9896: }
        !          9897: /**
        !          9898:  * gdome_el_previousSibling:
        !          9899:  * @self:  Node Object ref
        !          9900:  * @exc:  Exception Object ref
        !          9901:  *
        !          9902:  * Returns: the node immediately preceding this node. If there is no such
        !          9903:  * node, this returns %NULL.
        !          9904:  */
        !          9905: GdomeNode *
        !          9906: gdome_el_previousSibling (GdomeElement *self, GdomeException *exc)
        !          9907: {
        !          9908:  if (self == NULL) {
        !          9909:    *exc = GDOME_NULL_POINTER_ERR;
        !          9910:    return NULL;
        !          9911:  }
        !          9912:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          9913:    *exc = GDOME_INVALID_STATE_ERR;
        !          9914:    return NULL;
        !          9915:  }
        !          9916:  *exc = 0;
        !          9917:  return ((Gdome_xml_Element *)self)->vtab->super.previousSibling ((GdomeNode *)self, exc);
        !          9918: }
        !          9919: /**
        !          9920:  * gdome_el_ref:
        !          9921:  * @self:  Node Object ref
        !          9922:  * @exc:  Exception Object ref
        !          9923:  *
        !          9924:  * Increase the reference count of the specified Node.
        !          9925:  */
        !          9926: void
        !          9927: gdome_el_ref (GdomeElement *self, GdomeException *exc)
        !          9928: {
        !          9929:  if (self == NULL) {
        !          9930:    *exc = GDOME_NULL_POINTER_ERR;
        !          9931:    return;
        !          9932:  }
        !          9933:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          9934:    *exc = GDOME_INVALID_STATE_ERR;
        !          9935:    return;
        !          9936:  }
        !          9937:  *exc = 0;
        !          9938:  ((Gdome_xml_Element *)self)->vtab->super.ref ((GdomeNode *)self, exc);
        !          9939: }
        !          9940: /**
        !          9941:  * gdome_el_unref:
        !          9942:  * @self:  Node Object ref
        !          9943:  * @exc:  Exception Object ref
        !          9944:  *
        !          9945:  * Decrease the reference count of the specified Node. Free the Node structure
        !          9946:  * if the Node will have zero reference.
        !          9947:  */
        !          9948: void
        !          9949: gdome_el_unref (GdomeElement *self, GdomeException *exc)
        !          9950: {
        !          9951:  if (self == NULL) {
        !          9952:    *exc = GDOME_NULL_POINTER_ERR;
        !          9953:    return;
        !          9954:  }
        !          9955:  *exc = 0;
        !          9956:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          9957:    if (((Gdome_xml_Node *)self)->refcnt > 0)
        !          9958:      ((Gdome_xml_Node *)self)->refcnt--;
        !          9959: 
        !          9960:    if (((Gdome_xml_Node *)self)->refcnt == 0 && ((Gdome_xml_Node *)self)->ll == NULL) {
        !          9961: #ifdef DEBUG_REFCNT
        !          9962:      gdome_refdbg_delRef ((void *)self, GDOME_REFDBG_NODE);
        !          9963: #endif
        !          9964:      g_free (self);
        !          9965:    }
        !          9966:    return;
        !          9967:  }
        !          9968:  ((Gdome_xml_Element *)self)->vtab->super.unref ((GdomeNode *)self, exc);
        !          9969: }
        !          9970: /**
        !          9971:  * gdome_el_query_interface:
        !          9972:  * @self:  Node Object ref
        !          9973:  * @interface:  interface needed
        !          9974:  * @exc:  Exception Object ref
        !          9975:  *
        !          9976:  * Returns: a reference to this object that implements the @interface needed,
        !          9977:  *          or %NULL if the @interface is not supported by this Object.
        !          9978:  */
        !          9979: gpointer
        !          9980: gdome_el_query_interface (GdomeElement *self, const char *interface, GdomeException *exc)
        !          9981: {
        !          9982:  if (self == NULL) {
        !          9983:    *exc = GDOME_NULL_POINTER_ERR;
        !          9984:    return NULL;
        !          9985:  }
        !          9986:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          9987:    *exc = GDOME_INVALID_STATE_ERR;
        !          9988:    return NULL;
        !          9989:  }
        !          9990:  *exc = 0;
        !          9991:  return ((Gdome_xml_Element *)self)->vtab->super.query_interface ((GdomeNode *)self, interface, exc);
        !          9992: }
        !          9993: /**
        !          9994:  * gdome_el_appendChild:
        !          9995:  * @self:  Node Object ref
        !          9996:  * @newChild:  The node to add
        !          9997:  * @exc:  Exception Object ref
        !          9998:  *
        !          9999:  * Adds the node @newChild to the end of the list of children of this node.
        !          10000:  * If the @newChild is already in the tree, it is first removed. If it is a
        !          10001:  * DocumentFragment node, the entire contents of the document fragment are
        !          10002:  * moved into the child list of this node
        !          10003:  *
        !          10004:  * %GDOME_HIERARCHY_REQUEST_ERR: Raised if this node is of a type that does not
        !          10005:  * allow children of the type of the @newChild node, or if the node to append is
        !          10006:  * one of this node's ancestors or this node itself.
        !          10007:  * %GDOME_WRONG_DOCUMENT_ERR: Raised if @newChild was created from a different
        !          10008:  * document than the one that created this node.
        !          10009:  * %GDOME_NO_MODIFICATION_ALLOWED_ERR: Raised when the node is readonly.
        !          10010:  * Returns: the node added.
        !          10011:  */
        !          10012: GdomeNode *
        !          10013: gdome_el_appendChild (GdomeElement *self, GdomeNode *newChild, GdomeException *exc)
        !          10014: {
        !          10015:  if (self == NULL) {
        !          10016:    *exc = GDOME_NULL_POINTER_ERR;
        !          10017:    return NULL;
        !          10018:  }
        !          10019:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          10020:    *exc = GDOME_INVALID_STATE_ERR;
        !          10021:    return NULL;
        !          10022:  }
        !          10023:  *exc = 0;
        !          10024:  return ((Gdome_xml_Element *)self)->vtab->super.appendChild ((GdomeNode *)self, newChild, exc);
        !          10025: }
        !          10026: /**
        !          10027:  * gdome_el_cloneNode:
        !          10028:  * @self:  Node Object ref
        !          10029:  * @deep:  If true, recursively clone the subtree under the specified node;
        !          10030:  *         if false, clone only the node itself (and its attributes, if it is
        !          10031:  *         an Element).
        !          10032:  * @exc:  Exception Object ref
        !          10033:  *
        !          10034:  * Makes a duplicate of this node, i.e., serves as a generic copy
        !          10035:  * constructor for nodes. The duplicate node has no parent; (parentNode is
        !          10036:  * %NULL).
        !          10037:  * %GDOME_DOCUMENT_TYPE_NODE, %GDOME_NOTATION_NODE and %GDOME_ENTITY_NODE
        !          10038:  * nodes are not supported.
        !          10039:  *
        !          10040:  * %GDOME_NOT_SUPPORTED_ERR: Raised if the type of node being cloned is not
        !          10041:  * supported.
        !          10042:  * Returns: the duplicate node.
        !          10043:  */
        !          10044: GdomeNode *
        !          10045: gdome_el_cloneNode (GdomeElement *self, GdomeBoolean deep, GdomeException *exc)
        !          10046: {
        !          10047:  if (self == NULL) {
        !          10048:    *exc = GDOME_NULL_POINTER_ERR;
        !          10049:    return NULL;
        !          10050:  }
        !          10051:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          10052:    *exc = GDOME_INVALID_STATE_ERR;
        !          10053:    return NULL;
        !          10054:  }
        !          10055:  *exc = 0;
        !          10056:  return ((Gdome_xml_Element *)self)->vtab->super.cloneNode ((GdomeNode *)self, deep, exc);
        !          10057: }
        !          10058: /**
        !          10059:  * gdome_el_hasAttributes:
        !          10060:  * @self:  Node Object ref
        !          10061:  * @exc:  Exception Object ref
        !          10062:  *
        !          10063:  * Returns: %TRUE if this node has any attributes, %FALSE otherwise.
        !          10064:  */
        !          10065: GdomeBoolean
        !          10066: gdome_el_hasAttributes (GdomeElement *self, GdomeException *exc)
        !          10067: {
        !          10068:  if (self == NULL) {
        !          10069:    *exc = GDOME_NULL_POINTER_ERR;
        !          10070:    return FALSE;
        !          10071:  }
        !          10072:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          10073:    *exc = GDOME_INVALID_STATE_ERR;
        !          10074:    return FALSE;
        !          10075:  }
        !          10076:  *exc = 0;
        !          10077:  return ((Gdome_xml_Element *)self)->vtab->super.hasAttributes ((GdomeNode *)self, exc);
        !          10078: }
        !          10079: /**
        !          10080:  * gdome_el_hasChildNodes:
        !          10081:  * @self:  Node Object ref
        !          10082:  * @exc:  Exception Object ref
        !          10083:  *
        !          10084:  * Returns: %TRUE if this node has any children, %FALSE otherwise.
        !          10085:  */
        !          10086: GdomeBoolean
        !          10087: gdome_el_hasChildNodes (GdomeElement *self, GdomeException *exc)
        !          10088: {
        !          10089:  if (self == NULL) {
        !          10090:    *exc = GDOME_NULL_POINTER_ERR;
        !          10091:    return FALSE;
        !          10092:  }
        !          10093:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          10094:    *exc = GDOME_INVALID_STATE_ERR;
        !          10095:    return FALSE;
        !          10096:  }
        !          10097:  *exc = 0;
        !          10098:  return ((Gdome_xml_Element *)self)->vtab->super.hasChildNodes ((GdomeNode *)self, exc);
        !          10099: }
        !          10100: /**
        !          10101:  * gdome_el_insertBefore:
        !          10102:  * @self:  Node Object ref
        !          10103:  * @newChild:  The new node to put in the child list
        !          10104:  * @refChild:  the reference node, i.e., the node before which the new node
        !          10105:  *             must be inserted.
        !          10106:  * @exc:  Exception Object ref
        !          10107:  *
        !          10108:  * Inserts the node @newChild before the existing child node @refChild. If
        !          10109:  * @refChild is %NULL, insert @newChild at the end of the list of children.
        !          10110:  * If @newChild is a DocumentFragment node, all of its children are inserted,
        !          10111:  * in the same order, before @refChild. If the @newChild is already in the
        !          10112:  * tree, it is first removed.
        !          10113:  *
        !          10114:  * %GDOME_HIERARCHY_REQUEST_ERR: Raised if this node is of a type that does not
        !          10115:  * allow children of the type of the @newChild node, or if the node to insert is
        !          10116:  * one of this node's ancestors or this node itself.
        !          10117:  * %GDOME_WRONG_DOCUMENT_ERR: Raised if @newChild was created from a different
        !          10118:  * document than the one that created this node.
        !          10119:  * %GDOME_NOT_FOUND_ERR: Raised if @refChild is not a child of this node.
        !          10120:  * %GDOME_NO_MODIFICATION_ALLOWED_ERR: Raised when the node is readonly.
        !          10121:  * Returns: the node being inserted.
        !          10122:  */
        !          10123: GdomeNode *
        !          10124: gdome_el_insertBefore (GdomeElement *self, GdomeNode *newChild, GdomeNode *refChild, GdomeException *exc)
        !          10125: {
        !          10126:  if (self == NULL) {
        !          10127:    *exc = GDOME_NULL_POINTER_ERR;
        !          10128:    return NULL;
        !          10129:  }
        !          10130:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          10131:    *exc = GDOME_INVALID_STATE_ERR;
        !          10132:    return NULL;
        !          10133:  }
        !          10134:  *exc = 0;
        !          10135:  return ((Gdome_xml_Element *)self)->vtab->super.insertBefore ((GdomeNode *)self, newChild, refChild, exc);
        !          10136: }
        !          10137: /**
        !          10138:  * gdome_el_isSupported:
        !          10139:  * @self:  Node Object ref
        !          10140:  * @feature:  The name of the feature to test.
        !          10141:  * @version:  This is the version number of the feature to test. In Level 2,
        !          10142:  *            version 1, this is the string "2.0". If the version is not
        !          10143:  *            specified, supporting any version of the feature will cause the
        !          10144:  *            method to return %TRUE.
        !          10145:  * @exc:  Exception Object ref
        !          10146:  *
        !          10147:  * Tests whether the DOM implementation implements a specific feature and that
        !          10148:  * feature is supported by this node.
        !          10149:  * Returns: %TRUE if the specified feature is supported on this node, %FALSE
        !          10150:  * otherwise.
        !          10151:  */
        !          10152: GdomeBoolean
        !          10153: gdome_el_isSupported (GdomeElement *self, GdomeDOMString *feature, GdomeDOMString *version, GdomeException *exc)
        !          10154: {
        !          10155:  if (self == NULL) {
        !          10156:    *exc = GDOME_NULL_POINTER_ERR;
        !          10157:    return FALSE;
        !          10158:  }
        !          10159:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          10160:    *exc = GDOME_INVALID_STATE_ERR;
        !          10161:    return FALSE;
        !          10162:  }
        !          10163:  *exc = 0;
        !          10164:  return ((Gdome_xml_Element *)self)->vtab->super.isSupported ((GdomeNode *)self, feature, version, exc);
        !          10165: }
        !          10166: /**
        !          10167:  * gdome_el_normalize:
        !          10168:  * @self:  Node Object ref
        !          10169:  * @exc:  Exception Object ref
        !          10170:  *
        !          10171:  * Puts all Text nodes in the full depth of the sub-tree underneath this Node,
        !          10172:  * including attribute nodes, into a "normal" form where only structure (e.g.,
        !          10173:  * elements, comments, processing instructions, CDATA sections, and entity
        !          10174:  * references) separates Text nodes, i.e., there are neither adjacent Text
        !          10175:  * nodes nor empty Text nodes.
        !          10176:  */
        !          10177: void
        !          10178: gdome_el_normalize (GdomeElement *self, GdomeException *exc)
        !          10179: {
        !          10180:  if (self == NULL) {
        !          10181:    *exc = GDOME_NULL_POINTER_ERR;
        !          10182:    return;
        !          10183:  }
        !          10184:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          10185:    *exc = GDOME_INVALID_STATE_ERR;
        !          10186:    return;
        !          10187:  }
        !          10188:  *exc = 0;
        !          10189:  ((Gdome_xml_Element *)self)->vtab->super.normalize ((GdomeNode *)self, exc);
        !          10190: }
        !          10191: /**
        !          10192:  * gdome_el_removeChild:
        !          10193:  * @self:  Node Object ref
        !          10194:  * @oldChild:  The node being removed
        !          10195:  * @exc:  Exception Object ref
        !          10196:  *
        !          10197:  * Removes the child node indicated by @oldChild from the list of children, and
        !          10198:  * returns it.
        !          10199:  *
        !          10200:  * %GDOME_NOT_FOUND_ERR: Raised if @oldChild is not a child of this node.
        !          10201:  * %GDOME_NO_MODIFICATION_ALLOWED_ERR: Raised when the node is readonly.
        !          10202:  * Returns: the node removed.
        !          10203:  */
        !          10204: GdomeNode *
        !          10205: gdome_el_removeChild (GdomeElement *self, GdomeNode *oldChild, GdomeException *exc)
        !          10206: {
        !          10207:  if (self == NULL) {
        !          10208:    *exc = GDOME_NULL_POINTER_ERR;
        !          10209:    return NULL;
        !          10210:  }
        !          10211:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          10212:    *exc = GDOME_INVALID_STATE_ERR;
        !          10213:    return NULL;
        !          10214:  }
        !          10215:  *exc = 0;
        !          10216:  return ((Gdome_xml_Element *)self)->vtab->super.removeChild ((GdomeNode *)self, oldChild, exc);
        !          10217: }
        !          10218: /**
        !          10219:  * gdome_el_replaceChild:
        !          10220:  * @self:  Node Object ref
        !          10221:  * @newChild:  The new node to put in the child list
        !          10222:  * @oldChild:  The node being replaced in the list
        !          10223:  * @exc:  Exception Object ref
        !          10224:  *
        !          10225:  * Replaces the child node @oldChild with @newChild in the list of children,
        !          10226:  * and returns the @oldChild node. If @newChild is a DocumentFragment object,
        !          10227:  * @oldChild is replaced by all of the DocumentFragment children, which are
        !          10228:  * inserted in the same order. If the @newChild is already in the tree, it is
        !          10229:  * first removed.
        !          10230:  *
        !          10231:  * %GDOME_HIERARCHY_REQUEST_ERR: Raised if this node is of a type that does
        !          10232:  * not allow children of the type of the @newChild node, or if the node to put
        !          10233:  * in is one of this node's ancestors or this node itself.
        !          10234:  * %GDOME_WRONG_DOCUMENT_ERR: Raised if @newChild was created from a different
        !          10235:  * document than the one that created this node.
        !          10236:  * %GDOME_NOT_FOUND_ERR: Raised if @oldChild is not a child of this node.
        !          10237:  * %GDOME_NO_MODIFICATION_ALLOWED_ERR: Raised when the node is readonly.
        !          10238:  * Returns: the node replaced.
        !          10239:  */
        !          10240: GdomeNode *
        !          10241: gdome_el_replaceChild (GdomeElement *self, GdomeNode *newChild, GdomeNode *oldChild, GdomeException *exc)
        !          10242: {
        !          10243:  if (self == NULL) {
        !          10244:    *exc = GDOME_NULL_POINTER_ERR;
        !          10245:    return NULL;
        !          10246:  }
        !          10247:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          10248:    *exc = GDOME_INVALID_STATE_ERR;
        !          10249:    return NULL;
        !          10250:  }
        !          10251:  *exc = 0;
        !          10252:  return ((Gdome_xml_Element *)self)->vtab->super.replaceChild ((GdomeNode *)self, newChild, oldChild, exc);
        !          10253: }
        !          10254: /**
        !          10255:  * gdome_el_addEventListener:
        !          10256:  * @self:  Node Object ref
        !          10257:  * @type:  the event type for which the user is registering
        !          10258:  * @listener:  the listener parameter takes an interface implemented by the
        !          10259:  *             user which contains the methods to be called when the event occurs.
        !          10260:  * @useCapture:  if %TRUE, useCapture indicates that the user wishes to initiate
        !          10261:  *               capture. After initiating capture, all events of the specified
        !          10262:  *               type will be dispatched to the registered EventListener before
        !          10263:  *               being dispatched to any EventTargets beneath them in the tree.
        !          10264:  *               Events which are bubbling upward through the tree will not
        !          10265:  *               trigger an EventListener designated to use capture.
        !          10266:  * @exc:  Exception Object ref
        !          10267:  *
        !          10268:  * This method allows the registration of event listeners on the event target.
        !          10269:  * If an EventListener is added to an EventTarget while it is processing an
        !          10270:  * event, it will not be triggered by the current actions but may be triggered
        !          10271:  * during a later stage of event flow, such as the bubbling phase.
        !          10272:  * If multiple identical EventListeners are registered on the same EventTarget
        !          10273:  * with the same parameters the duplicate instances are discarded. They do not
        !          10274:  * cause the EventListener to be called twice and since they are discarded
        !          10275:  * they do not need to be removed with the removeEventListener method.
        !          10276:  */
        !          10277: void
        !          10278: gdome_el_addEventListener (GdomeElement *self, GdomeDOMString *type, GdomeEventListener *listener, GdomeBoolean useCapture, GdomeException *exc)
        !          10279: {
        !          10280:  if (self == NULL) {
        !          10281:    *exc = GDOME_NULL_POINTER_ERR;
        !          10282:    return;
        !          10283:  }
        !          10284:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          10285:    *exc = GDOME_INVALID_STATE_ERR;
        !          10286:    return;
        !          10287:  }
        !          10288:  *exc = 0;
        !          10289:  ((Gdome_xml_Element *)self)->vtab->super.addEventListener ((GdomeNode *)self, type, listener, useCapture, exc);
        !          10290: }
        !          10291: /**
        !          10292:  * gdome_el_removeEventListener:
        !          10293:  * @self:  Node Object ref
        !          10294:  * @type:  Specifies the event type of the EventListener being removed.
        !          10295:  * @listener:  The EventListener parameter indicates the EventListener to be
        !          10296:  *             removed.
        !          10297:  * @useCapture:  Specifies whether the EventListener being removed was
        !          10298:  *               registered as a capturing listener or not. If a listener was
        !          10299:  *               registered twice, one with capture and one without, each must
        !          10300:  *               be removed separately. Removal of a capturing listener does
        !          10301:  *               not affect a non-capturing version of the same listener, and
        !          10302:  *               vice versa.
        !          10303:  * @exc:  Exception Object ref
        !          10304:  *
        !          10305:  * This method allows the removal of event listeners from the event target. If
        !          10306:  * an EventListener is removed from an EventTarget while it is processing an
        !          10307:  * event, it will not be triggered by the current actions. EventListeners can
        !          10308:  * never be invoked after being removed. Calling removeEventListener with
        !          10309:  * arguments which do not identify any currently registered EventListener on
        !          10310:  * the EventTarget has no effect.
        !          10311:  */
        !          10312: void
        !          10313: gdome_el_removeEventListener (GdomeElement *self, GdomeDOMString *type, GdomeEventListener *listener, GdomeBoolean useCapture, GdomeException *exc)
        !          10314: {
        !          10315:  if (self == NULL) {
        !          10316:    *exc = GDOME_NULL_POINTER_ERR;
        !          10317:    return;
        !          10318:  }
        !          10319:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          10320:    *exc = GDOME_INVALID_STATE_ERR;
        !          10321:    return;
        !          10322:  }
        !          10323:  *exc = 0;
        !          10324:  ((Gdome_xml_Element *)self)->vtab->super.removeEventListener ((GdomeNode *)self, type, listener, useCapture, exc);
        !          10325: }
        !          10326: /**
        !          10327:  * gdome_el_dispatchEvent:
        !          10328:  * @self:  Node Object ref
        !          10329:  * @evt:  Specifies the event type, behavior, and contextual information to be
        !          10330:  *        used in processing the event.
        !          10331:  * @exc:  Exception Object ref
        !          10332:  *
        !          10333:  * This method allows the dispatch of events into the implementations event
        !          10334:  * model. Events dispatched in this manner will have the same capturing and
        !          10335:  * bubbling behavior as events dispatched directly by the implementation. The
        !          10336:  * target of the event is the EventTarget on which dispatchEvent is called.
        !          10337:  *
        !          10338:  * GDOME_UNSPECIFIED_EVENT_TYPE_ERR: Raised if the Event's type was not
        !          10339:  * specified by initializing the event before dispatchEvent was called.
        !          10340:  * Specification of the Event's type as %NULL or an empty string will also
        !          10341:  * trigger this exception.
        !          10342:  * Returns: if preventDefault was called the value is %FALSE, else the value
        !          10343:  *          is %TRUE.
        !          10344:  */
        !          10345: GdomeBoolean
        !          10346: gdome_el_dispatchEvent (GdomeElement *self, GdomeEvent *evt, GdomeException *exc)
        !          10347: {
        !          10348:  if (self == NULL) {
        !          10349:    *exc = GDOME_NULL_POINTER_ERR;
        !          10350:    return FALSE;
        !          10351:  }
        !          10352:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          10353:    *exc = GDOME_INVALID_STATE_ERR;
        !          10354:    return FALSE;
        !          10355:  }
        !          10356:  *exc = 0;
        !          10357:  return ((Gdome_xml_Element *)self)->vtab->super.dispatchEvent ((GdomeNode *)self, evt, exc);
        !          10358: }
        !          10359: /**
        !          10360:  * gdome_el_subTreeDispatchEvent:
        !          10361:  * @self:  Node Object ref
        !          10362:  * @evt:  Specifies the event type, behavior, and contextual information to be
        !          10363:  *        used in processing the event.
        !          10364:  * @exc:  Exception Object ref
        !          10365:  *
        !          10366:  * This method allows the dispatch of events into the implementations event
        !          10367:  * model. Events dispatched in this manner will have the same capturing and
        !          10368:  * bubbling behavior as events dispatched directly by the implementation. The
        !          10369:  * target of the event is any nodes in the subtree of the EventTarget on which
        !          10370:  * dispatchEvent is called.
        !          10371:  *
        !          10372:  * GDOME_UNSPECIFIED_EVENT_TYPE_ERR: Raised if the Event's type was not
        !          10373:  * specified by initializing the event before dispatchEvent was called.
        !          10374:  * Specification of the Event's type as %NULL or an empty string will also
        !          10375:  * trigger this exception.
        !          10376:  */
        !          10377: void
        !          10378: gdome_el_subTreeDispatchEvent (GdomeElement *self, GdomeEvent *evt, GdomeException *exc)
        !          10379: {
        !          10380:  if (self == NULL) {
        !          10381:    *exc = GDOME_NULL_POINTER_ERR;
        !          10382:    return;
        !          10383:  }
        !          10384:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          10385:    *exc = GDOME_INVALID_STATE_ERR;
        !          10386:    return;
        !          10387:  }
        !          10388:  *exc = 0;
        !          10389:  ((Gdome_xml_Element *)self)->vtab->super.subTreeDispatchEvent ((GdomeNode *)self, evt, exc);
        !          10390: }
        !          10391: /**
        !          10392:  * gdome_el_canAppend:
        !          10393:  * @self:  Node Object ref
        !          10394:  * @newChild:  The Node Object ref of the node to test
        !          10395:  * @exc:  Exception Object ref
        !          10396:  *
        !          10397:  * Tests if a @newChild can be added in the child list of this node.
        !          10398:  * Returns: %TRUE if @newChild can be added, %FALSE otherwise.
        !          10399:  */
        !          10400: GdomeBoolean
        !          10401: gdome_el_canAppend (GdomeElement *self, GdomeNode *newChild, GdomeException *exc)
        !          10402: {
        !          10403:  if (self == NULL) {
        !          10404:    *exc = GDOME_NULL_POINTER_ERR;
        !          10405:    return FALSE;
        !          10406:  }
        !          10407:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          10408:    *exc = GDOME_INVALID_STATE_ERR;
        !          10409:    return FALSE;
        !          10410:  }
        !          10411:  *exc = 0;
        !          10412:  return ((Gdome_xml_Element *)self)->vtab->super.canAppend ((GdomeNode *)self, newChild, exc);
        !          10413: }
        !          10414: 
        !          10415: /******************************************************************************
        !          10416:           GdomeDocumentType interface API
        !          10417:  ******************************************************************************/
        !          10418: /**
        !          10419:  * gdome_dt_entities:
        !          10420:  * @self:  DocumentType Object ref
        !          10421:  * @exc:  Exception Object ref
        !          10422:  *
        !          10423:  * Returns: a NamedNodeMap containing the general entities, both external and
        !          10424:  * internal, declared in the DTD. Parameter entities are not contained.
        !          10425:  * Duplicates are discarded.
        !          10426:  */
        !          10427: GdomeNamedNodeMap *
        !          10428: gdome_dt_entities (GdomeDocumentType *self, GdomeException *exc)
        !          10429: {
        !          10430:  if (self == NULL) {
        !          10431:    *exc = GDOME_NULL_POINTER_ERR;
        !          10432:    return NULL;
        !          10433:  }
        !          10434:  if (((Gdome_xml_DocumentType *)self)->n == NULL) {
        !          10435:    *exc = GDOME_INVALID_STATE_ERR;
        !          10436:    return NULL;
        !          10437:  }
        !          10438:  *exc = 0;
        !          10439:  return ((Gdome_xml_DocumentType *)self)->vtab->entities (self, exc);
        !          10440: }
        !          10441: /**
        !          10442:  * gdome_dt_internalSubset:
        !          10443:  * @self:  DocumentType Object ref
        !          10444:  * @exc:  Exception Object ref
        !          10445:  *
        !          10446:  * Returns: The internal subset as a string, or %NULL if there is none or on
        !          10447:  * error.
        !          10448:  */
        !          10449: GdomeDOMString *
        !          10450: gdome_dt_internalSubset (GdomeDocumentType *self, GdomeException *exc)
        !          10451: {
        !          10452:  if (self == NULL) {
        !          10453:    *exc = GDOME_NULL_POINTER_ERR;
        !          10454:    return NULL;
        !          10455:  }
        !          10456:  if (((Gdome_xml_DocumentType *)self)->n == NULL) {
        !          10457:    *exc = GDOME_INVALID_STATE_ERR;
        !          10458:    return NULL;
        !          10459:  }
        !          10460:  *exc = 0;
        !          10461:  return ((Gdome_xml_DocumentType *)self)->vtab->internalSubset (self, exc);
        !          10462: }
        !          10463: /**
        !          10464:  * gdome_dt_name:
        !          10465:  * @self:  DocumentType Object ref
        !          10466:  * @exc:  Exception Object ref
        !          10467:  *
        !          10468:  * Returns: the name of DTD; i.e., the name immediately following the %DOCTYPE
        !          10469:  * keyword.
        !          10470:  */
        !          10471: GdomeDOMString *
        !          10472: gdome_dt_name (GdomeDocumentType *self, GdomeException *exc)
        !          10473: {
        !          10474:  if (self == NULL) {
        !          10475:    *exc = GDOME_NULL_POINTER_ERR;
        !          10476:    return NULL;
        !          10477:  }
        !          10478:  if (((Gdome_xml_DocumentType *)self)->n == NULL) {
        !          10479:    *exc = GDOME_INVALID_STATE_ERR;
        !          10480:    return NULL;
        !          10481:  }
        !          10482:  *exc = 0;
        !          10483:  return ((Gdome_xml_DocumentType *)self)->vtab->name (self, exc);
        !          10484: }
        !          10485: /**
        !          10486:  * gdome_dt_notations:
        !          10487:  * @self:  DocumentType Object ref
        !          10488:  * @exc:  Exception Object ref
        !          10489:  *
        !          10490:  * Returns: a NamedNodeMap containing the notations declared in the DTD.
        !          10491:  * Duplicates are discarded. Every node in this map also implements the
        !          10492:  * Notation interface.
        !          10493:  */
        !          10494: GdomeNamedNodeMap *
        !          10495: gdome_dt_notations (GdomeDocumentType *self, GdomeException *exc)
        !          10496: {
        !          10497:  if (self == NULL) {
        !          10498:    *exc = GDOME_NULL_POINTER_ERR;
        !          10499:    return NULL;
        !          10500:  }
        !          10501:  if (((Gdome_xml_DocumentType *)self)->n == NULL) {
        !          10502:    *exc = GDOME_INVALID_STATE_ERR;
        !          10503:    return NULL;
        !          10504:  }
        !          10505:  *exc = 0;
        !          10506:  return ((Gdome_xml_DocumentType *)self)->vtab->notations (self, exc);
        !          10507: }
        !          10508: /**
        !          10509:  * gdome_dt_publicId:
        !          10510:  * @self:  DocumentType Object ref
        !          10511:  * @exc:  Exception Object ref
        !          10512:  *
        !          10513:  * Returns: the public identifier of the external subset.
        !          10514:  */
        !          10515: GdomeDOMString *
        !          10516: gdome_dt_publicId (GdomeDocumentType *self, GdomeException *exc)
        !          10517: {
        !          10518:  if (self == NULL) {
        !          10519:    *exc = GDOME_NULL_POINTER_ERR;
        !          10520:    return NULL;
        !          10521:  }
        !          10522:  if (((Gdome_xml_DocumentType *)self)->n == NULL) {
        !          10523:    *exc = GDOME_INVALID_STATE_ERR;
        !          10524:    return NULL;
        !          10525:  }
        !          10526:  *exc = 0;
        !          10527:  return ((Gdome_xml_DocumentType *)self)->vtab->publicId (self, exc);
        !          10528: }
        !          10529: /**
        !          10530:  * gdome_dt_systemId:
        !          10531:  * @self:  DocumentType Object ref
        !          10532:  * @exc:  Exception Object ref
        !          10533:  *
        !          10534:  * Returns: the public identifier of the external subset.
        !          10535:  */
        !          10536: GdomeDOMString *
        !          10537: gdome_dt_systemId (GdomeDocumentType *self, GdomeException *exc)
        !          10538: {
        !          10539:  if (self == NULL) {
        !          10540:    *exc = GDOME_NULL_POINTER_ERR;
        !          10541:    return NULL;
        !          10542:  }
        !          10543:  if (((Gdome_xml_DocumentType *)self)->n == NULL) {
        !          10544:    *exc = GDOME_INVALID_STATE_ERR;
        !          10545:    return NULL;
        !          10546:  }
        !          10547:  *exc = 0;
        !          10548:  return ((Gdome_xml_DocumentType *)self)->vtab->systemId (self, exc);
        !          10549: }
        !          10550: /**
        !          10551:  * gdome_dt_attributes:
        !          10552:  * @self:  Node Object ref
        !          10553:  * @exc:  Exception Object ref
        !          10554:  *
        !          10555:  * Returns: a NamedNodeMap containing the attributes of this node (if it is an
        !          10556:  * Element) or %NULL otherwise.
        !          10557:  */
        !          10558: GdomeNamedNodeMap *
        !          10559: gdome_dt_attributes (GdomeDocumentType *self, GdomeException *exc)
        !          10560: {
        !          10561:  if (self == NULL) {
        !          10562:    *exc = GDOME_NULL_POINTER_ERR;
        !          10563:    return NULL;
        !          10564:  }
        !          10565:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          10566:    *exc = GDOME_INVALID_STATE_ERR;
        !          10567:    return NULL;
        !          10568:  }
        !          10569:  *exc = 0;
        !          10570:  return ((Gdome_xml_DocumentType *)self)->vtab->super.attributes ((GdomeNode *)self, exc);
        !          10571: }
        !          10572: /**
        !          10573:  * gdome_dt_childNodes:
        !          10574:  * @self:  Node Object ref
        !          10575:  * @exc:  Exception Object ref
        !          10576:  *
        !          10577:  * Returns: a NodeList that contains all children of this node. If there are no
        !          10578:  * children, this is a NodeList containing no nodes.  Note that attributes are
        !          10579:  * not considered to be children of element nodes - use gdome_n_attributes to
        !          10580:  * obtain the attributes.
        !          10581:  */
        !          10582: GdomeNodeList *
        !          10583: gdome_dt_childNodes (GdomeDocumentType *self, GdomeException *exc)
        !          10584: {
        !          10585:  if (self == NULL) {
        !          10586:    *exc = GDOME_NULL_POINTER_ERR;
        !          10587:    return NULL;
        !          10588:  }
        !          10589:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          10590:    *exc = GDOME_INVALID_STATE_ERR;
        !          10591:    return NULL;
        !          10592:  }
        !          10593:  *exc = 0;
        !          10594:  return ((Gdome_xml_DocumentType *)self)->vtab->super.childNodes ((GdomeNode *)self, exc);
        !          10595: }
        !          10596: /**
        !          10597:  * gdome_dt_firstChild:
        !          10598:  * @self:  Node Object ref
        !          10599:  * @exc:  Exception Object ref
        !          10600:  * 
        !          10601:  * Returns: the first child of this node. If there is no such node,
        !          10602:  * this returns %NULL.
        !          10603:  */
        !          10604: GdomeNode *
        !          10605: gdome_dt_firstChild (GdomeDocumentType *self, GdomeException *exc)
        !          10606: {
        !          10607:  if (self == NULL) {
        !          10608:    *exc = GDOME_NULL_POINTER_ERR;
        !          10609:    return NULL;
        !          10610:  }
        !          10611:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          10612:    *exc = GDOME_INVALID_STATE_ERR;
        !          10613:    return NULL;
        !          10614:  }
        !          10615:  *exc = 0;
        !          10616:  return ((Gdome_xml_DocumentType *)self)->vtab->super.firstChild ((GdomeNode *)self, exc);
        !          10617: }
        !          10618: /**
        !          10619:  * gdome_dt_lastChild:
        !          10620:  * @self:  Node Object ref
        !          10621:  * @exc:  Exception Object ref
        !          10622:  *
        !          10623:  * Returns: the last child of this node. If there is no such node,
        !          10624:  * this returns %NULL.
        !          10625:  */
        !          10626: GdomeNode *
        !          10627: gdome_dt_lastChild (GdomeDocumentType *self, GdomeException *exc)
        !          10628: {
        !          10629:  if (self == NULL) {
        !          10630:    *exc = GDOME_NULL_POINTER_ERR;
        !          10631:    return NULL;
        !          10632:  }
        !          10633:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          10634:    *exc = GDOME_INVALID_STATE_ERR;
        !          10635:    return NULL;
        !          10636:  }
        !          10637:  *exc = 0;
        !          10638:  return ((Gdome_xml_DocumentType *)self)->vtab->super.lastChild ((GdomeNode *)self, exc);
        !          10639: }
        !          10640: /**
        !          10641:  * gdome_dt_localName:
        !          10642:  * @self:  Node Objects ref
        !          10643:  * @exc:  Exception Object ref
        !          10644:  *
        !          10645:  * Returns: the local part of the qualified name of this node.
        !          10646:  * For nodes of any type other than %GDOME_ELEMENT_NODE and
        !          10647:  * %GDOME_ATTRIBUTE_NODE and nodes created with a DOM Level 1 method, this is
        !          10648:  * always %NULL.
        !          10649:  */
        !          10650: GdomeDOMString *
        !          10651: gdome_dt_localName (GdomeDocumentType *self, GdomeException *exc)
        !          10652: {
        !          10653:  if (self == NULL) {
        !          10654:    *exc = GDOME_NULL_POINTER_ERR;
        !          10655:    return NULL;
        !          10656:  }
        !          10657:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          10658:    *exc = GDOME_INVALID_STATE_ERR;
        !          10659:    return NULL;
        !          10660:  }
        !          10661:  *exc = 0;
        !          10662:  return ((Gdome_xml_DocumentType *)self)->vtab->super.localName ((GdomeNode *)self, exc);
        !          10663: }
        !          10664: /**
        !          10665:  * gdome_dt_namespaceURI:
        !          10666:  * @self:  Node Objects ref
        !          10667:  * @exc:  Exception Object ref
        !          10668:  *
        !          10669:  * Returns: the namespace URI of this node, or %NULL if it is unspecified.
        !          10670:  * For nodes of any type other than %GDOME_ELEMENT_NODE and
        !          10671:  * %GDOME_ATTRIBUTE_NODE and nodes created with a DOM Level 1 method, this is
        !          10672:  * always %NULL.
        !          10673:  */
        !          10674: GdomeDOMString *
        !          10675: gdome_dt_namespaceURI (GdomeDocumentType *self, GdomeException *exc)
        !          10676: {
        !          10677:  if (self == NULL) {
        !          10678:    *exc = GDOME_NULL_POINTER_ERR;
        !          10679:    return NULL;
        !          10680:  }
        !          10681:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          10682:    *exc = GDOME_INVALID_STATE_ERR;
        !          10683:    return NULL;
        !          10684:  }
        !          10685:  *exc = 0;
        !          10686:  return ((Gdome_xml_DocumentType *)self)->vtab->super.namespaceURI ((GdomeNode *)self, exc);
        !          10687: }
        !          10688: /**
        !          10689:  * gdome_dt_nextSibling:
        !          10690:  * @self:  Node Object ref
        !          10691:  * @exc:  Exception Object ref
        !          10692:  *
        !          10693:  * Returns: the node immediately following this node. If there is no such
        !          10694:  * node, this returns %NULL.
        !          10695:  */
        !          10696: GdomeNode *
        !          10697: gdome_dt_nextSibling (GdomeDocumentType *self, GdomeException *exc)
        !          10698: {
        !          10699:  if (self == NULL) {
        !          10700:    *exc = GDOME_NULL_POINTER_ERR;
        !          10701:    return NULL;
        !          10702:  }
        !          10703:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          10704:    *exc = GDOME_INVALID_STATE_ERR;
        !          10705:    return NULL;
        !          10706:  }
        !          10707:  *exc = 0;
        !          10708:  return ((Gdome_xml_DocumentType *)self)->vtab->super.nextSibling ((GdomeNode *)self, exc);
        !          10709: }
        !          10710: /**
        !          10711:  * gdome_dt_nodeName:
        !          10712:  * @self:  Node Object ref
        !          10713:  * @exc:  Exception Object ref
        !          10714:  *
        !          10715:  * Returns: the name of this node, depending on its type.
        !          10716:  */
        !          10717: GdomeDOMString *
        !          10718: gdome_dt_nodeName (GdomeDocumentType *self, GdomeException *exc)
        !          10719: {
        !          10720:  if (self == NULL) {
        !          10721:    *exc = GDOME_NULL_POINTER_ERR;
        !          10722:    return NULL;
        !          10723:  }
        !          10724:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          10725:    *exc = GDOME_INVALID_STATE_ERR;
        !          10726:    return NULL;
        !          10727:  }
        !          10728:  *exc = 0;
        !          10729:  return ((Gdome_xml_DocumentType *)self)->vtab->super.nodeName ((GdomeNode *)self, exc);
        !          10730: }
        !          10731: /**
        !          10732:  * gdome_dt_nodeType:
        !          10733:  * @self:  Node Object ref
        !          10734:  * @exc:  Exception Object ref
        !          10735:  *
        !          10736:  * Returns: an integer bigger than %0 representing the type of the underlying
        !          10737:  * object or %0 on error.
        !          10738:  */
        !          10739: unsigned short
        !          10740: gdome_dt_nodeType (GdomeDocumentType *self, GdomeException *exc)
        !          10741: {
        !          10742:  if (self == NULL) {
        !          10743:    *exc = GDOME_NULL_POINTER_ERR;
        !          10744:    return 0;
        !          10745:  }
        !          10746:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          10747:    *exc = GDOME_INVALID_STATE_ERR;
        !          10748:    return 0;
        !          10749:  }
        !          10750:  *exc = 0;
        !          10751:  return ((Gdome_xml_DocumentType *)self)->vtab->super.nodeType ((GdomeNode *)self, exc);
        !          10752: }
        !          10753: /**
        !          10754:  * gdome_dt_nodeValue:
        !          10755:  * @self:  Node Object ref
        !          10756:  * @exc:  Exception Object ref
        !          10757:  *
        !          10758:  * Returns: the value of this node, depending on its type.
        !          10759:  */
        !          10760: GdomeDOMString *
        !          10761: gdome_dt_nodeValue (GdomeDocumentType *self, GdomeException *exc)
        !          10762: {
        !          10763:  if (self == NULL) {
        !          10764:    *exc = GDOME_NULL_POINTER_ERR;
        !          10765:    return NULL;
        !          10766:  }
        !          10767:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          10768:    *exc = GDOME_INVALID_STATE_ERR;
        !          10769:    return NULL;
        !          10770:  }
        !          10771:  *exc = 0;
        !          10772:  return ((Gdome_xml_DocumentType *)self)->vtab->super.nodeValue ((GdomeNode *)self, exc);
        !          10773: }
        !          10774: /**
        !          10775:  * gdome_dt_set_nodeValue:
        !          10776:  * @self:  Node Object ref
        !          10777:  * @nodeValue:  The new value for this node.
        !          10778:  * @exc:  Exception Object ref
        !          10779:  *
        !          10780:  * Sets The value of this node, depending on its type.
        !          10781:  *
        !          10782:  * %GDOME_NO_MODIFICATION_ALLOWED_ERR: Raised when the node is readonly.
        !          10783:  */
        !          10784: void
        !          10785: gdome_dt_set_nodeValue (GdomeDocumentType *self, GdomeDOMString *nodeValue, GdomeException *exc)
        !          10786: {
        !          10787:  if (self == NULL) {
        !          10788:    *exc = GDOME_NULL_POINTER_ERR;
        !          10789:    return;
        !          10790:  }
        !          10791:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          10792:    *exc = GDOME_INVALID_STATE_ERR;
        !          10793:    return;
        !          10794:  }
        !          10795:  *exc = 0;
        !          10796:  ((Gdome_xml_DocumentType *)self)->vtab->super.set_nodeValue ((GdomeNode *)self, nodeValue, exc);
        !          10797: }
        !          10798: /**
        !          10799:  * gdome_dt_ownerDocument:
        !          10800:  * @self:  Node Objects ref
        !          10801:  * @exc:  Exception Object ref
        !          10802:  *
        !          10803:  * Returns: the documment object associated with this node. This is also the
        !          10804:  * Document object used to create new nodes. When this node is a Document or a
        !          10805:  * DocumentType which is not used with any Document yet, this is %NULL.
        !          10806:  */
        !          10807: GdomeDocument *
        !          10808: gdome_dt_ownerDocument (GdomeDocumentType *self, GdomeException *exc)
        !          10809: {
        !          10810:  if (self == NULL) {
        !          10811:    *exc = GDOME_NULL_POINTER_ERR;
        !          10812:    return NULL;
        !          10813:  }
        !          10814:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          10815:    *exc = GDOME_INVALID_STATE_ERR;
        !          10816:    return NULL;
        !          10817:  }
        !          10818:  *exc = 0;
        !          10819:  return ((Gdome_xml_DocumentType *)self)->vtab->super.ownerDocument ((GdomeNode *)self, exc);
        !          10820: }
        !          10821: /**
        !          10822:  * gdome_dt_parentNode:
        !          10823:  * @self: Node Object ref
        !          10824:  * @exc: Exception Object ref
        !          10825:  *
        !          10826:  * Returns: the parent of this node. All nodes, except Attr,
        !          10827:  * Document, DocumentFragment, Entity, and Notation may have a parent. However,
        !          10828:  * if a node has just been created and not yet added to the tree, or if it has
        !          10829:  * been removed from the tree, this is %NULL.
        !          10830:  */
        !          10831: GdomeNode *
        !          10832: gdome_dt_parentNode (GdomeDocumentType *self, GdomeException *exc)
        !          10833: {
        !          10834:  if (self == NULL) {
        !          10835:    *exc = GDOME_NULL_POINTER_ERR;
        !          10836:    return NULL;
        !          10837:  }
        !          10838:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          10839:    *exc = GDOME_INVALID_STATE_ERR;
        !          10840:    return NULL;
        !          10841:  }
        !          10842:  *exc = 0;
        !          10843:  return ((Gdome_xml_DocumentType *)self)->vtab->super.parentNode ((GdomeNode *)self, exc);
        !          10844: }
        !          10845: /**
        !          10846:  * gdome_dt_prefix:
        !          10847:  * @self:  Node Objects ref
        !          10848:  * @exc:  Exception Object ref
        !          10849:  *
        !          10850:  * Returns: the namespace prefix of this node, or %NULL if it is unspecified.
        !          10851:  * For nodes of any type other than %GDOME_ELEMENT_NODE and
        !          10852:  * %GDOME_ATTRIBUTE_NODE and nodes created with a DOM Level 1 method, this is
        !          10853:  * always %NULL.
        !          10854:  */
        !          10855: GdomeDOMString *
        !          10856: gdome_dt_prefix (GdomeDocumentType *self, GdomeException *exc)
        !          10857: {
        !          10858:  if (self == NULL) {
        !          10859:    *exc = GDOME_NULL_POINTER_ERR;
        !          10860:    return NULL;
        !          10861:  }
        !          10862:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          10863:    *exc = GDOME_INVALID_STATE_ERR;
        !          10864:    return NULL;
        !          10865:  }
        !          10866:  *exc = 0;
        !          10867:  return ((Gdome_xml_DocumentType *)self)->vtab->super.prefix ((GdomeNode *)self, exc);
        !          10868: }
        !          10869: /**
        !          10870:  * gdome_dt_set_prefix:
        !          10871:  * @self:  Node Object ref
        !          10872:  * @prefix:  The new prefix for this node.
        !          10873:  * @exc:  Exception Object ref
        !          10874:  *
        !          10875:  * Sets a new nemaspace prefix for this node.
        !          10876:  *
        !          10877:  * %GDOME_NO_MODIFICATION_ALLOWED_ERR: Raised when the node is readonly.
        !          10878:  * %GDOME_NAMESPACE_ERR: Raised if the specified @prefix is malformed per the
        !          10879:  * Namespaces in XML specification, if the namespaceURI of this node is %NULL,
        !          10880:  * if the specified prefix is "xml" and the namespaceURI of this node is
        !          10881:  * different from "http://www.w3.org/XML/1998/namespace", if this node is an
        !          10882:  * attribute and the specified prefix is "xmlns" and the namespaceURI of this
        !          10883:  * node is different from "http://www.w3.org/2000/xmlns/", or if this node is
        !          10884:  * an attribute and the qualifiedName of this node is "xmlns".
        !          10885:  */
        !          10886: void
        !          10887: gdome_dt_set_prefix (GdomeDocumentType *self, GdomeDOMString *prefix, GdomeException *exc)
        !          10888: {
        !          10889:  if (self == NULL) {
        !          10890:    *exc = GDOME_NULL_POINTER_ERR;
        !          10891:    return;
        !          10892:  }
        !          10893:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          10894:    *exc = GDOME_INVALID_STATE_ERR;
        !          10895:    return;
        !          10896:  }
        !          10897:  *exc = 0;
        !          10898:  ((Gdome_xml_DocumentType *)self)->vtab->super.set_prefix ((GdomeNode *)self, prefix, exc);
        !          10899: }
        !          10900: /**
        !          10901:  * gdome_dt_previousSibling:
        !          10902:  * @self:  Node Object ref
        !          10903:  * @exc:  Exception Object ref
        !          10904:  *
        !          10905:  * Returns: the node immediately preceding this node. If there is no such
        !          10906:  * node, this returns %NULL.
        !          10907:  */
        !          10908: GdomeNode *
        !          10909: gdome_dt_previousSibling (GdomeDocumentType *self, GdomeException *exc)
        !          10910: {
        !          10911:  if (self == NULL) {
        !          10912:    *exc = GDOME_NULL_POINTER_ERR;
        !          10913:    return NULL;
        !          10914:  }
        !          10915:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          10916:    *exc = GDOME_INVALID_STATE_ERR;
        !          10917:    return NULL;
        !          10918:  }
        !          10919:  *exc = 0;
        !          10920:  return ((Gdome_xml_DocumentType *)self)->vtab->super.previousSibling ((GdomeNode *)self, exc);
        !          10921: }
        !          10922: /**
        !          10923:  * gdome_dt_ref:
        !          10924:  * @self:  Node Object ref
        !          10925:  * @exc:  Exception Object ref
        !          10926:  *
        !          10927:  * Increase the reference count of the specified Node.
        !          10928:  */
        !          10929: void
        !          10930: gdome_dt_ref (GdomeDocumentType *self, GdomeException *exc)
        !          10931: {
        !          10932:  if (self == NULL) {
        !          10933:    *exc = GDOME_NULL_POINTER_ERR;
        !          10934:    return;
        !          10935:  }
        !          10936:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          10937:    *exc = GDOME_INVALID_STATE_ERR;
        !          10938:    return;
        !          10939:  }
        !          10940:  *exc = 0;
        !          10941:  ((Gdome_xml_DocumentType *)self)->vtab->super.ref ((GdomeNode *)self, exc);
        !          10942: }
        !          10943: /**
        !          10944:  * gdome_dt_unref:
        !          10945:  * @self:  Node Object ref
        !          10946:  * @exc:  Exception Object ref
        !          10947:  *
        !          10948:  * Decrease the reference count of the specified Node. Free the Node structure
        !          10949:  * if the Node will have zero reference.
        !          10950:  */
        !          10951: void
        !          10952: gdome_dt_unref (GdomeDocumentType *self, GdomeException *exc)
        !          10953: {
        !          10954:  if (self == NULL) {
        !          10955:    *exc = GDOME_NULL_POINTER_ERR;
        !          10956:    return;
        !          10957:  }
        !          10958:  *exc = 0;
        !          10959:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          10960:    if (((Gdome_xml_Node *)self)->refcnt > 0)
        !          10961:      ((Gdome_xml_Node *)self)->refcnt--;
        !          10962: 
        !          10963:    if (((Gdome_xml_Node *)self)->refcnt == 0 && ((Gdome_xml_Node *)self)->ll == NULL) {
        !          10964: #ifdef DEBUG_REFCNT
        !          10965:      gdome_refdbg_delRef ((void *)self, GDOME_REFDBG_NODE);
        !          10966: #endif
        !          10967:      g_free (self);
        !          10968:    }
        !          10969:    return;
        !          10970:  }
        !          10971:  ((Gdome_xml_DocumentType *)self)->vtab->super.unref ((GdomeNode *)self, exc);
        !          10972: }
        !          10973: /**
        !          10974:  * gdome_dt_query_interface:
        !          10975:  * @self:  Node Object ref
        !          10976:  * @interface:  interface needed
        !          10977:  * @exc:  Exception Object ref
        !          10978:  *
        !          10979:  * Returns: a reference to this object that implements the @interface needed,
        !          10980:  *          or %NULL if the @interface is not supported by this Object.
        !          10981:  */
        !          10982: gpointer
        !          10983: gdome_dt_query_interface (GdomeDocumentType *self, const char *interface, GdomeException *exc)
        !          10984: {
        !          10985:  if (self == NULL) {
        !          10986:    *exc = GDOME_NULL_POINTER_ERR;
        !          10987:    return NULL;
        !          10988:  }
        !          10989:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          10990:    *exc = GDOME_INVALID_STATE_ERR;
        !          10991:    return NULL;
        !          10992:  }
        !          10993:  *exc = 0;
        !          10994:  return ((Gdome_xml_DocumentType *)self)->vtab->super.query_interface ((GdomeNode *)self, interface, exc);
        !          10995: }
        !          10996: /**
        !          10997:  * gdome_dt_appendChild:
        !          10998:  * @self:  Node Object ref
        !          10999:  * @newChild:  The node to add
        !          11000:  * @exc:  Exception Object ref
        !          11001:  *
        !          11002:  * Adds the node @newChild to the end of the list of children of this node.
        !          11003:  * If the @newChild is already in the tree, it is first removed. If it is a
        !          11004:  * DocumentFragment node, the entire contents of the document fragment are
        !          11005:  * moved into the child list of this node
        !          11006:  *
        !          11007:  * %GDOME_HIERARCHY_REQUEST_ERR: Raised if this node is of a type that does not
        !          11008:  * allow children of the type of the @newChild node, or if the node to append is
        !          11009:  * one of this node's ancestors or this node itself.
        !          11010:  * %GDOME_WRONG_DOCUMENT_ERR: Raised if @newChild was created from a different
        !          11011:  * document than the one that created this node.
        !          11012:  * %GDOME_NO_MODIFICATION_ALLOWED_ERR: Raised when the node is readonly.
        !          11013:  * Returns: the node added.
        !          11014:  */
        !          11015: GdomeNode *
        !          11016: gdome_dt_appendChild (GdomeDocumentType *self, GdomeNode *newChild, GdomeException *exc)
        !          11017: {
        !          11018:  if (self == NULL) {
        !          11019:    *exc = GDOME_NULL_POINTER_ERR;
        !          11020:    return NULL;
        !          11021:  }
        !          11022:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          11023:    *exc = GDOME_INVALID_STATE_ERR;
        !          11024:    return NULL;
        !          11025:  }
        !          11026:  *exc = 0;
        !          11027:  return ((Gdome_xml_DocumentType *)self)->vtab->super.appendChild ((GdomeNode *)self, newChild, exc);
        !          11028: }
        !          11029: /**
        !          11030:  * gdome_dt_cloneNode:
        !          11031:  * @self:  Node Object ref
        !          11032:  * @deep:  If true, recursively clone the subtree under the specified node;
        !          11033:  *         if false, clone only the node itself (and its attributes, if it is
        !          11034:  *         an Element).
        !          11035:  * @exc:  Exception Object ref
        !          11036:  *
        !          11037:  * Makes a duplicate of this node, i.e., serves as a generic copy
        !          11038:  * constructor for nodes. The duplicate node has no parent; (parentNode is
        !          11039:  * %NULL).
        !          11040:  * %GDOME_DOCUMENT_TYPE_NODE, %GDOME_NOTATION_NODE and %GDOME_ENTITY_NODE
        !          11041:  * nodes are not supported.
        !          11042:  *
        !          11043:  * %GDOME_NOT_SUPPORTED_ERR: Raised if the type of node being cloned is not
        !          11044:  * supported.
        !          11045:  * Returns: the duplicate node.
        !          11046:  */
        !          11047: GdomeNode *
        !          11048: gdome_dt_cloneNode (GdomeDocumentType *self, GdomeBoolean deep, GdomeException *exc)
        !          11049: {
        !          11050:  if (self == NULL) {
        !          11051:    *exc = GDOME_NULL_POINTER_ERR;
        !          11052:    return NULL;
        !          11053:  }
        !          11054:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          11055:    *exc = GDOME_INVALID_STATE_ERR;
        !          11056:    return NULL;
        !          11057:  }
        !          11058:  *exc = 0;
        !          11059:  return ((Gdome_xml_DocumentType *)self)->vtab->super.cloneNode ((GdomeNode *)self, deep, exc);
        !          11060: }
        !          11061: /**
        !          11062:  * gdome_dt_hasAttributes:
        !          11063:  * @self:  Node Object ref
        !          11064:  * @exc:  Exception Object ref
        !          11065:  *
        !          11066:  * Returns: %TRUE if this node has any attributes, %FALSE otherwise.
        !          11067:  */
        !          11068: GdomeBoolean
        !          11069: gdome_dt_hasAttributes (GdomeDocumentType *self, GdomeException *exc)
        !          11070: {
        !          11071:  if (self == NULL) {
        !          11072:    *exc = GDOME_NULL_POINTER_ERR;
        !          11073:    return FALSE;
        !          11074:  }
        !          11075:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          11076:    *exc = GDOME_INVALID_STATE_ERR;
        !          11077:    return FALSE;
        !          11078:  }
        !          11079:  *exc = 0;
        !          11080:  return ((Gdome_xml_DocumentType *)self)->vtab->super.hasAttributes ((GdomeNode *)self, exc);
        !          11081: }
        !          11082: /**
        !          11083:  * gdome_dt_hasChildNodes:
        !          11084:  * @self:  Node Object ref
        !          11085:  * @exc:  Exception Object ref
        !          11086:  *
        !          11087:  * Returns: %TRUE if this node has any children, %FALSE otherwise.
        !          11088:  */
        !          11089: GdomeBoolean
        !          11090: gdome_dt_hasChildNodes (GdomeDocumentType *self, GdomeException *exc)
        !          11091: {
        !          11092:  if (self == NULL) {
        !          11093:    *exc = GDOME_NULL_POINTER_ERR;
        !          11094:    return FALSE;
        !          11095:  }
        !          11096:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          11097:    *exc = GDOME_INVALID_STATE_ERR;
        !          11098:    return FALSE;
        !          11099:  }
        !          11100:  *exc = 0;
        !          11101:  return ((Gdome_xml_DocumentType *)self)->vtab->super.hasChildNodes ((GdomeNode *)self, exc);
        !          11102: }
        !          11103: /**
        !          11104:  * gdome_dt_insertBefore:
        !          11105:  * @self:  Node Object ref
        !          11106:  * @newChild:  The new node to put in the child list
        !          11107:  * @refChild:  the reference node, i.e., the node before which the new node
        !          11108:  *             must be inserted.
        !          11109:  * @exc:  Exception Object ref
        !          11110:  *
        !          11111:  * Inserts the node @newChild before the existing child node @refChild. If
        !          11112:  * @refChild is %NULL, insert @newChild at the end of the list of children.
        !          11113:  * If @newChild is a DocumentFragment node, all of its children are inserted,
        !          11114:  * in the same order, before @refChild. If the @newChild is already in the
        !          11115:  * tree, it is first removed.
        !          11116:  *
        !          11117:  * %GDOME_HIERARCHY_REQUEST_ERR: Raised if this node is of a type that does not
        !          11118:  * allow children of the type of the @newChild node, or if the node to insert is
        !          11119:  * one of this node's ancestors or this node itself.
        !          11120:  * %GDOME_WRONG_DOCUMENT_ERR: Raised if @newChild was created from a different
        !          11121:  * document than the one that created this node.
        !          11122:  * %GDOME_NOT_FOUND_ERR: Raised if @refChild is not a child of this node.
        !          11123:  * %GDOME_NO_MODIFICATION_ALLOWED_ERR: Raised when the node is readonly.
        !          11124:  * Returns: the node being inserted.
        !          11125:  */
        !          11126: GdomeNode *
        !          11127: gdome_dt_insertBefore (GdomeDocumentType *self, GdomeNode *newChild, GdomeNode *refChild, GdomeException *exc)
        !          11128: {
        !          11129:  if (self == NULL) {
        !          11130:    *exc = GDOME_NULL_POINTER_ERR;
        !          11131:    return NULL;
        !          11132:  }
        !          11133:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          11134:    *exc = GDOME_INVALID_STATE_ERR;
        !          11135:    return NULL;
        !          11136:  }
        !          11137:  *exc = 0;
        !          11138:  return ((Gdome_xml_DocumentType *)self)->vtab->super.insertBefore ((GdomeNode *)self, newChild, refChild, exc);
        !          11139: }
        !          11140: /**
        !          11141:  * gdome_dt_isSupported:
        !          11142:  * @self:  Node Object ref
        !          11143:  * @feature:  The name of the feature to test.
        !          11144:  * @version:  This is the version number of the feature to test. In Level 2,
        !          11145:  *            version 1, this is the string "2.0". If the version is not
        !          11146:  *            specified, supporting any version of the feature will cause the
        !          11147:  *            method to return %TRUE.
        !          11148:  * @exc:  Exception Object ref
        !          11149:  *
        !          11150:  * Tests whether the DOM implementation implements a specific feature and that
        !          11151:  * feature is supported by this node.
        !          11152:  * Returns: %TRUE if the specified feature is supported on this node, %FALSE
        !          11153:  * otherwise.
        !          11154:  */
        !          11155: GdomeBoolean
        !          11156: gdome_dt_isSupported (GdomeDocumentType *self, GdomeDOMString *feature, GdomeDOMString *version, GdomeException *exc)
        !          11157: {
        !          11158:  if (self == NULL) {
        !          11159:    *exc = GDOME_NULL_POINTER_ERR;
        !          11160:    return FALSE;
        !          11161:  }
        !          11162:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          11163:    *exc = GDOME_INVALID_STATE_ERR;
        !          11164:    return FALSE;
        !          11165:  }
        !          11166:  *exc = 0;
        !          11167:  return ((Gdome_xml_DocumentType *)self)->vtab->super.isSupported ((GdomeNode *)self, feature, version, exc);
        !          11168: }
        !          11169: /**
        !          11170:  * gdome_dt_normalize:
        !          11171:  * @self:  Node Object ref
        !          11172:  * @exc:  Exception Object ref
        !          11173:  *
        !          11174:  * Puts all Text nodes in the full depth of the sub-tree underneath this Node,
        !          11175:  * including attribute nodes, into a "normal" form where only structure (e.g.,
        !          11176:  * elements, comments, processing instructions, CDATA sections, and entity
        !          11177:  * references) separates Text nodes, i.e., there are neither adjacent Text
        !          11178:  * nodes nor empty Text nodes.
        !          11179:  */
        !          11180: void
        !          11181: gdome_dt_normalize (GdomeDocumentType *self, GdomeException *exc)
        !          11182: {
        !          11183:  if (self == NULL) {
        !          11184:    *exc = GDOME_NULL_POINTER_ERR;
        !          11185:    return;
        !          11186:  }
        !          11187:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          11188:    *exc = GDOME_INVALID_STATE_ERR;
        !          11189:    return;
        !          11190:  }
        !          11191:  *exc = 0;
        !          11192:  ((Gdome_xml_DocumentType *)self)->vtab->super.normalize ((GdomeNode *)self, exc);
        !          11193: }
        !          11194: /**
        !          11195:  * gdome_dt_removeChild:
        !          11196:  * @self:  Node Object ref
        !          11197:  * @oldChild:  The node being removed
        !          11198:  * @exc:  Exception Object ref
        !          11199:  *
        !          11200:  * Removes the child node indicated by @oldChild from the list of children, and
        !          11201:  * returns it.
        !          11202:  *
        !          11203:  * %GDOME_NOT_FOUND_ERR: Raised if @oldChild is not a child of this node.
        !          11204:  * %GDOME_NO_MODIFICATION_ALLOWED_ERR: Raised when the node is readonly.
        !          11205:  * Returns: the node removed.
        !          11206:  */
        !          11207: GdomeNode *
        !          11208: gdome_dt_removeChild (GdomeDocumentType *self, GdomeNode *oldChild, GdomeException *exc)
        !          11209: {
        !          11210:  if (self == NULL) {
        !          11211:    *exc = GDOME_NULL_POINTER_ERR;
        !          11212:    return NULL;
        !          11213:  }
        !          11214:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          11215:    *exc = GDOME_INVALID_STATE_ERR;
        !          11216:    return NULL;
        !          11217:  }
        !          11218:  *exc = 0;
        !          11219:  return ((Gdome_xml_DocumentType *)self)->vtab->super.removeChild ((GdomeNode *)self, oldChild, exc);
        !          11220: }
        !          11221: /**
        !          11222:  * gdome_dt_replaceChild:
        !          11223:  * @self:  Node Object ref
        !          11224:  * @newChild:  The new node to put in the child list
        !          11225:  * @oldChild:  The node being replaced in the list
        !          11226:  * @exc:  Exception Object ref
        !          11227:  *
        !          11228:  * Replaces the child node @oldChild with @newChild in the list of children,
        !          11229:  * and returns the @oldChild node. If @newChild is a DocumentFragment object,
        !          11230:  * @oldChild is replaced by all of the DocumentFragment children, which are
        !          11231:  * inserted in the same order. If the @newChild is already in the tree, it is
        !          11232:  * first removed.
        !          11233:  *
        !          11234:  * %GDOME_HIERARCHY_REQUEST_ERR: Raised if this node is of a type that does
        !          11235:  * not allow children of the type of the @newChild node, or if the node to put
        !          11236:  * in is one of this node's ancestors or this node itself.
        !          11237:  * %GDOME_WRONG_DOCUMENT_ERR: Raised if @newChild was created from a different
        !          11238:  * document than the one that created this node.
        !          11239:  * %GDOME_NOT_FOUND_ERR: Raised if @oldChild is not a child of this node.
        !          11240:  * %GDOME_NO_MODIFICATION_ALLOWED_ERR: Raised when the node is readonly.
        !          11241:  * Returns: the node replaced.
        !          11242:  */
        !          11243: GdomeNode *
        !          11244: gdome_dt_replaceChild (GdomeDocumentType *self, GdomeNode *newChild, GdomeNode *oldChild, GdomeException *exc)
        !          11245: {
        !          11246:  if (self == NULL) {
        !          11247:    *exc = GDOME_NULL_POINTER_ERR;
        !          11248:    return NULL;
        !          11249:  }
        !          11250:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          11251:    *exc = GDOME_INVALID_STATE_ERR;
        !          11252:    return NULL;
        !          11253:  }
        !          11254:  *exc = 0;
        !          11255:  return ((Gdome_xml_DocumentType *)self)->vtab->super.replaceChild ((GdomeNode *)self, newChild, oldChild, exc);
        !          11256: }
        !          11257: /**
        !          11258:  * gdome_dt_addEventListener:
        !          11259:  * @self:  Node Object ref
        !          11260:  * @type:  the event type for which the user is registering
        !          11261:  * @listener:  the listener parameter takes an interface implemented by the
        !          11262:  *             user which contains the methods to be called when the event occurs.
        !          11263:  * @useCapture:  if %TRUE, useCapture indicates that the user wishes to initiate
        !          11264:  *               capture. After initiating capture, all events of the specified
        !          11265:  *               type will be dispatched to the registered EventListener before
        !          11266:  *               being dispatched to any EventTargets beneath them in the tree.
        !          11267:  *               Events which are bubbling upward through the tree will not
        !          11268:  *               trigger an EventListener designated to use capture.
        !          11269:  * @exc:  Exception Object ref
        !          11270:  *
        !          11271:  * This method allows the registration of event listeners on the event target.
        !          11272:  * If an EventListener is added to an EventTarget while it is processing an
        !          11273:  * event, it will not be triggered by the current actions but may be triggered
        !          11274:  * during a later stage of event flow, such as the bubbling phase.
        !          11275:  * If multiple identical EventListeners are registered on the same EventTarget
        !          11276:  * with the same parameters the duplicate instances are discarded. They do not
        !          11277:  * cause the EventListener to be called twice and since they are discarded
        !          11278:  * they do not need to be removed with the removeEventListener method.
        !          11279:  */
        !          11280: void
        !          11281: gdome_dt_addEventListener (GdomeDocumentType *self, GdomeDOMString *type, GdomeEventListener *listener, GdomeBoolean useCapture, GdomeException *exc)
        !          11282: {
        !          11283:  if (self == NULL) {
        !          11284:    *exc = GDOME_NULL_POINTER_ERR;
        !          11285:    return;
        !          11286:  }
        !          11287:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          11288:    *exc = GDOME_INVALID_STATE_ERR;
        !          11289:    return;
        !          11290:  }
        !          11291:  *exc = 0;
        !          11292:  ((Gdome_xml_DocumentType *)self)->vtab->super.addEventListener ((GdomeNode *)self, type, listener, useCapture, exc);
        !          11293: }
        !          11294: /**
        !          11295:  * gdome_dt_removeEventListener:
        !          11296:  * @self:  Node Object ref
        !          11297:  * @type:  Specifies the event type of the EventListener being removed.
        !          11298:  * @listener:  The EventListener parameter indicates the EventListener to be
        !          11299:  *             removed.
        !          11300:  * @useCapture:  Specifies whether the EventListener being removed was
        !          11301:  *               registered as a capturing listener or not. If a listener was
        !          11302:  *               registered twice, one with capture and one without, each must
        !          11303:  *               be removed separately. Removal of a capturing listener does
        !          11304:  *               not affect a non-capturing version of the same listener, and
        !          11305:  *               vice versa.
        !          11306:  * @exc:  Exception Object ref
        !          11307:  *
        !          11308:  * This method allows the removal of event listeners from the event target. If
        !          11309:  * an EventListener is removed from an EventTarget while it is processing an
        !          11310:  * event, it will not be triggered by the current actions. EventListeners can
        !          11311:  * never be invoked after being removed. Calling removeEventListener with
        !          11312:  * arguments which do not identify any currently registered EventListener on
        !          11313:  * the EventTarget has no effect.
        !          11314:  */
        !          11315: void
        !          11316: gdome_dt_removeEventListener (GdomeDocumentType *self, GdomeDOMString *type, GdomeEventListener *listener, GdomeBoolean useCapture, GdomeException *exc)
        !          11317: {
        !          11318:  if (self == NULL) {
        !          11319:    *exc = GDOME_NULL_POINTER_ERR;
        !          11320:    return;
        !          11321:  }
        !          11322:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          11323:    *exc = GDOME_INVALID_STATE_ERR;
        !          11324:    return;
        !          11325:  }
        !          11326:  *exc = 0;
        !          11327:  ((Gdome_xml_DocumentType *)self)->vtab->super.removeEventListener ((GdomeNode *)self, type, listener, useCapture, exc);
        !          11328: }
        !          11329: /**
        !          11330:  * gdome_dt_dispatchEvent:
        !          11331:  * @self:  Node Object ref
        !          11332:  * @evt:  Specifies the event type, behavior, and contextual information to be
        !          11333:  *        used in processing the event.
        !          11334:  * @exc:  Exception Object ref
        !          11335:  *
        !          11336:  * This method allows the dispatch of events into the implementations event
        !          11337:  * model. Events dispatched in this manner will have the same capturing and
        !          11338:  * bubbling behavior as events dispatched directly by the implementation. The
        !          11339:  * target of the event is the EventTarget on which dispatchEvent is called.
        !          11340:  *
        !          11341:  * GDOME_UNSPECIFIED_EVENT_TYPE_ERR: Raised if the Event's type was not
        !          11342:  * specified by initializing the event before dispatchEvent was called.
        !          11343:  * Specification of the Event's type as %NULL or an empty string will also
        !          11344:  * trigger this exception.
        !          11345:  * Returns: if preventDefault was called the value is %FALSE, else the value
        !          11346:  *          is %TRUE.
        !          11347:  */
        !          11348: GdomeBoolean
        !          11349: gdome_dt_dispatchEvent (GdomeDocumentType *self, GdomeEvent *evt, GdomeException *exc)
        !          11350: {
        !          11351:  if (self == NULL) {
        !          11352:    *exc = GDOME_NULL_POINTER_ERR;
        !          11353:    return FALSE;
        !          11354:  }
        !          11355:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          11356:    *exc = GDOME_INVALID_STATE_ERR;
        !          11357:    return FALSE;
        !          11358:  }
        !          11359:  *exc = 0;
        !          11360:  return ((Gdome_xml_DocumentType *)self)->vtab->super.dispatchEvent ((GdomeNode *)self, evt, exc);
        !          11361: }
        !          11362: /**
        !          11363:  * gdome_dt_subTreeDispatchEvent:
        !          11364:  * @self:  Node Object ref
        !          11365:  * @evt:  Specifies the event type, behavior, and contextual information to be
        !          11366:  *        used in processing the event.
        !          11367:  * @exc:  Exception Object ref
        !          11368:  *
        !          11369:  * This method allows the dispatch of events into the implementations event
        !          11370:  * model. Events dispatched in this manner will have the same capturing and
        !          11371:  * bubbling behavior as events dispatched directly by the implementation. The
        !          11372:  * target of the event is any nodes in the subtree of the EventTarget on which
        !          11373:  * dispatchEvent is called.
        !          11374:  *
        !          11375:  * GDOME_UNSPECIFIED_EVENT_TYPE_ERR: Raised if the Event's type was not
        !          11376:  * specified by initializing the event before dispatchEvent was called.
        !          11377:  * Specification of the Event's type as %NULL or an empty string will also
        !          11378:  * trigger this exception.
        !          11379:  */
        !          11380: void
        !          11381: gdome_dt_subTreeDispatchEvent (GdomeDocumentType *self, GdomeEvent *evt, GdomeException *exc)
        !          11382: {
        !          11383:  if (self == NULL) {
        !          11384:    *exc = GDOME_NULL_POINTER_ERR;
        !          11385:    return;
        !          11386:  }
        !          11387:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          11388:    *exc = GDOME_INVALID_STATE_ERR;
        !          11389:    return;
        !          11390:  }
        !          11391:  *exc = 0;
        !          11392:  ((Gdome_xml_DocumentType *)self)->vtab->super.subTreeDispatchEvent ((GdomeNode *)self, evt, exc);
        !          11393: }
        !          11394: /**
        !          11395:  * gdome_dt_canAppend:
        !          11396:  * @self:  Node Object ref
        !          11397:  * @newChild:  The Node Object ref of the node to test
        !          11398:  * @exc:  Exception Object ref
        !          11399:  *
        !          11400:  * Tests if a @newChild can be added in the child list of this node.
        !          11401:  * Returns: %TRUE if @newChild can be added, %FALSE otherwise.
        !          11402:  */
        !          11403: GdomeBoolean
        !          11404: gdome_dt_canAppend (GdomeDocumentType *self, GdomeNode *newChild, GdomeException *exc)
        !          11405: {
        !          11406:  if (self == NULL) {
        !          11407:    *exc = GDOME_NULL_POINTER_ERR;
        !          11408:    return FALSE;
        !          11409:  }
        !          11410:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          11411:    *exc = GDOME_INVALID_STATE_ERR;
        !          11412:    return FALSE;
        !          11413:  }
        !          11414:  *exc = 0;
        !          11415:  return ((Gdome_xml_DocumentType *)self)->vtab->super.canAppend ((GdomeNode *)self, newChild, exc);
        !          11416: }
        !          11417: 
        !          11418: /******************************************************************************
        !          11419:           GdomeNotation interface API
        !          11420:  ******************************************************************************/
        !          11421: /**
        !          11422:  * gdome_not_publicId:
        !          11423:  * @self:  Notations Object ref
        !          11424:  * @exc:   Exception Object ref
        !          11425:  *
        !          11426:  * Returns: the public identifier of this notation. If the public identifier
        !          11427:  * was not specified, this is NULL.
        !          11428:  */
        !          11429: GdomeDOMString *
        !          11430: gdome_not_publicId (GdomeNotation *self, GdomeException *exc)
        !          11431: {
        !          11432:  if (self == NULL) {
        !          11433:    *exc = GDOME_NULL_POINTER_ERR;
        !          11434:    return NULL;
        !          11435:  }
        !          11436:  if (((Gdome_xml_Notation *)self)->n == NULL) {
        !          11437:    *exc = GDOME_INVALID_STATE_ERR;
        !          11438:    return NULL;
        !          11439:  }
        !          11440:  *exc = 0;
        !          11441:  return ((Gdome_xml_Notation *)self)->vtab->publicId (self, exc);
        !          11442: }
        !          11443: /**
        !          11444:  * gdome_not_systemId:
        !          11445:  * @self:  Notations Object ref
        !          11446:  * @exc:   Exception Object ref
        !          11447:  *
        !          11448:  * Returns: the system identifier of this notation. If the system identifier
        !          11449:  * was not specified, this is NULL.
        !          11450:  */
        !          11451: GdomeDOMString *
        !          11452: gdome_not_systemId (GdomeNotation *self, GdomeException *exc)
        !          11453: {
        !          11454:  if (self == NULL) {
        !          11455:    *exc = GDOME_NULL_POINTER_ERR;
        !          11456:    return NULL;
        !          11457:  }
        !          11458:  if (((Gdome_xml_Notation *)self)->n == NULL) {
        !          11459:    *exc = GDOME_INVALID_STATE_ERR;
        !          11460:    return NULL;
        !          11461:  }
        !          11462:  *exc = 0;
        !          11463:  return ((Gdome_xml_Notation *)self)->vtab->systemId (self, exc);
        !          11464: }
        !          11465: /**
        !          11466:  * gdome_not_attributes:
        !          11467:  * @self:  Node Object ref
        !          11468:  * @exc:  Exception Object ref
        !          11469:  *
        !          11470:  * Returns: a NamedNodeMap containing the attributes of this node (if it is an
        !          11471:  * Element) or %NULL otherwise.
        !          11472:  */
        !          11473: GdomeNamedNodeMap *
        !          11474: gdome_not_attributes (GdomeNotation *self, GdomeException *exc)
        !          11475: {
        !          11476:  if (self == NULL) {
        !          11477:    *exc = GDOME_NULL_POINTER_ERR;
        !          11478:    return NULL;
        !          11479:  }
        !          11480:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          11481:    *exc = GDOME_INVALID_STATE_ERR;
        !          11482:    return NULL;
        !          11483:  }
        !          11484:  *exc = 0;
        !          11485:  return ((Gdome_xml_Notation *)self)->vtab->super.attributes ((GdomeNode *)self, exc);
        !          11486: }
        !          11487: /**
        !          11488:  * gdome_not_childNodes:
        !          11489:  * @self:  Node Object ref
        !          11490:  * @exc:  Exception Object ref
        !          11491:  *
        !          11492:  * Returns: a NodeList that contains all children of this node. If there are no
        !          11493:  * children, this is a NodeList containing no nodes.  Note that attributes are
        !          11494:  * not considered to be children of element nodes - use gdome_n_attributes to
        !          11495:  * obtain the attributes.
        !          11496:  */
        !          11497: GdomeNodeList *
        !          11498: gdome_not_childNodes (GdomeNotation *self, GdomeException *exc)
        !          11499: {
        !          11500:  if (self == NULL) {
        !          11501:    *exc = GDOME_NULL_POINTER_ERR;
        !          11502:    return NULL;
        !          11503:  }
        !          11504:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          11505:    *exc = GDOME_INVALID_STATE_ERR;
        !          11506:    return NULL;
        !          11507:  }
        !          11508:  *exc = 0;
        !          11509:  return ((Gdome_xml_Notation *)self)->vtab->super.childNodes ((GdomeNode *)self, exc);
        !          11510: }
        !          11511: /**
        !          11512:  * gdome_not_firstChild:
        !          11513:  * @self:  Node Object ref
        !          11514:  * @exc:  Exception Object ref
        !          11515:  * 
        !          11516:  * Returns: the first child of this node. If there is no such node,
        !          11517:  * this returns %NULL.
        !          11518:  */
        !          11519: GdomeNode *
        !          11520: gdome_not_firstChild (GdomeNotation *self, GdomeException *exc)
        !          11521: {
        !          11522:  if (self == NULL) {
        !          11523:    *exc = GDOME_NULL_POINTER_ERR;
        !          11524:    return NULL;
        !          11525:  }
        !          11526:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          11527:    *exc = GDOME_INVALID_STATE_ERR;
        !          11528:    return NULL;
        !          11529:  }
        !          11530:  *exc = 0;
        !          11531:  return ((Gdome_xml_Notation *)self)->vtab->super.firstChild ((GdomeNode *)self, exc);
        !          11532: }
        !          11533: /**
        !          11534:  * gdome_not_lastChild:
        !          11535:  * @self:  Node Object ref
        !          11536:  * @exc:  Exception Object ref
        !          11537:  *
        !          11538:  * Returns: the last child of this node. If there is no such node,
        !          11539:  * this returns %NULL.
        !          11540:  */
        !          11541: GdomeNode *
        !          11542: gdome_not_lastChild (GdomeNotation *self, GdomeException *exc)
        !          11543: {
        !          11544:  if (self == NULL) {
        !          11545:    *exc = GDOME_NULL_POINTER_ERR;
        !          11546:    return NULL;
        !          11547:  }
        !          11548:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          11549:    *exc = GDOME_INVALID_STATE_ERR;
        !          11550:    return NULL;
        !          11551:  }
        !          11552:  *exc = 0;
        !          11553:  return ((Gdome_xml_Notation *)self)->vtab->super.lastChild ((GdomeNode *)self, exc);
        !          11554: }
        !          11555: /**
        !          11556:  * gdome_not_localName:
        !          11557:  * @self:  Node Objects ref
        !          11558:  * @exc:  Exception Object ref
        !          11559:  *
        !          11560:  * Returns: the local part of the qualified name of this node.
        !          11561:  * For nodes of any type other than %GDOME_ELEMENT_NODE and
        !          11562:  * %GDOME_ATTRIBUTE_NODE and nodes created with a DOM Level 1 method, this is
        !          11563:  * always %NULL.
        !          11564:  */
        !          11565: GdomeDOMString *
        !          11566: gdome_not_localName (GdomeNotation *self, GdomeException *exc)
        !          11567: {
        !          11568:  if (self == NULL) {
        !          11569:    *exc = GDOME_NULL_POINTER_ERR;
        !          11570:    return NULL;
        !          11571:  }
        !          11572:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          11573:    *exc = GDOME_INVALID_STATE_ERR;
        !          11574:    return NULL;
        !          11575:  }
        !          11576:  *exc = 0;
        !          11577:  return ((Gdome_xml_Notation *)self)->vtab->super.localName ((GdomeNode *)self, exc);
        !          11578: }
        !          11579: /**
        !          11580:  * gdome_not_namespaceURI:
        !          11581:  * @self:  Node Objects ref
        !          11582:  * @exc:  Exception Object ref
        !          11583:  *
        !          11584:  * Returns: the namespace URI of this node, or %NULL if it is unspecified.
        !          11585:  * For nodes of any type other than %GDOME_ELEMENT_NODE and
        !          11586:  * %GDOME_ATTRIBUTE_NODE and nodes created with a DOM Level 1 method, this is
        !          11587:  * always %NULL.
        !          11588:  */
        !          11589: GdomeDOMString *
        !          11590: gdome_not_namespaceURI (GdomeNotation *self, GdomeException *exc)
        !          11591: {
        !          11592:  if (self == NULL) {
        !          11593:    *exc = GDOME_NULL_POINTER_ERR;
        !          11594:    return NULL;
        !          11595:  }
        !          11596:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          11597:    *exc = GDOME_INVALID_STATE_ERR;
        !          11598:    return NULL;
        !          11599:  }
        !          11600:  *exc = 0;
        !          11601:  return ((Gdome_xml_Notation *)self)->vtab->super.namespaceURI ((GdomeNode *)self, exc);
        !          11602: }
        !          11603: /**
        !          11604:  * gdome_not_nextSibling:
        !          11605:  * @self:  Node Object ref
        !          11606:  * @exc:  Exception Object ref
        !          11607:  *
        !          11608:  * Returns: the node immediately following this node. If there is no such
        !          11609:  * node, this returns %NULL.
        !          11610:  */
        !          11611: GdomeNode *
        !          11612: gdome_not_nextSibling (GdomeNotation *self, GdomeException *exc)
        !          11613: {
        !          11614:  if (self == NULL) {
        !          11615:    *exc = GDOME_NULL_POINTER_ERR;
        !          11616:    return NULL;
        !          11617:  }
        !          11618:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          11619:    *exc = GDOME_INVALID_STATE_ERR;
        !          11620:    return NULL;
        !          11621:  }
        !          11622:  *exc = 0;
        !          11623:  return ((Gdome_xml_Notation *)self)->vtab->super.nextSibling ((GdomeNode *)self, exc);
        !          11624: }
        !          11625: /**
        !          11626:  * gdome_not_nodeName:
        !          11627:  * @self:  Node Object ref
        !          11628:  * @exc:  Exception Object ref
        !          11629:  *
        !          11630:  * Returns: the name of this node, depending on its type.
        !          11631:  */
        !          11632: GdomeDOMString *
        !          11633: gdome_not_nodeName (GdomeNotation *self, GdomeException *exc)
        !          11634: {
        !          11635:  if (self == NULL) {
        !          11636:    *exc = GDOME_NULL_POINTER_ERR;
        !          11637:    return NULL;
        !          11638:  }
        !          11639:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          11640:    *exc = GDOME_INVALID_STATE_ERR;
        !          11641:    return NULL;
        !          11642:  }
        !          11643:  *exc = 0;
        !          11644:  return ((Gdome_xml_Notation *)self)->vtab->super.nodeName ((GdomeNode *)self, exc);
        !          11645: }
        !          11646: /**
        !          11647:  * gdome_not_nodeType:
        !          11648:  * @self:  Node Object ref
        !          11649:  * @exc:  Exception Object ref
        !          11650:  *
        !          11651:  * Returns: an integer bigger than %0 representing the type of the underlying
        !          11652:  * object or %0 on error.
        !          11653:  */
        !          11654: unsigned short
        !          11655: gdome_not_nodeType (GdomeNotation *self, GdomeException *exc)
        !          11656: {
        !          11657:  if (self == NULL) {
        !          11658:    *exc = GDOME_NULL_POINTER_ERR;
        !          11659:    return 0;
        !          11660:  }
        !          11661:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          11662:    *exc = GDOME_INVALID_STATE_ERR;
        !          11663:    return 0;
        !          11664:  }
        !          11665:  *exc = 0;
        !          11666:  return ((Gdome_xml_Notation *)self)->vtab->super.nodeType ((GdomeNode *)self, exc);
        !          11667: }
        !          11668: /**
        !          11669:  * gdome_not_nodeValue:
        !          11670:  * @self:  Node Object ref
        !          11671:  * @exc:  Exception Object ref
        !          11672:  *
        !          11673:  * Returns: the value of this node, depending on its type.
        !          11674:  */
        !          11675: GdomeDOMString *
        !          11676: gdome_not_nodeValue (GdomeNotation *self, GdomeException *exc)
        !          11677: {
        !          11678:  if (self == NULL) {
        !          11679:    *exc = GDOME_NULL_POINTER_ERR;
        !          11680:    return NULL;
        !          11681:  }
        !          11682:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          11683:    *exc = GDOME_INVALID_STATE_ERR;
        !          11684:    return NULL;
        !          11685:  }
        !          11686:  *exc = 0;
        !          11687:  return ((Gdome_xml_Notation *)self)->vtab->super.nodeValue ((GdomeNode *)self, exc);
        !          11688: }
        !          11689: /**
        !          11690:  * gdome_not_set_nodeValue:
        !          11691:  * @self:  Node Object ref
        !          11692:  * @nodeValue:  The new value for this node.
        !          11693:  * @exc:  Exception Object ref
        !          11694:  *
        !          11695:  * Sets The value of this node, depending on its type.
        !          11696:  *
        !          11697:  * %GDOME_NO_MODIFICATION_ALLOWED_ERR: Raised when the node is readonly.
        !          11698:  */
        !          11699: void
        !          11700: gdome_not_set_nodeValue (GdomeNotation *self, GdomeDOMString *nodeValue, GdomeException *exc)
        !          11701: {
        !          11702:  if (self == NULL) {
        !          11703:    *exc = GDOME_NULL_POINTER_ERR;
        !          11704:    return;
        !          11705:  }
        !          11706:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          11707:    *exc = GDOME_INVALID_STATE_ERR;
        !          11708:    return;
        !          11709:  }
        !          11710:  *exc = 0;
        !          11711:  ((Gdome_xml_Notation *)self)->vtab->super.set_nodeValue ((GdomeNode *)self, nodeValue, exc);
        !          11712: }
        !          11713: /**
        !          11714:  * gdome_not_ownerDocument:
        !          11715:  * @self:  Node Objects ref
        !          11716:  * @exc:  Exception Object ref
        !          11717:  *
        !          11718:  * Returns: the documment object associated with this node. This is also the
        !          11719:  * Document object used to create new nodes. When this node is a Document or a
        !          11720:  * DocumentType which is not used with any Document yet, this is %NULL.
        !          11721:  */
        !          11722: GdomeDocument *
        !          11723: gdome_not_ownerDocument (GdomeNotation *self, GdomeException *exc)
        !          11724: {
        !          11725:  if (self == NULL) {
        !          11726:    *exc = GDOME_NULL_POINTER_ERR;
        !          11727:    return NULL;
        !          11728:  }
        !          11729:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          11730:    *exc = GDOME_INVALID_STATE_ERR;
        !          11731:    return NULL;
        !          11732:  }
        !          11733:  *exc = 0;
        !          11734:  return ((Gdome_xml_Notation *)self)->vtab->super.ownerDocument ((GdomeNode *)self, exc);
        !          11735: }
        !          11736: /**
        !          11737:  * gdome_not_parentNode:
        !          11738:  * @self: Node Object ref
        !          11739:  * @exc: Exception Object ref
        !          11740:  *
        !          11741:  * Returns: the parent of this node. All nodes, except Attr,
        !          11742:  * Document, DocumentFragment, Entity, and Notation may have a parent. However,
        !          11743:  * if a node has just been created and not yet added to the tree, or if it has
        !          11744:  * been removed from the tree, this is %NULL.
        !          11745:  */
        !          11746: GdomeNode *
        !          11747: gdome_not_parentNode (GdomeNotation *self, GdomeException *exc)
        !          11748: {
        !          11749:  if (self == NULL) {
        !          11750:    *exc = GDOME_NULL_POINTER_ERR;
        !          11751:    return NULL;
        !          11752:  }
        !          11753:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          11754:    *exc = GDOME_INVALID_STATE_ERR;
        !          11755:    return NULL;
        !          11756:  }
        !          11757:  *exc = 0;
        !          11758:  return ((Gdome_xml_Notation *)self)->vtab->super.parentNode ((GdomeNode *)self, exc);
        !          11759: }
        !          11760: /**
        !          11761:  * gdome_not_prefix:
        !          11762:  * @self:  Node Objects ref
        !          11763:  * @exc:  Exception Object ref
        !          11764:  *
        !          11765:  * Returns: the namespace prefix of this node, or %NULL if it is unspecified.
        !          11766:  * For nodes of any type other than %GDOME_ELEMENT_NODE and
        !          11767:  * %GDOME_ATTRIBUTE_NODE and nodes created with a DOM Level 1 method, this is
        !          11768:  * always %NULL.
        !          11769:  */
        !          11770: GdomeDOMString *
        !          11771: gdome_not_prefix (GdomeNotation *self, GdomeException *exc)
        !          11772: {
        !          11773:  if (self == NULL) {
        !          11774:    *exc = GDOME_NULL_POINTER_ERR;
        !          11775:    return NULL;
        !          11776:  }
        !          11777:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          11778:    *exc = GDOME_INVALID_STATE_ERR;
        !          11779:    return NULL;
        !          11780:  }
        !          11781:  *exc = 0;
        !          11782:  return ((Gdome_xml_Notation *)self)->vtab->super.prefix ((GdomeNode *)self, exc);
        !          11783: }
        !          11784: /**
        !          11785:  * gdome_not_set_prefix:
        !          11786:  * @self:  Node Object ref
        !          11787:  * @prefix:  The new prefix for this node.
        !          11788:  * @exc:  Exception Object ref
        !          11789:  *
        !          11790:  * Sets a new nemaspace prefix for this node.
        !          11791:  *
        !          11792:  * %GDOME_NO_MODIFICATION_ALLOWED_ERR: Raised when the node is readonly.
        !          11793:  * %GDOME_NAMESPACE_ERR: Raised if the specified @prefix is malformed per the
        !          11794:  * Namespaces in XML specification, if the namespaceURI of this node is %NULL,
        !          11795:  * if the specified prefix is "xml" and the namespaceURI of this node is
        !          11796:  * different from "http://www.w3.org/XML/1998/namespace", if this node is an
        !          11797:  * attribute and the specified prefix is "xmlns" and the namespaceURI of this
        !          11798:  * node is different from "http://www.w3.org/2000/xmlns/", or if this node is
        !          11799:  * an attribute and the qualifiedName of this node is "xmlns".
        !          11800:  */
        !          11801: void
        !          11802: gdome_not_set_prefix (GdomeNotation *self, GdomeDOMString *prefix, GdomeException *exc)
        !          11803: {
        !          11804:  if (self == NULL) {
        !          11805:    *exc = GDOME_NULL_POINTER_ERR;
        !          11806:    return;
        !          11807:  }
        !          11808:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          11809:    *exc = GDOME_INVALID_STATE_ERR;
        !          11810:    return;
        !          11811:  }
        !          11812:  *exc = 0;
        !          11813:  ((Gdome_xml_Notation *)self)->vtab->super.set_prefix ((GdomeNode *)self, prefix, exc);
        !          11814: }
        !          11815: /**
        !          11816:  * gdome_not_previousSibling:
        !          11817:  * @self:  Node Object ref
        !          11818:  * @exc:  Exception Object ref
        !          11819:  *
        !          11820:  * Returns: the node immediately preceding this node. If there is no such
        !          11821:  * node, this returns %NULL.
        !          11822:  */
        !          11823: GdomeNode *
        !          11824: gdome_not_previousSibling (GdomeNotation *self, GdomeException *exc)
        !          11825: {
        !          11826:  if (self == NULL) {
        !          11827:    *exc = GDOME_NULL_POINTER_ERR;
        !          11828:    return NULL;
        !          11829:  }
        !          11830:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          11831:    *exc = GDOME_INVALID_STATE_ERR;
        !          11832:    return NULL;
        !          11833:  }
        !          11834:  *exc = 0;
        !          11835:  return ((Gdome_xml_Notation *)self)->vtab->super.previousSibling ((GdomeNode *)self, exc);
        !          11836: }
        !          11837: /**
        !          11838:  * gdome_not_ref:
        !          11839:  * @self:  Node Object ref
        !          11840:  * @exc:  Exception Object ref
        !          11841:  *
        !          11842:  * Increase the reference count of the specified Node.
        !          11843:  */
        !          11844: void
        !          11845: gdome_not_ref (GdomeNotation *self, GdomeException *exc)
        !          11846: {
        !          11847:  if (self == NULL) {
        !          11848:    *exc = GDOME_NULL_POINTER_ERR;
        !          11849:    return;
        !          11850:  }
        !          11851:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          11852:    *exc = GDOME_INVALID_STATE_ERR;
        !          11853:    return;
        !          11854:  }
        !          11855:  *exc = 0;
        !          11856:  ((Gdome_xml_Notation *)self)->vtab->super.ref ((GdomeNode *)self, exc);
        !          11857: }
        !          11858: /**
        !          11859:  * gdome_not_unref:
        !          11860:  * @self:  Node Object ref
        !          11861:  * @exc:  Exception Object ref
        !          11862:  *
        !          11863:  * Decrease the reference count of the specified Node. Free the Node structure
        !          11864:  * if the Node will have zero reference.
        !          11865:  */
        !          11866: void
        !          11867: gdome_not_unref (GdomeNotation *self, GdomeException *exc)
        !          11868: {
        !          11869:  if (self == NULL) {
        !          11870:    *exc = GDOME_NULL_POINTER_ERR;
        !          11871:    return;
        !          11872:  }
        !          11873:  *exc = 0;
        !          11874:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          11875:    if (((Gdome_xml_Node *)self)->refcnt > 0)
        !          11876:      ((Gdome_xml_Node *)self)->refcnt--;
        !          11877: 
        !          11878:    if (((Gdome_xml_Node *)self)->refcnt == 0 && ((Gdome_xml_Node *)self)->ll == NULL) {
        !          11879: #ifdef DEBUG_REFCNT
        !          11880:      gdome_refdbg_delRef ((void *)self, GDOME_REFDBG_NODE);
        !          11881: #endif
        !          11882:      g_free (self);
        !          11883:    }
        !          11884:    return;
        !          11885:  }
        !          11886:  ((Gdome_xml_Notation *)self)->vtab->super.unref ((GdomeNode *)self, exc);
        !          11887: }
        !          11888: /**
        !          11889:  * gdome_not_query_interface:
        !          11890:  * @self:  Node Object ref
        !          11891:  * @interface:  interface needed
        !          11892:  * @exc:  Exception Object ref
        !          11893:  *
        !          11894:  * Returns: a reference to this object that implements the @interface needed,
        !          11895:  *          or %NULL if the @interface is not supported by this Object.
        !          11896:  */
        !          11897: gpointer
        !          11898: gdome_not_query_interface (GdomeNotation *self, const char *interface, GdomeException *exc)
        !          11899: {
        !          11900:  if (self == NULL) {
        !          11901:    *exc = GDOME_NULL_POINTER_ERR;
        !          11902:    return NULL;
        !          11903:  }
        !          11904:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          11905:    *exc = GDOME_INVALID_STATE_ERR;
        !          11906:    return NULL;
        !          11907:  }
        !          11908:  *exc = 0;
        !          11909:  return ((Gdome_xml_Notation *)self)->vtab->super.query_interface ((GdomeNode *)self, interface, exc);
        !          11910: }
        !          11911: /**
        !          11912:  * gdome_not_appendChild:
        !          11913:  * @self:  Node Object ref
        !          11914:  * @newChild:  The node to add
        !          11915:  * @exc:  Exception Object ref
        !          11916:  *
        !          11917:  * Adds the node @newChild to the end of the list of children of this node.
        !          11918:  * If the @newChild is already in the tree, it is first removed. If it is a
        !          11919:  * DocumentFragment node, the entire contents of the document fragment are
        !          11920:  * moved into the child list of this node
        !          11921:  *
        !          11922:  * %GDOME_HIERARCHY_REQUEST_ERR: Raised if this node is of a type that does not
        !          11923:  * allow children of the type of the @newChild node, or if the node to append is
        !          11924:  * one of this node's ancestors or this node itself.
        !          11925:  * %GDOME_WRONG_DOCUMENT_ERR: Raised if @newChild was created from a different
        !          11926:  * document than the one that created this node.
        !          11927:  * %GDOME_NO_MODIFICATION_ALLOWED_ERR: Raised when the node is readonly.
        !          11928:  * Returns: the node added.
        !          11929:  */
        !          11930: GdomeNode *
        !          11931: gdome_not_appendChild (GdomeNotation *self, GdomeNode *newChild, GdomeException *exc)
        !          11932: {
        !          11933:  if (self == NULL) {
        !          11934:    *exc = GDOME_NULL_POINTER_ERR;
        !          11935:    return NULL;
        !          11936:  }
        !          11937:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          11938:    *exc = GDOME_INVALID_STATE_ERR;
        !          11939:    return NULL;
        !          11940:  }
        !          11941:  *exc = 0;
        !          11942:  return ((Gdome_xml_Notation *)self)->vtab->super.appendChild ((GdomeNode *)self, newChild, exc);
        !          11943: }
        !          11944: /**
        !          11945:  * gdome_not_cloneNode:
        !          11946:  * @self:  Node Object ref
        !          11947:  * @deep:  If true, recursively clone the subtree under the specified node;
        !          11948:  *         if false, clone only the node itself (and its attributes, if it is
        !          11949:  *         an Element).
        !          11950:  * @exc:  Exception Object ref
        !          11951:  *
        !          11952:  * Makes a duplicate of this node, i.e., serves as a generic copy
        !          11953:  * constructor for nodes. The duplicate node has no parent; (parentNode is
        !          11954:  * %NULL).
        !          11955:  * %GDOME_DOCUMENT_TYPE_NODE, %GDOME_NOTATION_NODE and %GDOME_ENTITY_NODE
        !          11956:  * nodes are not supported.
        !          11957:  *
        !          11958:  * %GDOME_NOT_SUPPORTED_ERR: Raised if the type of node being cloned is not
        !          11959:  * supported.
        !          11960:  * Returns: the duplicate node.
        !          11961:  */
        !          11962: GdomeNode *
        !          11963: gdome_not_cloneNode (GdomeNotation *self, GdomeBoolean deep, GdomeException *exc)
        !          11964: {
        !          11965:  if (self == NULL) {
        !          11966:    *exc = GDOME_NULL_POINTER_ERR;
        !          11967:    return NULL;
        !          11968:  }
        !          11969:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          11970:    *exc = GDOME_INVALID_STATE_ERR;
        !          11971:    return NULL;
        !          11972:  }
        !          11973:  *exc = 0;
        !          11974:  return ((Gdome_xml_Notation *)self)->vtab->super.cloneNode ((GdomeNode *)self, deep, exc);
        !          11975: }
        !          11976: /**
        !          11977:  * gdome_not_hasAttributes:
        !          11978:  * @self:  Node Object ref
        !          11979:  * @exc:  Exception Object ref
        !          11980:  *
        !          11981:  * Returns: %TRUE if this node has any attributes, %FALSE otherwise.
        !          11982:  */
        !          11983: GdomeBoolean
        !          11984: gdome_not_hasAttributes (GdomeNotation *self, GdomeException *exc)
        !          11985: {
        !          11986:  if (self == NULL) {
        !          11987:    *exc = GDOME_NULL_POINTER_ERR;
        !          11988:    return FALSE;
        !          11989:  }
        !          11990:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          11991:    *exc = GDOME_INVALID_STATE_ERR;
        !          11992:    return FALSE;
        !          11993:  }
        !          11994:  *exc = 0;
        !          11995:  return ((Gdome_xml_Notation *)self)->vtab->super.hasAttributes ((GdomeNode *)self, exc);
        !          11996: }
        !          11997: /**
        !          11998:  * gdome_not_hasChildNodes:
        !          11999:  * @self:  Node Object ref
        !          12000:  * @exc:  Exception Object ref
        !          12001:  *
        !          12002:  * Returns: %TRUE if this node has any children, %FALSE otherwise.
        !          12003:  */
        !          12004: GdomeBoolean
        !          12005: gdome_not_hasChildNodes (GdomeNotation *self, GdomeException *exc)
        !          12006: {
        !          12007:  if (self == NULL) {
        !          12008:    *exc = GDOME_NULL_POINTER_ERR;
        !          12009:    return FALSE;
        !          12010:  }
        !          12011:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          12012:    *exc = GDOME_INVALID_STATE_ERR;
        !          12013:    return FALSE;
        !          12014:  }
        !          12015:  *exc = 0;
        !          12016:  return ((Gdome_xml_Notation *)self)->vtab->super.hasChildNodes ((GdomeNode *)self, exc);
        !          12017: }
        !          12018: /**
        !          12019:  * gdome_not_insertBefore:
        !          12020:  * @self:  Node Object ref
        !          12021:  * @newChild:  The new node to put in the child list
        !          12022:  * @refChild:  the reference node, i.e., the node before which the new node
        !          12023:  *             must be inserted.
        !          12024:  * @exc:  Exception Object ref
        !          12025:  *
        !          12026:  * Inserts the node @newChild before the existing child node @refChild. If
        !          12027:  * @refChild is %NULL, insert @newChild at the end of the list of children.
        !          12028:  * If @newChild is a DocumentFragment node, all of its children are inserted,
        !          12029:  * in the same order, before @refChild. If the @newChild is already in the
        !          12030:  * tree, it is first removed.
        !          12031:  *
        !          12032:  * %GDOME_HIERARCHY_REQUEST_ERR: Raised if this node is of a type that does not
        !          12033:  * allow children of the type of the @newChild node, or if the node to insert is
        !          12034:  * one of this node's ancestors or this node itself.
        !          12035:  * %GDOME_WRONG_DOCUMENT_ERR: Raised if @newChild was created from a different
        !          12036:  * document than the one that created this node.
        !          12037:  * %GDOME_NOT_FOUND_ERR: Raised if @refChild is not a child of this node.
        !          12038:  * %GDOME_NO_MODIFICATION_ALLOWED_ERR: Raised when the node is readonly.
        !          12039:  * Returns: the node being inserted.
        !          12040:  */
        !          12041: GdomeNode *
        !          12042: gdome_not_insertBefore (GdomeNotation *self, GdomeNode *newChild, GdomeNode *refChild, GdomeException *exc)
        !          12043: {
        !          12044:  if (self == NULL) {
        !          12045:    *exc = GDOME_NULL_POINTER_ERR;
        !          12046:    return NULL;
        !          12047:  }
        !          12048:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          12049:    *exc = GDOME_INVALID_STATE_ERR;
        !          12050:    return NULL;
        !          12051:  }
        !          12052:  *exc = 0;
        !          12053:  return ((Gdome_xml_Notation *)self)->vtab->super.insertBefore ((GdomeNode *)self, newChild, refChild, exc);
        !          12054: }
        !          12055: /**
        !          12056:  * gdome_not_isSupported:
        !          12057:  * @self:  Node Object ref
        !          12058:  * @feature:  The name of the feature to test.
        !          12059:  * @version:  This is the version number of the feature to test. In Level 2,
        !          12060:  *            version 1, this is the string "2.0". If the version is not
        !          12061:  *            specified, supporting any version of the feature will cause the
        !          12062:  *            method to return %TRUE.
        !          12063:  * @exc:  Exception Object ref
        !          12064:  *
        !          12065:  * Tests whether the DOM implementation implements a specific feature and that
        !          12066:  * feature is supported by this node.
        !          12067:  * Returns: %TRUE if the specified feature is supported on this node, %FALSE
        !          12068:  * otherwise.
        !          12069:  */
        !          12070: GdomeBoolean
        !          12071: gdome_not_isSupported (GdomeNotation *self, GdomeDOMString *feature, GdomeDOMString *version, GdomeException *exc)
        !          12072: {
        !          12073:  if (self == NULL) {
        !          12074:    *exc = GDOME_NULL_POINTER_ERR;
        !          12075:    return FALSE;
        !          12076:  }
        !          12077:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          12078:    *exc = GDOME_INVALID_STATE_ERR;
        !          12079:    return FALSE;
        !          12080:  }
        !          12081:  *exc = 0;
        !          12082:  return ((Gdome_xml_Notation *)self)->vtab->super.isSupported ((GdomeNode *)self, feature, version, exc);
        !          12083: }
        !          12084: /**
        !          12085:  * gdome_not_normalize:
        !          12086:  * @self:  Node Object ref
        !          12087:  * @exc:  Exception Object ref
        !          12088:  *
        !          12089:  * Puts all Text nodes in the full depth of the sub-tree underneath this Node,
        !          12090:  * including attribute nodes, into a "normal" form where only structure (e.g.,
        !          12091:  * elements, comments, processing instructions, CDATA sections, and entity
        !          12092:  * references) separates Text nodes, i.e., there are neither adjacent Text
        !          12093:  * nodes nor empty Text nodes.
        !          12094:  */
        !          12095: void
        !          12096: gdome_not_normalize (GdomeNotation *self, GdomeException *exc)
        !          12097: {
        !          12098:  if (self == NULL) {
        !          12099:    *exc = GDOME_NULL_POINTER_ERR;
        !          12100:    return;
        !          12101:  }
        !          12102:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          12103:    *exc = GDOME_INVALID_STATE_ERR;
        !          12104:    return;
        !          12105:  }
        !          12106:  *exc = 0;
        !          12107:  ((Gdome_xml_Notation *)self)->vtab->super.normalize ((GdomeNode *)self, exc);
        !          12108: }
        !          12109: /**
        !          12110:  * gdome_not_removeChild:
        !          12111:  * @self:  Node Object ref
        !          12112:  * @oldChild:  The node being removed
        !          12113:  * @exc:  Exception Object ref
        !          12114:  *
        !          12115:  * Removes the child node indicated by @oldChild from the list of children, and
        !          12116:  * returns it.
        !          12117:  *
        !          12118:  * %GDOME_NOT_FOUND_ERR: Raised if @oldChild is not a child of this node.
        !          12119:  * %GDOME_NO_MODIFICATION_ALLOWED_ERR: Raised when the node is readonly.
        !          12120:  * Returns: the node removed.
        !          12121:  */
        !          12122: GdomeNode *
        !          12123: gdome_not_removeChild (GdomeNotation *self, GdomeNode *oldChild, GdomeException *exc)
        !          12124: {
        !          12125:  if (self == NULL) {
        !          12126:    *exc = GDOME_NULL_POINTER_ERR;
        !          12127:    return NULL;
        !          12128:  }
        !          12129:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          12130:    *exc = GDOME_INVALID_STATE_ERR;
        !          12131:    return NULL;
        !          12132:  }
        !          12133:  *exc = 0;
        !          12134:  return ((Gdome_xml_Notation *)self)->vtab->super.removeChild ((GdomeNode *)self, oldChild, exc);
        !          12135: }
        !          12136: /**
        !          12137:  * gdome_not_replaceChild:
        !          12138:  * @self:  Node Object ref
        !          12139:  * @newChild:  The new node to put in the child list
        !          12140:  * @oldChild:  The node being replaced in the list
        !          12141:  * @exc:  Exception Object ref
        !          12142:  *
        !          12143:  * Replaces the child node @oldChild with @newChild in the list of children,
        !          12144:  * and returns the @oldChild node. If @newChild is a DocumentFragment object,
        !          12145:  * @oldChild is replaced by all of the DocumentFragment children, which are
        !          12146:  * inserted in the same order. If the @newChild is already in the tree, it is
        !          12147:  * first removed.
        !          12148:  *
        !          12149:  * %GDOME_HIERARCHY_REQUEST_ERR: Raised if this node is of a type that does
        !          12150:  * not allow children of the type of the @newChild node, or if the node to put
        !          12151:  * in is one of this node's ancestors or this node itself.
        !          12152:  * %GDOME_WRONG_DOCUMENT_ERR: Raised if @newChild was created from a different
        !          12153:  * document than the one that created this node.
        !          12154:  * %GDOME_NOT_FOUND_ERR: Raised if @oldChild is not a child of this node.
        !          12155:  * %GDOME_NO_MODIFICATION_ALLOWED_ERR: Raised when the node is readonly.
        !          12156:  * Returns: the node replaced.
        !          12157:  */
        !          12158: GdomeNode *
        !          12159: gdome_not_replaceChild (GdomeNotation *self, GdomeNode *newChild, GdomeNode *oldChild, GdomeException *exc)
        !          12160: {
        !          12161:  if (self == NULL) {
        !          12162:    *exc = GDOME_NULL_POINTER_ERR;
        !          12163:    return NULL;
        !          12164:  }
        !          12165:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          12166:    *exc = GDOME_INVALID_STATE_ERR;
        !          12167:    return NULL;
        !          12168:  }
        !          12169:  *exc = 0;
        !          12170:  return ((Gdome_xml_Notation *)self)->vtab->super.replaceChild ((GdomeNode *)self, newChild, oldChild, exc);
        !          12171: }
        !          12172: /**
        !          12173:  * gdome_not_addEventListener:
        !          12174:  * @self:  Node Object ref
        !          12175:  * @type:  the event type for which the user is registering
        !          12176:  * @listener:  the listener parameter takes an interface implemented by the
        !          12177:  *             user which contains the methods to be called when the event occurs.
        !          12178:  * @useCapture:  if %TRUE, useCapture indicates that the user wishes to initiate
        !          12179:  *               capture. After initiating capture, all events of the specified
        !          12180:  *               type will be dispatched to the registered EventListener before
        !          12181:  *               being dispatched to any EventTargets beneath them in the tree.
        !          12182:  *               Events which are bubbling upward through the tree will not
        !          12183:  *               trigger an EventListener designated to use capture.
        !          12184:  * @exc:  Exception Object ref
        !          12185:  *
        !          12186:  * This method allows the registration of event listeners on the event target.
        !          12187:  * If an EventListener is added to an EventTarget while it is processing an
        !          12188:  * event, it will not be triggered by the current actions but may be triggered
        !          12189:  * during a later stage of event flow, such as the bubbling phase.
        !          12190:  * If multiple identical EventListeners are registered on the same EventTarget
        !          12191:  * with the same parameters the duplicate instances are discarded. They do not
        !          12192:  * cause the EventListener to be called twice and since they are discarded
        !          12193:  * they do not need to be removed with the removeEventListener method.
        !          12194:  */
        !          12195: void
        !          12196: gdome_not_addEventListener (GdomeNotation *self, GdomeDOMString *type, GdomeEventListener *listener, GdomeBoolean useCapture, GdomeException *exc)
        !          12197: {
        !          12198:  if (self == NULL) {
        !          12199:    *exc = GDOME_NULL_POINTER_ERR;
        !          12200:    return;
        !          12201:  }
        !          12202:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          12203:    *exc = GDOME_INVALID_STATE_ERR;
        !          12204:    return;
        !          12205:  }
        !          12206:  *exc = 0;
        !          12207:  ((Gdome_xml_Notation *)self)->vtab->super.addEventListener ((GdomeNode *)self, type, listener, useCapture, exc);
        !          12208: }
        !          12209: /**
        !          12210:  * gdome_not_removeEventListener:
        !          12211:  * @self:  Node Object ref
        !          12212:  * @type:  Specifies the event type of the EventListener being removed.
        !          12213:  * @listener:  The EventListener parameter indicates the EventListener to be
        !          12214:  *             removed.
        !          12215:  * @useCapture:  Specifies whether the EventListener being removed was
        !          12216:  *               registered as a capturing listener or not. If a listener was
        !          12217:  *               registered twice, one with capture and one without, each must
        !          12218:  *               be removed separately. Removal of a capturing listener does
        !          12219:  *               not affect a non-capturing version of the same listener, and
        !          12220:  *               vice versa.
        !          12221:  * @exc:  Exception Object ref
        !          12222:  *
        !          12223:  * This method allows the removal of event listeners from the event target. If
        !          12224:  * an EventListener is removed from an EventTarget while it is processing an
        !          12225:  * event, it will not be triggered by the current actions. EventListeners can
        !          12226:  * never be invoked after being removed. Calling removeEventListener with
        !          12227:  * arguments which do not identify any currently registered EventListener on
        !          12228:  * the EventTarget has no effect.
        !          12229:  */
        !          12230: void
        !          12231: gdome_not_removeEventListener (GdomeNotation *self, GdomeDOMString *type, GdomeEventListener *listener, GdomeBoolean useCapture, GdomeException *exc)
        !          12232: {
        !          12233:  if (self == NULL) {
        !          12234:    *exc = GDOME_NULL_POINTER_ERR;
        !          12235:    return;
        !          12236:  }
        !          12237:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          12238:    *exc = GDOME_INVALID_STATE_ERR;
        !          12239:    return;
        !          12240:  }
        !          12241:  *exc = 0;
        !          12242:  ((Gdome_xml_Notation *)self)->vtab->super.removeEventListener ((GdomeNode *)self, type, listener, useCapture, exc);
        !          12243: }
        !          12244: /**
        !          12245:  * gdome_not_dispatchEvent:
        !          12246:  * @self:  Node Object ref
        !          12247:  * @evt:  Specifies the event type, behavior, and contextual information to be
        !          12248:  *        used in processing the event.
        !          12249:  * @exc:  Exception Object ref
        !          12250:  *
        !          12251:  * This method allows the dispatch of events into the implementations event
        !          12252:  * model. Events dispatched in this manner will have the same capturing and
        !          12253:  * bubbling behavior as events dispatched directly by the implementation. The
        !          12254:  * target of the event is the EventTarget on which dispatchEvent is called.
        !          12255:  *
        !          12256:  * GDOME_UNSPECIFIED_EVENT_TYPE_ERR: Raised if the Event's type was not
        !          12257:  * specified by initializing the event before dispatchEvent was called.
        !          12258:  * Specification of the Event's type as %NULL or an empty string will also
        !          12259:  * trigger this exception.
        !          12260:  * Returns: if preventDefault was called the value is %FALSE, else the value
        !          12261:  *          is %TRUE.
        !          12262:  */
        !          12263: GdomeBoolean
        !          12264: gdome_not_dispatchEvent (GdomeNotation *self, GdomeEvent *evt, GdomeException *exc)
        !          12265: {
        !          12266:  if (self == NULL) {
        !          12267:    *exc = GDOME_NULL_POINTER_ERR;
        !          12268:    return FALSE;
        !          12269:  }
        !          12270:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          12271:    *exc = GDOME_INVALID_STATE_ERR;
        !          12272:    return FALSE;
        !          12273:  }
        !          12274:  *exc = 0;
        !          12275:  return ((Gdome_xml_Notation *)self)->vtab->super.dispatchEvent ((GdomeNode *)self, evt, exc);
        !          12276: }
        !          12277: /**
        !          12278:  * gdome_not_subTreeDispatchEvent:
        !          12279:  * @self:  Node Object ref
        !          12280:  * @evt:  Specifies the event type, behavior, and contextual information to be
        !          12281:  *        used in processing the event.
        !          12282:  * @exc:  Exception Object ref
        !          12283:  *
        !          12284:  * This method allows the dispatch of events into the implementations event
        !          12285:  * model. Events dispatched in this manner will have the same capturing and
        !          12286:  * bubbling behavior as events dispatched directly by the implementation. The
        !          12287:  * target of the event is any nodes in the subtree of the EventTarget on which
        !          12288:  * dispatchEvent is called.
        !          12289:  *
        !          12290:  * GDOME_UNSPECIFIED_EVENT_TYPE_ERR: Raised if the Event's type was not
        !          12291:  * specified by initializing the event before dispatchEvent was called.
        !          12292:  * Specification of the Event's type as %NULL or an empty string will also
        !          12293:  * trigger this exception.
        !          12294:  */
        !          12295: void
        !          12296: gdome_not_subTreeDispatchEvent (GdomeNotation *self, GdomeEvent *evt, GdomeException *exc)
        !          12297: {
        !          12298:  if (self == NULL) {
        !          12299:    *exc = GDOME_NULL_POINTER_ERR;
        !          12300:    return;
        !          12301:  }
        !          12302:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          12303:    *exc = GDOME_INVALID_STATE_ERR;
        !          12304:    return;
        !          12305:  }
        !          12306:  *exc = 0;
        !          12307:  ((Gdome_xml_Notation *)self)->vtab->super.subTreeDispatchEvent ((GdomeNode *)self, evt, exc);
        !          12308: }
        !          12309: /**
        !          12310:  * gdome_not_canAppend:
        !          12311:  * @self:  Node Object ref
        !          12312:  * @newChild:  The Node Object ref of the node to test
        !          12313:  * @exc:  Exception Object ref
        !          12314:  *
        !          12315:  * Tests if a @newChild can be added in the child list of this node.
        !          12316:  * Returns: %TRUE if @newChild can be added, %FALSE otherwise.
        !          12317:  */
        !          12318: GdomeBoolean
        !          12319: gdome_not_canAppend (GdomeNotation *self, GdomeNode *newChild, GdomeException *exc)
        !          12320: {
        !          12321:  if (self == NULL) {
        !          12322:    *exc = GDOME_NULL_POINTER_ERR;
        !          12323:    return FALSE;
        !          12324:  }
        !          12325:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          12326:    *exc = GDOME_INVALID_STATE_ERR;
        !          12327:    return FALSE;
        !          12328:  }
        !          12329:  *exc = 0;
        !          12330:  return ((Gdome_xml_Notation *)self)->vtab->super.canAppend ((GdomeNode *)self, newChild, exc);
        !          12331: }
        !          12332: 
        !          12333: /******************************************************************************
        !          12334:           GdomeEntity interface API
        !          12335:  ******************************************************************************/
        !          12336: /**
        !          12337:  * gdome_ent_publicId:
        !          12338:  * @self:  The Entity Object ref
        !          12339:  * @exc:  The Exception Object ref
        !          12340:  *
        !          12341:  * Returns: the public identifier associated with the entity, if specified.
        !          12342:  * If the public identifier was not specified, this is %NULL.
        !          12343:  */
        !          12344: GdomeDOMString *
        !          12345: gdome_ent_publicId (GdomeEntity *self, GdomeException *exc)
        !          12346: {
        !          12347:  if (self == NULL) {
        !          12348:    *exc = GDOME_NULL_POINTER_ERR;
        !          12349:    return NULL;
        !          12350:  }
        !          12351:  if (((Gdome_xml_Entity *)self)->n == NULL) {
        !          12352:    *exc = GDOME_INVALID_STATE_ERR;
        !          12353:    return NULL;
        !          12354:  }
        !          12355:  *exc = 0;
        !          12356:  return ((Gdome_xml_Entity *)self)->vtab->publicId (self, exc);
        !          12357: }
        !          12358: /**
        !          12359:  * gdome_ent_systemId:
        !          12360:  * @self:  The Entity Object ref
        !          12361:  * @exc:  The Exception Object ref
        !          12362:  *
        !          12363:  * Returns: the system identifier associated with the entity, if specified.
        !          12364:  * If the system identifier was not specified, this is %NULL.
        !          12365:  */
        !          12366: GdomeDOMString *
        !          12367: gdome_ent_systemId (GdomeEntity *self, GdomeException *exc)
        !          12368: {
        !          12369:  if (self == NULL) {
        !          12370:    *exc = GDOME_NULL_POINTER_ERR;
        !          12371:    return NULL;
        !          12372:  }
        !          12373:  if (((Gdome_xml_Entity *)self)->n == NULL) {
        !          12374:    *exc = GDOME_INVALID_STATE_ERR;
        !          12375:    return NULL;
        !          12376:  }
        !          12377:  *exc = 0;
        !          12378:  return ((Gdome_xml_Entity *)self)->vtab->systemId (self, exc);
        !          12379: }
        !          12380: /**
        !          12381:  * gdome_ent_notationName:
        !          12382:  * @self:  The Entity Object ref
        !          12383:  * @exc:  The Exception Object ref
        !          12384:  *
        !          12385:  * Returns: for unparsed entities, the name of the notation for the entity.
        !          12386:  * For parsed entities, this is %NULL.
        !          12387:  */
        !          12388: GdomeDOMString *
        !          12389: gdome_ent_notationName (GdomeEntity *self, GdomeException *exc)
        !          12390: {
        !          12391:  if (self == NULL) {
        !          12392:    *exc = GDOME_NULL_POINTER_ERR;
        !          12393:    return NULL;
        !          12394:  }
        !          12395:  if (((Gdome_xml_Entity *)self)->n == NULL) {
        !          12396:    *exc = GDOME_INVALID_STATE_ERR;
        !          12397:    return NULL;
        !          12398:  }
        !          12399:  *exc = 0;
        !          12400:  return ((Gdome_xml_Entity *)self)->vtab->notationName (self, exc);
        !          12401: }
        !          12402: /**
        !          12403:  * gdome_ent_attributes:
        !          12404:  * @self:  Node Object ref
        !          12405:  * @exc:  Exception Object ref
        !          12406:  *
        !          12407:  * Returns: a NamedNodeMap containing the attributes of this node (if it is an
        !          12408:  * Element) or %NULL otherwise.
        !          12409:  */
        !          12410: GdomeNamedNodeMap *
        !          12411: gdome_ent_attributes (GdomeEntity *self, GdomeException *exc)
        !          12412: {
        !          12413:  if (self == NULL) {
        !          12414:    *exc = GDOME_NULL_POINTER_ERR;
        !          12415:    return NULL;
        !          12416:  }
        !          12417:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          12418:    *exc = GDOME_INVALID_STATE_ERR;
        !          12419:    return NULL;
        !          12420:  }
        !          12421:  *exc = 0;
        !          12422:  return ((Gdome_xml_Entity *)self)->vtab->super.attributes ((GdomeNode *)self, exc);
        !          12423: }
        !          12424: /**
        !          12425:  * gdome_ent_childNodes:
        !          12426:  * @self:  Node Object ref
        !          12427:  * @exc:  Exception Object ref
        !          12428:  *
        !          12429:  * Returns: a NodeList that contains all children of this node. If there are no
        !          12430:  * children, this is a NodeList containing no nodes.  Note that attributes are
        !          12431:  * not considered to be children of element nodes - use gdome_n_attributes to
        !          12432:  * obtain the attributes.
        !          12433:  */
        !          12434: GdomeNodeList *
        !          12435: gdome_ent_childNodes (GdomeEntity *self, GdomeException *exc)
        !          12436: {
        !          12437:  if (self == NULL) {
        !          12438:    *exc = GDOME_NULL_POINTER_ERR;
        !          12439:    return NULL;
        !          12440:  }
        !          12441:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          12442:    *exc = GDOME_INVALID_STATE_ERR;
        !          12443:    return NULL;
        !          12444:  }
        !          12445:  *exc = 0;
        !          12446:  return ((Gdome_xml_Entity *)self)->vtab->super.childNodes ((GdomeNode *)self, exc);
        !          12447: }
        !          12448: /**
        !          12449:  * gdome_ent_firstChild:
        !          12450:  * @self:  Node Object ref
        !          12451:  * @exc:  Exception Object ref
        !          12452:  * 
        !          12453:  * Returns: the first child of this node. If there is no such node,
        !          12454:  * this returns %NULL.
        !          12455:  */
        !          12456: GdomeNode *
        !          12457: gdome_ent_firstChild (GdomeEntity *self, GdomeException *exc)
        !          12458: {
        !          12459:  if (self == NULL) {
        !          12460:    *exc = GDOME_NULL_POINTER_ERR;
        !          12461:    return NULL;
        !          12462:  }
        !          12463:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          12464:    *exc = GDOME_INVALID_STATE_ERR;
        !          12465:    return NULL;
        !          12466:  }
        !          12467:  *exc = 0;
        !          12468:  return ((Gdome_xml_Entity *)self)->vtab->super.firstChild ((GdomeNode *)self, exc);
        !          12469: }
        !          12470: /**
        !          12471:  * gdome_ent_lastChild:
        !          12472:  * @self:  Node Object ref
        !          12473:  * @exc:  Exception Object ref
        !          12474:  *
        !          12475:  * Returns: the last child of this node. If there is no such node,
        !          12476:  * this returns %NULL.
        !          12477:  */
        !          12478: GdomeNode *
        !          12479: gdome_ent_lastChild (GdomeEntity *self, GdomeException *exc)
        !          12480: {
        !          12481:  if (self == NULL) {
        !          12482:    *exc = GDOME_NULL_POINTER_ERR;
        !          12483:    return NULL;
        !          12484:  }
        !          12485:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          12486:    *exc = GDOME_INVALID_STATE_ERR;
        !          12487:    return NULL;
        !          12488:  }
        !          12489:  *exc = 0;
        !          12490:  return ((Gdome_xml_Entity *)self)->vtab->super.lastChild ((GdomeNode *)self, exc);
        !          12491: }
        !          12492: /**
        !          12493:  * gdome_ent_localName:
        !          12494:  * @self:  Node Objects ref
        !          12495:  * @exc:  Exception Object ref
        !          12496:  *
        !          12497:  * Returns: the local part of the qualified name of this node.
        !          12498:  * For nodes of any type other than %GDOME_ELEMENT_NODE and
        !          12499:  * %GDOME_ATTRIBUTE_NODE and nodes created with a DOM Level 1 method, this is
        !          12500:  * always %NULL.
        !          12501:  */
        !          12502: GdomeDOMString *
        !          12503: gdome_ent_localName (GdomeEntity *self, GdomeException *exc)
        !          12504: {
        !          12505:  if (self == NULL) {
        !          12506:    *exc = GDOME_NULL_POINTER_ERR;
        !          12507:    return NULL;
        !          12508:  }
        !          12509:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          12510:    *exc = GDOME_INVALID_STATE_ERR;
        !          12511:    return NULL;
        !          12512:  }
        !          12513:  *exc = 0;
        !          12514:  return ((Gdome_xml_Entity *)self)->vtab->super.localName ((GdomeNode *)self, exc);
        !          12515: }
        !          12516: /**
        !          12517:  * gdome_ent_namespaceURI:
        !          12518:  * @self:  Node Objects ref
        !          12519:  * @exc:  Exception Object ref
        !          12520:  *
        !          12521:  * Returns: the namespace URI of this node, or %NULL if it is unspecified.
        !          12522:  * For nodes of any type other than %GDOME_ELEMENT_NODE and
        !          12523:  * %GDOME_ATTRIBUTE_NODE and nodes created with a DOM Level 1 method, this is
        !          12524:  * always %NULL.
        !          12525:  */
        !          12526: GdomeDOMString *
        !          12527: gdome_ent_namespaceURI (GdomeEntity *self, GdomeException *exc)
        !          12528: {
        !          12529:  if (self == NULL) {
        !          12530:    *exc = GDOME_NULL_POINTER_ERR;
        !          12531:    return NULL;
        !          12532:  }
        !          12533:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          12534:    *exc = GDOME_INVALID_STATE_ERR;
        !          12535:    return NULL;
        !          12536:  }
        !          12537:  *exc = 0;
        !          12538:  return ((Gdome_xml_Entity *)self)->vtab->super.namespaceURI ((GdomeNode *)self, exc);
        !          12539: }
        !          12540: /**
        !          12541:  * gdome_ent_nextSibling:
        !          12542:  * @self:  Node Object ref
        !          12543:  * @exc:  Exception Object ref
        !          12544:  *
        !          12545:  * Returns: the node immediately following this node. If there is no such
        !          12546:  * node, this returns %NULL.
        !          12547:  */
        !          12548: GdomeNode *
        !          12549: gdome_ent_nextSibling (GdomeEntity *self, GdomeException *exc)
        !          12550: {
        !          12551:  if (self == NULL) {
        !          12552:    *exc = GDOME_NULL_POINTER_ERR;
        !          12553:    return NULL;
        !          12554:  }
        !          12555:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          12556:    *exc = GDOME_INVALID_STATE_ERR;
        !          12557:    return NULL;
        !          12558:  }
        !          12559:  *exc = 0;
        !          12560:  return ((Gdome_xml_Entity *)self)->vtab->super.nextSibling ((GdomeNode *)self, exc);
        !          12561: }
        !          12562: /**
        !          12563:  * gdome_ent_nodeName:
        !          12564:  * @self:  Node Object ref
        !          12565:  * @exc:  Exception Object ref
        !          12566:  *
        !          12567:  * Returns: the name of this node, depending on its type.
        !          12568:  */
        !          12569: GdomeDOMString *
        !          12570: gdome_ent_nodeName (GdomeEntity *self, GdomeException *exc)
        !          12571: {
        !          12572:  if (self == NULL) {
        !          12573:    *exc = GDOME_NULL_POINTER_ERR;
        !          12574:    return NULL;
        !          12575:  }
        !          12576:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          12577:    *exc = GDOME_INVALID_STATE_ERR;
        !          12578:    return NULL;
        !          12579:  }
        !          12580:  *exc = 0;
        !          12581:  return ((Gdome_xml_Entity *)self)->vtab->super.nodeName ((GdomeNode *)self, exc);
        !          12582: }
        !          12583: /**
        !          12584:  * gdome_ent_nodeType:
        !          12585:  * @self:  Node Object ref
        !          12586:  * @exc:  Exception Object ref
        !          12587:  *
        !          12588:  * Returns: an integer bigger than %0 representing the type of the underlying
        !          12589:  * object or %0 on error.
        !          12590:  */
        !          12591: unsigned short
        !          12592: gdome_ent_nodeType (GdomeEntity *self, GdomeException *exc)
        !          12593: {
        !          12594:  if (self == NULL) {
        !          12595:    *exc = GDOME_NULL_POINTER_ERR;
        !          12596:    return 0;
        !          12597:  }
        !          12598:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          12599:    *exc = GDOME_INVALID_STATE_ERR;
        !          12600:    return 0;
        !          12601:  }
        !          12602:  *exc = 0;
        !          12603:  return ((Gdome_xml_Entity *)self)->vtab->super.nodeType ((GdomeNode *)self, exc);
        !          12604: }
        !          12605: /**
        !          12606:  * gdome_ent_nodeValue:
        !          12607:  * @self:  Node Object ref
        !          12608:  * @exc:  Exception Object ref
        !          12609:  *
        !          12610:  * Returns: the value of this node, depending on its type.
        !          12611:  */
        !          12612: GdomeDOMString *
        !          12613: gdome_ent_nodeValue (GdomeEntity *self, GdomeException *exc)
        !          12614: {
        !          12615:  if (self == NULL) {
        !          12616:    *exc = GDOME_NULL_POINTER_ERR;
        !          12617:    return NULL;
        !          12618:  }
        !          12619:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          12620:    *exc = GDOME_INVALID_STATE_ERR;
        !          12621:    return NULL;
        !          12622:  }
        !          12623:  *exc = 0;
        !          12624:  return ((Gdome_xml_Entity *)self)->vtab->super.nodeValue ((GdomeNode *)self, exc);
        !          12625: }
        !          12626: /**
        !          12627:  * gdome_ent_set_nodeValue:
        !          12628:  * @self:  Node Object ref
        !          12629:  * @nodeValue:  The new value for this node.
        !          12630:  * @exc:  Exception Object ref
        !          12631:  *
        !          12632:  * Sets The value of this node, depending on its type.
        !          12633:  *
        !          12634:  * %GDOME_NO_MODIFICATION_ALLOWED_ERR: Raised when the node is readonly.
        !          12635:  */
        !          12636: void
        !          12637: gdome_ent_set_nodeValue (GdomeEntity *self, GdomeDOMString *nodeValue, GdomeException *exc)
        !          12638: {
        !          12639:  if (self == NULL) {
        !          12640:    *exc = GDOME_NULL_POINTER_ERR;
        !          12641:    return;
        !          12642:  }
        !          12643:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          12644:    *exc = GDOME_INVALID_STATE_ERR;
        !          12645:    return;
        !          12646:  }
        !          12647:  *exc = 0;
        !          12648:  ((Gdome_xml_Entity *)self)->vtab->super.set_nodeValue ((GdomeNode *)self, nodeValue, exc);
        !          12649: }
        !          12650: /**
        !          12651:  * gdome_ent_ownerDocument:
        !          12652:  * @self:  Node Objects ref
        !          12653:  * @exc:  Exception Object ref
        !          12654:  *
        !          12655:  * Returns: the documment object associated with this node. This is also the
        !          12656:  * Document object used to create new nodes. When this node is a Document or a
        !          12657:  * DocumentType which is not used with any Document yet, this is %NULL.
        !          12658:  */
        !          12659: GdomeDocument *
        !          12660: gdome_ent_ownerDocument (GdomeEntity *self, GdomeException *exc)
        !          12661: {
        !          12662:  if (self == NULL) {
        !          12663:    *exc = GDOME_NULL_POINTER_ERR;
        !          12664:    return NULL;
        !          12665:  }
        !          12666:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          12667:    *exc = GDOME_INVALID_STATE_ERR;
        !          12668:    return NULL;
        !          12669:  }
        !          12670:  *exc = 0;
        !          12671:  return ((Gdome_xml_Entity *)self)->vtab->super.ownerDocument ((GdomeNode *)self, exc);
        !          12672: }
        !          12673: /**
        !          12674:  * gdome_ent_parentNode:
        !          12675:  * @self: Node Object ref
        !          12676:  * @exc: Exception Object ref
        !          12677:  *
        !          12678:  * Returns: the parent of this node. All nodes, except Attr,
        !          12679:  * Document, DocumentFragment, Entity, and Notation may have a parent. However,
        !          12680:  * if a node has just been created and not yet added to the tree, or if it has
        !          12681:  * been removed from the tree, this is %NULL.
        !          12682:  */
        !          12683: GdomeNode *
        !          12684: gdome_ent_parentNode (GdomeEntity *self, GdomeException *exc)
        !          12685: {
        !          12686:  if (self == NULL) {
        !          12687:    *exc = GDOME_NULL_POINTER_ERR;
        !          12688:    return NULL;
        !          12689:  }
        !          12690:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          12691:    *exc = GDOME_INVALID_STATE_ERR;
        !          12692:    return NULL;
        !          12693:  }
        !          12694:  *exc = 0;
        !          12695:  return ((Gdome_xml_Entity *)self)->vtab->super.parentNode ((GdomeNode *)self, exc);
        !          12696: }
        !          12697: /**
        !          12698:  * gdome_ent_prefix:
        !          12699:  * @self:  Node Objects ref
        !          12700:  * @exc:  Exception Object ref
        !          12701:  *
        !          12702:  * Returns: the namespace prefix of this node, or %NULL if it is unspecified.
        !          12703:  * For nodes of any type other than %GDOME_ELEMENT_NODE and
        !          12704:  * %GDOME_ATTRIBUTE_NODE and nodes created with a DOM Level 1 method, this is
        !          12705:  * always %NULL.
        !          12706:  */
        !          12707: GdomeDOMString *
        !          12708: gdome_ent_prefix (GdomeEntity *self, GdomeException *exc)
        !          12709: {
        !          12710:  if (self == NULL) {
        !          12711:    *exc = GDOME_NULL_POINTER_ERR;
        !          12712:    return NULL;
        !          12713:  }
        !          12714:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          12715:    *exc = GDOME_INVALID_STATE_ERR;
        !          12716:    return NULL;
        !          12717:  }
        !          12718:  *exc = 0;
        !          12719:  return ((Gdome_xml_Entity *)self)->vtab->super.prefix ((GdomeNode *)self, exc);
        !          12720: }
        !          12721: /**
        !          12722:  * gdome_ent_set_prefix:
        !          12723:  * @self:  Node Object ref
        !          12724:  * @prefix:  The new prefix for this node.
        !          12725:  * @exc:  Exception Object ref
        !          12726:  *
        !          12727:  * Sets a new nemaspace prefix for this node.
        !          12728:  *
        !          12729:  * %GDOME_NO_MODIFICATION_ALLOWED_ERR: Raised when the node is readonly.
        !          12730:  * %GDOME_NAMESPACE_ERR: Raised if the specified @prefix is malformed per the
        !          12731:  * Namespaces in XML specification, if the namespaceURI of this node is %NULL,
        !          12732:  * if the specified prefix is "xml" and the namespaceURI of this node is
        !          12733:  * different from "http://www.w3.org/XML/1998/namespace", if this node is an
        !          12734:  * attribute and the specified prefix is "xmlns" and the namespaceURI of this
        !          12735:  * node is different from "http://www.w3.org/2000/xmlns/", or if this node is
        !          12736:  * an attribute and the qualifiedName of this node is "xmlns".
        !          12737:  */
        !          12738: void
        !          12739: gdome_ent_set_prefix (GdomeEntity *self, GdomeDOMString *prefix, GdomeException *exc)
        !          12740: {
        !          12741:  if (self == NULL) {
        !          12742:    *exc = GDOME_NULL_POINTER_ERR;
        !          12743:    return;
        !          12744:  }
        !          12745:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          12746:    *exc = GDOME_INVALID_STATE_ERR;
        !          12747:    return;
        !          12748:  }
        !          12749:  *exc = 0;
        !          12750:  ((Gdome_xml_Entity *)self)->vtab->super.set_prefix ((GdomeNode *)self, prefix, exc);
        !          12751: }
        !          12752: /**
        !          12753:  * gdome_ent_previousSibling:
        !          12754:  * @self:  Node Object ref
        !          12755:  * @exc:  Exception Object ref
        !          12756:  *
        !          12757:  * Returns: the node immediately preceding this node. If there is no such
        !          12758:  * node, this returns %NULL.
        !          12759:  */
        !          12760: GdomeNode *
        !          12761: gdome_ent_previousSibling (GdomeEntity *self, GdomeException *exc)
        !          12762: {
        !          12763:  if (self == NULL) {
        !          12764:    *exc = GDOME_NULL_POINTER_ERR;
        !          12765:    return NULL;
        !          12766:  }
        !          12767:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          12768:    *exc = GDOME_INVALID_STATE_ERR;
        !          12769:    return NULL;
        !          12770:  }
        !          12771:  *exc = 0;
        !          12772:  return ((Gdome_xml_Entity *)self)->vtab->super.previousSibling ((GdomeNode *)self, exc);
        !          12773: }
        !          12774: /**
        !          12775:  * gdome_ent_ref:
        !          12776:  * @self:  Node Object ref
        !          12777:  * @exc:  Exception Object ref
        !          12778:  *
        !          12779:  * Increase the reference count of the specified Node.
        !          12780:  */
        !          12781: void
        !          12782: gdome_ent_ref (GdomeEntity *self, GdomeException *exc)
        !          12783: {
        !          12784:  if (self == NULL) {
        !          12785:    *exc = GDOME_NULL_POINTER_ERR;
        !          12786:    return;
        !          12787:  }
        !          12788:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          12789:    *exc = GDOME_INVALID_STATE_ERR;
        !          12790:    return;
        !          12791:  }
        !          12792:  *exc = 0;
        !          12793:  ((Gdome_xml_Entity *)self)->vtab->super.ref ((GdomeNode *)self, exc);
        !          12794: }
        !          12795: /**
        !          12796:  * gdome_ent_unref:
        !          12797:  * @self:  Node Object ref
        !          12798:  * @exc:  Exception Object ref
        !          12799:  *
        !          12800:  * Decrease the reference count of the specified Node. Free the Node structure
        !          12801:  * if the Node will have zero reference.
        !          12802:  */
        !          12803: void
        !          12804: gdome_ent_unref (GdomeEntity *self, GdomeException *exc)
        !          12805: {
        !          12806:  if (self == NULL) {
        !          12807:    *exc = GDOME_NULL_POINTER_ERR;
        !          12808:    return;
        !          12809:  }
        !          12810:  *exc = 0;
        !          12811:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          12812:    if (((Gdome_xml_Node *)self)->refcnt > 0)
        !          12813:      ((Gdome_xml_Node *)self)->refcnt--;
        !          12814: 
        !          12815:    if (((Gdome_xml_Node *)self)->refcnt == 0 && ((Gdome_xml_Node *)self)->ll == NULL) {
        !          12816: #ifdef DEBUG_REFCNT
        !          12817:      gdome_refdbg_delRef ((void *)self, GDOME_REFDBG_NODE);
        !          12818: #endif
        !          12819:      g_free (self);
        !          12820:    }
        !          12821:    return;
        !          12822:  }
        !          12823:  ((Gdome_xml_Entity *)self)->vtab->super.unref ((GdomeNode *)self, exc);
        !          12824: }
        !          12825: /**
        !          12826:  * gdome_ent_query_interface:
        !          12827:  * @self:  Node Object ref
        !          12828:  * @interface:  interface needed
        !          12829:  * @exc:  Exception Object ref
        !          12830:  *
        !          12831:  * Returns: a reference to this object that implements the @interface needed,
        !          12832:  *          or %NULL if the @interface is not supported by this Object.
        !          12833:  */
        !          12834: gpointer
        !          12835: gdome_ent_query_interface (GdomeEntity *self, const char *interface, GdomeException *exc)
        !          12836: {
        !          12837:  if (self == NULL) {
        !          12838:    *exc = GDOME_NULL_POINTER_ERR;
        !          12839:    return NULL;
        !          12840:  }
        !          12841:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          12842:    *exc = GDOME_INVALID_STATE_ERR;
        !          12843:    return NULL;
        !          12844:  }
        !          12845:  *exc = 0;
        !          12846:  return ((Gdome_xml_Entity *)self)->vtab->super.query_interface ((GdomeNode *)self, interface, exc);
        !          12847: }
        !          12848: /**
        !          12849:  * gdome_ent_appendChild:
        !          12850:  * @self:  Node Object ref
        !          12851:  * @newChild:  The node to add
        !          12852:  * @exc:  Exception Object ref
        !          12853:  *
        !          12854:  * Adds the node @newChild to the end of the list of children of this node.
        !          12855:  * If the @newChild is already in the tree, it is first removed. If it is a
        !          12856:  * DocumentFragment node, the entire contents of the document fragment are
        !          12857:  * moved into the child list of this node
        !          12858:  *
        !          12859:  * %GDOME_HIERARCHY_REQUEST_ERR: Raised if this node is of a type that does not
        !          12860:  * allow children of the type of the @newChild node, or if the node to append is
        !          12861:  * one of this node's ancestors or this node itself.
        !          12862:  * %GDOME_WRONG_DOCUMENT_ERR: Raised if @newChild was created from a different
        !          12863:  * document than the one that created this node.
        !          12864:  * %GDOME_NO_MODIFICATION_ALLOWED_ERR: Raised when the node is readonly.
        !          12865:  * Returns: the node added.
        !          12866:  */
        !          12867: GdomeNode *
        !          12868: gdome_ent_appendChild (GdomeEntity *self, GdomeNode *newChild, GdomeException *exc)
        !          12869: {
        !          12870:  if (self == NULL) {
        !          12871:    *exc = GDOME_NULL_POINTER_ERR;
        !          12872:    return NULL;
        !          12873:  }
        !          12874:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          12875:    *exc = GDOME_INVALID_STATE_ERR;
        !          12876:    return NULL;
        !          12877:  }
        !          12878:  *exc = 0;
        !          12879:  return ((Gdome_xml_Entity *)self)->vtab->super.appendChild ((GdomeNode *)self, newChild, exc);
        !          12880: }
        !          12881: /**
        !          12882:  * gdome_ent_cloneNode:
        !          12883:  * @self:  Node Object ref
        !          12884:  * @deep:  If true, recursively clone the subtree under the specified node;
        !          12885:  *         if false, clone only the node itself (and its attributes, if it is
        !          12886:  *         an Element).
        !          12887:  * @exc:  Exception Object ref
        !          12888:  *
        !          12889:  * Makes a duplicate of this node, i.e., serves as a generic copy
        !          12890:  * constructor for nodes. The duplicate node has no parent; (parentNode is
        !          12891:  * %NULL).
        !          12892:  * %GDOME_DOCUMENT_TYPE_NODE, %GDOME_NOTATION_NODE and %GDOME_ENTITY_NODE
        !          12893:  * nodes are not supported.
        !          12894:  *
        !          12895:  * %GDOME_NOT_SUPPORTED_ERR: Raised if the type of node being cloned is not
        !          12896:  * supported.
        !          12897:  * Returns: the duplicate node.
        !          12898:  */
        !          12899: GdomeNode *
        !          12900: gdome_ent_cloneNode (GdomeEntity *self, GdomeBoolean deep, GdomeException *exc)
        !          12901: {
        !          12902:  if (self == NULL) {
        !          12903:    *exc = GDOME_NULL_POINTER_ERR;
        !          12904:    return NULL;
        !          12905:  }
        !          12906:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          12907:    *exc = GDOME_INVALID_STATE_ERR;
        !          12908:    return NULL;
        !          12909:  }
        !          12910:  *exc = 0;
        !          12911:  return ((Gdome_xml_Entity *)self)->vtab->super.cloneNode ((GdomeNode *)self, deep, exc);
        !          12912: }
        !          12913: /**
        !          12914:  * gdome_ent_hasAttributes:
        !          12915:  * @self:  Node Object ref
        !          12916:  * @exc:  Exception Object ref
        !          12917:  *
        !          12918:  * Returns: %TRUE if this node has any attributes, %FALSE otherwise.
        !          12919:  */
        !          12920: GdomeBoolean
        !          12921: gdome_ent_hasAttributes (GdomeEntity *self, GdomeException *exc)
        !          12922: {
        !          12923:  if (self == NULL) {
        !          12924:    *exc = GDOME_NULL_POINTER_ERR;
        !          12925:    return FALSE;
        !          12926:  }
        !          12927:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          12928:    *exc = GDOME_INVALID_STATE_ERR;
        !          12929:    return FALSE;
        !          12930:  }
        !          12931:  *exc = 0;
        !          12932:  return ((Gdome_xml_Entity *)self)->vtab->super.hasAttributes ((GdomeNode *)self, exc);
        !          12933: }
        !          12934: /**
        !          12935:  * gdome_ent_hasChildNodes:
        !          12936:  * @self:  Node Object ref
        !          12937:  * @exc:  Exception Object ref
        !          12938:  *
        !          12939:  * Returns: %TRUE if this node has any children, %FALSE otherwise.
        !          12940:  */
        !          12941: GdomeBoolean
        !          12942: gdome_ent_hasChildNodes (GdomeEntity *self, GdomeException *exc)
        !          12943: {
        !          12944:  if (self == NULL) {
        !          12945:    *exc = GDOME_NULL_POINTER_ERR;
        !          12946:    return FALSE;
        !          12947:  }
        !          12948:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          12949:    *exc = GDOME_INVALID_STATE_ERR;
        !          12950:    return FALSE;
        !          12951:  }
        !          12952:  *exc = 0;
        !          12953:  return ((Gdome_xml_Entity *)self)->vtab->super.hasChildNodes ((GdomeNode *)self, exc);
        !          12954: }
        !          12955: /**
        !          12956:  * gdome_ent_insertBefore:
        !          12957:  * @self:  Node Object ref
        !          12958:  * @newChild:  The new node to put in the child list
        !          12959:  * @refChild:  the reference node, i.e., the node before which the new node
        !          12960:  *             must be inserted.
        !          12961:  * @exc:  Exception Object ref
        !          12962:  *
        !          12963:  * Inserts the node @newChild before the existing child node @refChild. If
        !          12964:  * @refChild is %NULL, insert @newChild at the end of the list of children.
        !          12965:  * If @newChild is a DocumentFragment node, all of its children are inserted,
        !          12966:  * in the same order, before @refChild. If the @newChild is already in the
        !          12967:  * tree, it is first removed.
        !          12968:  *
        !          12969:  * %GDOME_HIERARCHY_REQUEST_ERR: Raised if this node is of a type that does not
        !          12970:  * allow children of the type of the @newChild node, or if the node to insert is
        !          12971:  * one of this node's ancestors or this node itself.
        !          12972:  * %GDOME_WRONG_DOCUMENT_ERR: Raised if @newChild was created from a different
        !          12973:  * document than the one that created this node.
        !          12974:  * %GDOME_NOT_FOUND_ERR: Raised if @refChild is not a child of this node.
        !          12975:  * %GDOME_NO_MODIFICATION_ALLOWED_ERR: Raised when the node is readonly.
        !          12976:  * Returns: the node being inserted.
        !          12977:  */
        !          12978: GdomeNode *
        !          12979: gdome_ent_insertBefore (GdomeEntity *self, GdomeNode *newChild, GdomeNode *refChild, GdomeException *exc)
        !          12980: {
        !          12981:  if (self == NULL) {
        !          12982:    *exc = GDOME_NULL_POINTER_ERR;
        !          12983:    return NULL;
        !          12984:  }
        !          12985:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          12986:    *exc = GDOME_INVALID_STATE_ERR;
        !          12987:    return NULL;
        !          12988:  }
        !          12989:  *exc = 0;
        !          12990:  return ((Gdome_xml_Entity *)self)->vtab->super.insertBefore ((GdomeNode *)self, newChild, refChild, exc);
        !          12991: }
        !          12992: /**
        !          12993:  * gdome_ent_isSupported:
        !          12994:  * @self:  Node Object ref
        !          12995:  * @feature:  The name of the feature to test.
        !          12996:  * @version:  This is the version number of the feature to test. In Level 2,
        !          12997:  *            version 1, this is the string "2.0". If the version is not
        !          12998:  *            specified, supporting any version of the feature will cause the
        !          12999:  *            method to return %TRUE.
        !          13000:  * @exc:  Exception Object ref
        !          13001:  *
        !          13002:  * Tests whether the DOM implementation implements a specific feature and that
        !          13003:  * feature is supported by this node.
        !          13004:  * Returns: %TRUE if the specified feature is supported on this node, %FALSE
        !          13005:  * otherwise.
        !          13006:  */
        !          13007: GdomeBoolean
        !          13008: gdome_ent_isSupported (GdomeEntity *self, GdomeDOMString *feature, GdomeDOMString *version, GdomeException *exc)
        !          13009: {
        !          13010:  if (self == NULL) {
        !          13011:    *exc = GDOME_NULL_POINTER_ERR;
        !          13012:    return FALSE;
        !          13013:  }
        !          13014:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          13015:    *exc = GDOME_INVALID_STATE_ERR;
        !          13016:    return FALSE;
        !          13017:  }
        !          13018:  *exc = 0;
        !          13019:  return ((Gdome_xml_Entity *)self)->vtab->super.isSupported ((GdomeNode *)self, feature, version, exc);
        !          13020: }
        !          13021: /**
        !          13022:  * gdome_ent_normalize:
        !          13023:  * @self:  Node Object ref
        !          13024:  * @exc:  Exception Object ref
        !          13025:  *
        !          13026:  * Puts all Text nodes in the full depth of the sub-tree underneath this Node,
        !          13027:  * including attribute nodes, into a "normal" form where only structure (e.g.,
        !          13028:  * elements, comments, processing instructions, CDATA sections, and entity
        !          13029:  * references) separates Text nodes, i.e., there are neither adjacent Text
        !          13030:  * nodes nor empty Text nodes.
        !          13031:  */
        !          13032: void
        !          13033: gdome_ent_normalize (GdomeEntity *self, GdomeException *exc)
        !          13034: {
        !          13035:  if (self == NULL) {
        !          13036:    *exc = GDOME_NULL_POINTER_ERR;
        !          13037:    return;
        !          13038:  }
        !          13039:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          13040:    *exc = GDOME_INVALID_STATE_ERR;
        !          13041:    return;
        !          13042:  }
        !          13043:  *exc = 0;
        !          13044:  ((Gdome_xml_Entity *)self)->vtab->super.normalize ((GdomeNode *)self, exc);
        !          13045: }
        !          13046: /**
        !          13047:  * gdome_ent_removeChild:
        !          13048:  * @self:  Node Object ref
        !          13049:  * @oldChild:  The node being removed
        !          13050:  * @exc:  Exception Object ref
        !          13051:  *
        !          13052:  * Removes the child node indicated by @oldChild from the list of children, and
        !          13053:  * returns it.
        !          13054:  *
        !          13055:  * %GDOME_NOT_FOUND_ERR: Raised if @oldChild is not a child of this node.
        !          13056:  * %GDOME_NO_MODIFICATION_ALLOWED_ERR: Raised when the node is readonly.
        !          13057:  * Returns: the node removed.
        !          13058:  */
        !          13059: GdomeNode *
        !          13060: gdome_ent_removeChild (GdomeEntity *self, GdomeNode *oldChild, GdomeException *exc)
        !          13061: {
        !          13062:  if (self == NULL) {
        !          13063:    *exc = GDOME_NULL_POINTER_ERR;
        !          13064:    return NULL;
        !          13065:  }
        !          13066:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          13067:    *exc = GDOME_INVALID_STATE_ERR;
        !          13068:    return NULL;
        !          13069:  }
        !          13070:  *exc = 0;
        !          13071:  return ((Gdome_xml_Entity *)self)->vtab->super.removeChild ((GdomeNode *)self, oldChild, exc);
        !          13072: }
        !          13073: /**
        !          13074:  * gdome_ent_replaceChild:
        !          13075:  * @self:  Node Object ref
        !          13076:  * @newChild:  The new node to put in the child list
        !          13077:  * @oldChild:  The node being replaced in the list
        !          13078:  * @exc:  Exception Object ref
        !          13079:  *
        !          13080:  * Replaces the child node @oldChild with @newChild in the list of children,
        !          13081:  * and returns the @oldChild node. If @newChild is a DocumentFragment object,
        !          13082:  * @oldChild is replaced by all of the DocumentFragment children, which are
        !          13083:  * inserted in the same order. If the @newChild is already in the tree, it is
        !          13084:  * first removed.
        !          13085:  *
        !          13086:  * %GDOME_HIERARCHY_REQUEST_ERR: Raised if this node is of a type that does
        !          13087:  * not allow children of the type of the @newChild node, or if the node to put
        !          13088:  * in is one of this node's ancestors or this node itself.
        !          13089:  * %GDOME_WRONG_DOCUMENT_ERR: Raised if @newChild was created from a different
        !          13090:  * document than the one that created this node.
        !          13091:  * %GDOME_NOT_FOUND_ERR: Raised if @oldChild is not a child of this node.
        !          13092:  * %GDOME_NO_MODIFICATION_ALLOWED_ERR: Raised when the node is readonly.
        !          13093:  * Returns: the node replaced.
        !          13094:  */
        !          13095: GdomeNode *
        !          13096: gdome_ent_replaceChild (GdomeEntity *self, GdomeNode *newChild, GdomeNode *oldChild, GdomeException *exc)
        !          13097: {
        !          13098:  if (self == NULL) {
        !          13099:    *exc = GDOME_NULL_POINTER_ERR;
        !          13100:    return NULL;
        !          13101:  }
        !          13102:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          13103:    *exc = GDOME_INVALID_STATE_ERR;
        !          13104:    return NULL;
        !          13105:  }
        !          13106:  *exc = 0;
        !          13107:  return ((Gdome_xml_Entity *)self)->vtab->super.replaceChild ((GdomeNode *)self, newChild, oldChild, exc);
        !          13108: }
        !          13109: /**
        !          13110:  * gdome_ent_addEventListener:
        !          13111:  * @self:  Node Object ref
        !          13112:  * @type:  the event type for which the user is registering
        !          13113:  * @listener:  the listener parameter takes an interface implemented by the
        !          13114:  *             user which contains the methods to be called when the event occurs.
        !          13115:  * @useCapture:  if %TRUE, useCapture indicates that the user wishes to initiate
        !          13116:  *               capture. After initiating capture, all events of the specified
        !          13117:  *               type will be dispatched to the registered EventListener before
        !          13118:  *               being dispatched to any EventTargets beneath them in the tree.
        !          13119:  *               Events which are bubbling upward through the tree will not
        !          13120:  *               trigger an EventListener designated to use capture.
        !          13121:  * @exc:  Exception Object ref
        !          13122:  *
        !          13123:  * This method allows the registration of event listeners on the event target.
        !          13124:  * If an EventListener is added to an EventTarget while it is processing an
        !          13125:  * event, it will not be triggered by the current actions but may be triggered
        !          13126:  * during a later stage of event flow, such as the bubbling phase.
        !          13127:  * If multiple identical EventListeners are registered on the same EventTarget
        !          13128:  * with the same parameters the duplicate instances are discarded. They do not
        !          13129:  * cause the EventListener to be called twice and since they are discarded
        !          13130:  * they do not need to be removed with the removeEventListener method.
        !          13131:  */
        !          13132: void
        !          13133: gdome_ent_addEventListener (GdomeEntity *self, GdomeDOMString *type, GdomeEventListener *listener, GdomeBoolean useCapture, GdomeException *exc)
        !          13134: {
        !          13135:  if (self == NULL) {
        !          13136:    *exc = GDOME_NULL_POINTER_ERR;
        !          13137:    return;
        !          13138:  }
        !          13139:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          13140:    *exc = GDOME_INVALID_STATE_ERR;
        !          13141:    return;
        !          13142:  }
        !          13143:  *exc = 0;
        !          13144:  ((Gdome_xml_Entity *)self)->vtab->super.addEventListener ((GdomeNode *)self, type, listener, useCapture, exc);
        !          13145: }
        !          13146: /**
        !          13147:  * gdome_ent_removeEventListener:
        !          13148:  * @self:  Node Object ref
        !          13149:  * @type:  Specifies the event type of the EventListener being removed.
        !          13150:  * @listener:  The EventListener parameter indicates the EventListener to be
        !          13151:  *             removed.
        !          13152:  * @useCapture:  Specifies whether the EventListener being removed was
        !          13153:  *               registered as a capturing listener or not. If a listener was
        !          13154:  *               registered twice, one with capture and one without, each must
        !          13155:  *               be removed separately. Removal of a capturing listener does
        !          13156:  *               not affect a non-capturing version of the same listener, and
        !          13157:  *               vice versa.
        !          13158:  * @exc:  Exception Object ref
        !          13159:  *
        !          13160:  * This method allows the removal of event listeners from the event target. If
        !          13161:  * an EventListener is removed from an EventTarget while it is processing an
        !          13162:  * event, it will not be triggered by the current actions. EventListeners can
        !          13163:  * never be invoked after being removed. Calling removeEventListener with
        !          13164:  * arguments which do not identify any currently registered EventListener on
        !          13165:  * the EventTarget has no effect.
        !          13166:  */
        !          13167: void
        !          13168: gdome_ent_removeEventListener (GdomeEntity *self, GdomeDOMString *type, GdomeEventListener *listener, GdomeBoolean useCapture, GdomeException *exc)
        !          13169: {
        !          13170:  if (self == NULL) {
        !          13171:    *exc = GDOME_NULL_POINTER_ERR;
        !          13172:    return;
        !          13173:  }
        !          13174:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          13175:    *exc = GDOME_INVALID_STATE_ERR;
        !          13176:    return;
        !          13177:  }
        !          13178:  *exc = 0;
        !          13179:  ((Gdome_xml_Entity *)self)->vtab->super.removeEventListener ((GdomeNode *)self, type, listener, useCapture, exc);
        !          13180: }
        !          13181: /**
        !          13182:  * gdome_ent_dispatchEvent:
        !          13183:  * @self:  Node Object ref
        !          13184:  * @evt:  Specifies the event type, behavior, and contextual information to be
        !          13185:  *        used in processing the event.
        !          13186:  * @exc:  Exception Object ref
        !          13187:  *
        !          13188:  * This method allows the dispatch of events into the implementations event
        !          13189:  * model. Events dispatched in this manner will have the same capturing and
        !          13190:  * bubbling behavior as events dispatched directly by the implementation. The
        !          13191:  * target of the event is the EventTarget on which dispatchEvent is called.
        !          13192:  *
        !          13193:  * GDOME_UNSPECIFIED_EVENT_TYPE_ERR: Raised if the Event's type was not
        !          13194:  * specified by initializing the event before dispatchEvent was called.
        !          13195:  * Specification of the Event's type as %NULL or an empty string will also
        !          13196:  * trigger this exception.
        !          13197:  * Returns: if preventDefault was called the value is %FALSE, else the value
        !          13198:  *          is %TRUE.
        !          13199:  */
        !          13200: GdomeBoolean
        !          13201: gdome_ent_dispatchEvent (GdomeEntity *self, GdomeEvent *evt, GdomeException *exc)
        !          13202: {
        !          13203:  if (self == NULL) {
        !          13204:    *exc = GDOME_NULL_POINTER_ERR;
        !          13205:    return FALSE;
        !          13206:  }
        !          13207:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          13208:    *exc = GDOME_INVALID_STATE_ERR;
        !          13209:    return FALSE;
        !          13210:  }
        !          13211:  *exc = 0;
        !          13212:  return ((Gdome_xml_Entity *)self)->vtab->super.dispatchEvent ((GdomeNode *)self, evt, exc);
        !          13213: }
        !          13214: /**
        !          13215:  * gdome_ent_subTreeDispatchEvent:
        !          13216:  * @self:  Node Object ref
        !          13217:  * @evt:  Specifies the event type, behavior, and contextual information to be
        !          13218:  *        used in processing the event.
        !          13219:  * @exc:  Exception Object ref
        !          13220:  *
        !          13221:  * This method allows the dispatch of events into the implementations event
        !          13222:  * model. Events dispatched in this manner will have the same capturing and
        !          13223:  * bubbling behavior as events dispatched directly by the implementation. The
        !          13224:  * target of the event is any nodes in the subtree of the EventTarget on which
        !          13225:  * dispatchEvent is called.
        !          13226:  *
        !          13227:  * GDOME_UNSPECIFIED_EVENT_TYPE_ERR: Raised if the Event's type was not
        !          13228:  * specified by initializing the event before dispatchEvent was called.
        !          13229:  * Specification of the Event's type as %NULL or an empty string will also
        !          13230:  * trigger this exception.
        !          13231:  */
        !          13232: void
        !          13233: gdome_ent_subTreeDispatchEvent (GdomeEntity *self, GdomeEvent *evt, GdomeException *exc)
        !          13234: {
        !          13235:  if (self == NULL) {
        !          13236:    *exc = GDOME_NULL_POINTER_ERR;
        !          13237:    return;
        !          13238:  }
        !          13239:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          13240:    *exc = GDOME_INVALID_STATE_ERR;
        !          13241:    return;
        !          13242:  }
        !          13243:  *exc = 0;
        !          13244:  ((Gdome_xml_Entity *)self)->vtab->super.subTreeDispatchEvent ((GdomeNode *)self, evt, exc);
        !          13245: }
        !          13246: /**
        !          13247:  * gdome_ent_canAppend:
        !          13248:  * @self:  Node Object ref
        !          13249:  * @newChild:  The Node Object ref of the node to test
        !          13250:  * @exc:  Exception Object ref
        !          13251:  *
        !          13252:  * Tests if a @newChild can be added in the child list of this node.
        !          13253:  * Returns: %TRUE if @newChild can be added, %FALSE otherwise.
        !          13254:  */
        !          13255: GdomeBoolean
        !          13256: gdome_ent_canAppend (GdomeEntity *self, GdomeNode *newChild, GdomeException *exc)
        !          13257: {
        !          13258:  if (self == NULL) {
        !          13259:    *exc = GDOME_NULL_POINTER_ERR;
        !          13260:    return FALSE;
        !          13261:  }
        !          13262:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          13263:    *exc = GDOME_INVALID_STATE_ERR;
        !          13264:    return FALSE;
        !          13265:  }
        !          13266:  *exc = 0;
        !          13267:  return ((Gdome_xml_Entity *)self)->vtab->super.canAppend ((GdomeNode *)self, newChild, exc);
        !          13268: }
        !          13269: 
        !          13270: /******************************************************************************
        !          13271:           GdomeEntityReference interface API
        !          13272:  ******************************************************************************/
        !          13273: /**
        !          13274:  * gdome_er_attributes:
        !          13275:  * @self:  Node Object ref
        !          13276:  * @exc:  Exception Object ref
        !          13277:  *
        !          13278:  * Returns: a NamedNodeMap containing the attributes of this node (if it is an
        !          13279:  * Element) or %NULL otherwise.
        !          13280:  */
        !          13281: GdomeNamedNodeMap *
        !          13282: gdome_er_attributes (GdomeEntityReference *self, GdomeException *exc)
        !          13283: {
        !          13284:  if (self == NULL) {
        !          13285:    *exc = GDOME_NULL_POINTER_ERR;
        !          13286:    return NULL;
        !          13287:  }
        !          13288:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          13289:    *exc = GDOME_INVALID_STATE_ERR;
        !          13290:    return NULL;
        !          13291:  }
        !          13292:  *exc = 0;
        !          13293:  return ((Gdome_xml_EntityReference *)self)->vtab->super.attributes ((GdomeNode *)self, exc);
        !          13294: }
        !          13295: /**
        !          13296:  * gdome_er_childNodes:
        !          13297:  * @self:  Node Object ref
        !          13298:  * @exc:  Exception Object ref
        !          13299:  *
        !          13300:  * Returns: a NodeList that contains all children of this node. If there are no
        !          13301:  * children, this is a NodeList containing no nodes.  Note that attributes are
        !          13302:  * not considered to be children of element nodes - use gdome_n_attributes to
        !          13303:  * obtain the attributes.
        !          13304:  */
        !          13305: GdomeNodeList *
        !          13306: gdome_er_childNodes (GdomeEntityReference *self, GdomeException *exc)
        !          13307: {
        !          13308:  if (self == NULL) {
        !          13309:    *exc = GDOME_NULL_POINTER_ERR;
        !          13310:    return NULL;
        !          13311:  }
        !          13312:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          13313:    *exc = GDOME_INVALID_STATE_ERR;
        !          13314:    return NULL;
        !          13315:  }
        !          13316:  *exc = 0;
        !          13317:  return ((Gdome_xml_EntityReference *)self)->vtab->super.childNodes ((GdomeNode *)self, exc);
        !          13318: }
        !          13319: /**
        !          13320:  * gdome_er_firstChild:
        !          13321:  * @self:  Node Object ref
        !          13322:  * @exc:  Exception Object ref
        !          13323:  * 
        !          13324:  * Returns: the first child of this node. If there is no such node,
        !          13325:  * this returns %NULL.
        !          13326:  */
        !          13327: GdomeNode *
        !          13328: gdome_er_firstChild (GdomeEntityReference *self, GdomeException *exc)
        !          13329: {
        !          13330:  if (self == NULL) {
        !          13331:    *exc = GDOME_NULL_POINTER_ERR;
        !          13332:    return NULL;
        !          13333:  }
        !          13334:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          13335:    *exc = GDOME_INVALID_STATE_ERR;
        !          13336:    return NULL;
        !          13337:  }
        !          13338:  *exc = 0;
        !          13339:  return ((Gdome_xml_EntityReference *)self)->vtab->super.firstChild ((GdomeNode *)self, exc);
        !          13340: }
        !          13341: /**
        !          13342:  * gdome_er_lastChild:
        !          13343:  * @self:  Node Object ref
        !          13344:  * @exc:  Exception Object ref
        !          13345:  *
        !          13346:  * Returns: the last child of this node. If there is no such node,
        !          13347:  * this returns %NULL.
        !          13348:  */
        !          13349: GdomeNode *
        !          13350: gdome_er_lastChild (GdomeEntityReference *self, GdomeException *exc)
        !          13351: {
        !          13352:  if (self == NULL) {
        !          13353:    *exc = GDOME_NULL_POINTER_ERR;
        !          13354:    return NULL;
        !          13355:  }
        !          13356:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          13357:    *exc = GDOME_INVALID_STATE_ERR;
        !          13358:    return NULL;
        !          13359:  }
        !          13360:  *exc = 0;
        !          13361:  return ((Gdome_xml_EntityReference *)self)->vtab->super.lastChild ((GdomeNode *)self, exc);
        !          13362: }
        !          13363: /**
        !          13364:  * gdome_er_localName:
        !          13365:  * @self:  Node Objects ref
        !          13366:  * @exc:  Exception Object ref
        !          13367:  *
        !          13368:  * Returns: the local part of the qualified name of this node.
        !          13369:  * For nodes of any type other than %GDOME_ELEMENT_NODE and
        !          13370:  * %GDOME_ATTRIBUTE_NODE and nodes created with a DOM Level 1 method, this is
        !          13371:  * always %NULL.
        !          13372:  */
        !          13373: GdomeDOMString *
        !          13374: gdome_er_localName (GdomeEntityReference *self, GdomeException *exc)
        !          13375: {
        !          13376:  if (self == NULL) {
        !          13377:    *exc = GDOME_NULL_POINTER_ERR;
        !          13378:    return NULL;
        !          13379:  }
        !          13380:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          13381:    *exc = GDOME_INVALID_STATE_ERR;
        !          13382:    return NULL;
        !          13383:  }
        !          13384:  *exc = 0;
        !          13385:  return ((Gdome_xml_EntityReference *)self)->vtab->super.localName ((GdomeNode *)self, exc);
        !          13386: }
        !          13387: /**
        !          13388:  * gdome_er_namespaceURI:
        !          13389:  * @self:  Node Objects ref
        !          13390:  * @exc:  Exception Object ref
        !          13391:  *
        !          13392:  * Returns: the namespace URI of this node, or %NULL if it is unspecified.
        !          13393:  * For nodes of any type other than %GDOME_ELEMENT_NODE and
        !          13394:  * %GDOME_ATTRIBUTE_NODE and nodes created with a DOM Level 1 method, this is
        !          13395:  * always %NULL.
        !          13396:  */
        !          13397: GdomeDOMString *
        !          13398: gdome_er_namespaceURI (GdomeEntityReference *self, GdomeException *exc)
        !          13399: {
        !          13400:  if (self == NULL) {
        !          13401:    *exc = GDOME_NULL_POINTER_ERR;
        !          13402:    return NULL;
        !          13403:  }
        !          13404:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          13405:    *exc = GDOME_INVALID_STATE_ERR;
        !          13406:    return NULL;
        !          13407:  }
        !          13408:  *exc = 0;
        !          13409:  return ((Gdome_xml_EntityReference *)self)->vtab->super.namespaceURI ((GdomeNode *)self, exc);
        !          13410: }
        !          13411: /**
        !          13412:  * gdome_er_nextSibling:
        !          13413:  * @self:  Node Object ref
        !          13414:  * @exc:  Exception Object ref
        !          13415:  *
        !          13416:  * Returns: the node immediately following this node. If there is no such
        !          13417:  * node, this returns %NULL.
        !          13418:  */
        !          13419: GdomeNode *
        !          13420: gdome_er_nextSibling (GdomeEntityReference *self, GdomeException *exc)
        !          13421: {
        !          13422:  if (self == NULL) {
        !          13423:    *exc = GDOME_NULL_POINTER_ERR;
        !          13424:    return NULL;
        !          13425:  }
        !          13426:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          13427:    *exc = GDOME_INVALID_STATE_ERR;
        !          13428:    return NULL;
        !          13429:  }
        !          13430:  *exc = 0;
        !          13431:  return ((Gdome_xml_EntityReference *)self)->vtab->super.nextSibling ((GdomeNode *)self, exc);
        !          13432: }
        !          13433: /**
        !          13434:  * gdome_er_nodeName:
        !          13435:  * @self:  Node Object ref
        !          13436:  * @exc:  Exception Object ref
        !          13437:  *
        !          13438:  * Returns: the name of this node, depending on its type.
        !          13439:  */
        !          13440: GdomeDOMString *
        !          13441: gdome_er_nodeName (GdomeEntityReference *self, GdomeException *exc)
        !          13442: {
        !          13443:  if (self == NULL) {
        !          13444:    *exc = GDOME_NULL_POINTER_ERR;
        !          13445:    return NULL;
        !          13446:  }
        !          13447:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          13448:    *exc = GDOME_INVALID_STATE_ERR;
        !          13449:    return NULL;
        !          13450:  }
        !          13451:  *exc = 0;
        !          13452:  return ((Gdome_xml_EntityReference *)self)->vtab->super.nodeName ((GdomeNode *)self, exc);
        !          13453: }
        !          13454: /**
        !          13455:  * gdome_er_nodeType:
        !          13456:  * @self:  Node Object ref
        !          13457:  * @exc:  Exception Object ref
        !          13458:  *
        !          13459:  * Returns: an integer bigger than %0 representing the type of the underlying
        !          13460:  * object or %0 on error.
        !          13461:  */
        !          13462: unsigned short
        !          13463: gdome_er_nodeType (GdomeEntityReference *self, GdomeException *exc)
        !          13464: {
        !          13465:  if (self == NULL) {
        !          13466:    *exc = GDOME_NULL_POINTER_ERR;
        !          13467:    return 0;
        !          13468:  }
        !          13469:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          13470:    *exc = GDOME_INVALID_STATE_ERR;
        !          13471:    return 0;
        !          13472:  }
        !          13473:  *exc = 0;
        !          13474:  return ((Gdome_xml_EntityReference *)self)->vtab->super.nodeType ((GdomeNode *)self, exc);
        !          13475: }
        !          13476: /**
        !          13477:  * gdome_er_nodeValue:
        !          13478:  * @self:  Node Object ref
        !          13479:  * @exc:  Exception Object ref
        !          13480:  *
        !          13481:  * Returns: the value of this node, depending on its type.
        !          13482:  */
        !          13483: GdomeDOMString *
        !          13484: gdome_er_nodeValue (GdomeEntityReference *self, GdomeException *exc)
        !          13485: {
        !          13486:  if (self == NULL) {
        !          13487:    *exc = GDOME_NULL_POINTER_ERR;
        !          13488:    return NULL;
        !          13489:  }
        !          13490:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          13491:    *exc = GDOME_INVALID_STATE_ERR;
        !          13492:    return NULL;
        !          13493:  }
        !          13494:  *exc = 0;
        !          13495:  return ((Gdome_xml_EntityReference *)self)->vtab->super.nodeValue ((GdomeNode *)self, exc);
        !          13496: }
        !          13497: /**
        !          13498:  * gdome_er_set_nodeValue:
        !          13499:  * @self:  Node Object ref
        !          13500:  * @nodeValue:  The new value for this node.
        !          13501:  * @exc:  Exception Object ref
        !          13502:  *
        !          13503:  * Sets The value of this node, depending on its type.
        !          13504:  *
        !          13505:  * %GDOME_NO_MODIFICATION_ALLOWED_ERR: Raised when the node is readonly.
        !          13506:  */
        !          13507: void
        !          13508: gdome_er_set_nodeValue (GdomeEntityReference *self, GdomeDOMString *nodeValue, GdomeException *exc)
        !          13509: {
        !          13510:  if (self == NULL) {
        !          13511:    *exc = GDOME_NULL_POINTER_ERR;
        !          13512:    return;
        !          13513:  }
        !          13514:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          13515:    *exc = GDOME_INVALID_STATE_ERR;
        !          13516:    return;
        !          13517:  }
        !          13518:  *exc = 0;
        !          13519:  ((Gdome_xml_EntityReference *)self)->vtab->super.set_nodeValue ((GdomeNode *)self, nodeValue, exc);
        !          13520: }
        !          13521: /**
        !          13522:  * gdome_er_ownerDocument:
        !          13523:  * @self:  Node Objects ref
        !          13524:  * @exc:  Exception Object ref
        !          13525:  *
        !          13526:  * Returns: the documment object associated with this node. This is also the
        !          13527:  * Document object used to create new nodes. When this node is a Document or a
        !          13528:  * DocumentType which is not used with any Document yet, this is %NULL.
        !          13529:  */
        !          13530: GdomeDocument *
        !          13531: gdome_er_ownerDocument (GdomeEntityReference *self, GdomeException *exc)
        !          13532: {
        !          13533:  if (self == NULL) {
        !          13534:    *exc = GDOME_NULL_POINTER_ERR;
        !          13535:    return NULL;
        !          13536:  }
        !          13537:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          13538:    *exc = GDOME_INVALID_STATE_ERR;
        !          13539:    return NULL;
        !          13540:  }
        !          13541:  *exc = 0;
        !          13542:  return ((Gdome_xml_EntityReference *)self)->vtab->super.ownerDocument ((GdomeNode *)self, exc);
        !          13543: }
        !          13544: /**
        !          13545:  * gdome_er_parentNode:
        !          13546:  * @self: Node Object ref
        !          13547:  * @exc: Exception Object ref
        !          13548:  *
        !          13549:  * Returns: the parent of this node. All nodes, except Attr,
        !          13550:  * Document, DocumentFragment, Entity, and Notation may have a parent. However,
        !          13551:  * if a node has just been created and not yet added to the tree, or if it has
        !          13552:  * been removed from the tree, this is %NULL.
        !          13553:  */
        !          13554: GdomeNode *
        !          13555: gdome_er_parentNode (GdomeEntityReference *self, GdomeException *exc)
        !          13556: {
        !          13557:  if (self == NULL) {
        !          13558:    *exc = GDOME_NULL_POINTER_ERR;
        !          13559:    return NULL;
        !          13560:  }
        !          13561:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          13562:    *exc = GDOME_INVALID_STATE_ERR;
        !          13563:    return NULL;
        !          13564:  }
        !          13565:  *exc = 0;
        !          13566:  return ((Gdome_xml_EntityReference *)self)->vtab->super.parentNode ((GdomeNode *)self, exc);
        !          13567: }
        !          13568: /**
        !          13569:  * gdome_er_prefix:
        !          13570:  * @self:  Node Objects ref
        !          13571:  * @exc:  Exception Object ref
        !          13572:  *
        !          13573:  * Returns: the namespace prefix of this node, or %NULL if it is unspecified.
        !          13574:  * For nodes of any type other than %GDOME_ELEMENT_NODE and
        !          13575:  * %GDOME_ATTRIBUTE_NODE and nodes created with a DOM Level 1 method, this is
        !          13576:  * always %NULL.
        !          13577:  */
        !          13578: GdomeDOMString *
        !          13579: gdome_er_prefix (GdomeEntityReference *self, GdomeException *exc)
        !          13580: {
        !          13581:  if (self == NULL) {
        !          13582:    *exc = GDOME_NULL_POINTER_ERR;
        !          13583:    return NULL;
        !          13584:  }
        !          13585:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          13586:    *exc = GDOME_INVALID_STATE_ERR;
        !          13587:    return NULL;
        !          13588:  }
        !          13589:  *exc = 0;
        !          13590:  return ((Gdome_xml_EntityReference *)self)->vtab->super.prefix ((GdomeNode *)self, exc);
        !          13591: }
        !          13592: /**
        !          13593:  * gdome_er_set_prefix:
        !          13594:  * @self:  Node Object ref
        !          13595:  * @prefix:  The new prefix for this node.
        !          13596:  * @exc:  Exception Object ref
        !          13597:  *
        !          13598:  * Sets a new nemaspace prefix for this node.
        !          13599:  *
        !          13600:  * %GDOME_NO_MODIFICATION_ALLOWED_ERR: Raised when the node is readonly.
        !          13601:  * %GDOME_NAMESPACE_ERR: Raised if the specified @prefix is malformed per the
        !          13602:  * Namespaces in XML specification, if the namespaceURI of this node is %NULL,
        !          13603:  * if the specified prefix is "xml" and the namespaceURI of this node is
        !          13604:  * different from "http://www.w3.org/XML/1998/namespace", if this node is an
        !          13605:  * attribute and the specified prefix is "xmlns" and the namespaceURI of this
        !          13606:  * node is different from "http://www.w3.org/2000/xmlns/", or if this node is
        !          13607:  * an attribute and the qualifiedName of this node is "xmlns".
        !          13608:  */
        !          13609: void
        !          13610: gdome_er_set_prefix (GdomeEntityReference *self, GdomeDOMString *prefix, GdomeException *exc)
        !          13611: {
        !          13612:  if (self == NULL) {
        !          13613:    *exc = GDOME_NULL_POINTER_ERR;
        !          13614:    return;
        !          13615:  }
        !          13616:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          13617:    *exc = GDOME_INVALID_STATE_ERR;
        !          13618:    return;
        !          13619:  }
        !          13620:  *exc = 0;
        !          13621:  ((Gdome_xml_EntityReference *)self)->vtab->super.set_prefix ((GdomeNode *)self, prefix, exc);
        !          13622: }
        !          13623: /**
        !          13624:  * gdome_er_previousSibling:
        !          13625:  * @self:  Node Object ref
        !          13626:  * @exc:  Exception Object ref
        !          13627:  *
        !          13628:  * Returns: the node immediately preceding this node. If there is no such
        !          13629:  * node, this returns %NULL.
        !          13630:  */
        !          13631: GdomeNode *
        !          13632: gdome_er_previousSibling (GdomeEntityReference *self, GdomeException *exc)
        !          13633: {
        !          13634:  if (self == NULL) {
        !          13635:    *exc = GDOME_NULL_POINTER_ERR;
        !          13636:    return NULL;
        !          13637:  }
        !          13638:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          13639:    *exc = GDOME_INVALID_STATE_ERR;
        !          13640:    return NULL;
        !          13641:  }
        !          13642:  *exc = 0;
        !          13643:  return ((Gdome_xml_EntityReference *)self)->vtab->super.previousSibling ((GdomeNode *)self, exc);
        !          13644: }
        !          13645: /**
        !          13646:  * gdome_er_ref:
        !          13647:  * @self:  Node Object ref
        !          13648:  * @exc:  Exception Object ref
        !          13649:  *
        !          13650:  * Increase the reference count of the specified Node.
        !          13651:  */
        !          13652: void
        !          13653: gdome_er_ref (GdomeEntityReference *self, GdomeException *exc)
        !          13654: {
        !          13655:  if (self == NULL) {
        !          13656:    *exc = GDOME_NULL_POINTER_ERR;
        !          13657:    return;
        !          13658:  }
        !          13659:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          13660:    *exc = GDOME_INVALID_STATE_ERR;
        !          13661:    return;
        !          13662:  }
        !          13663:  *exc = 0;
        !          13664:  ((Gdome_xml_EntityReference *)self)->vtab->super.ref ((GdomeNode *)self, exc);
        !          13665: }
        !          13666: /**
        !          13667:  * gdome_er_unref:
        !          13668:  * @self:  Node Object ref
        !          13669:  * @exc:  Exception Object ref
        !          13670:  *
        !          13671:  * Decrease the reference count of the specified Node. Free the Node structure
        !          13672:  * if the Node will have zero reference.
        !          13673:  */
        !          13674: void
        !          13675: gdome_er_unref (GdomeEntityReference *self, GdomeException *exc)
        !          13676: {
        !          13677:  if (self == NULL) {
        !          13678:    *exc = GDOME_NULL_POINTER_ERR;
        !          13679:    return;
        !          13680:  }
        !          13681:  *exc = 0;
        !          13682:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          13683:    if (((Gdome_xml_Node *)self)->refcnt > 0)
        !          13684:      ((Gdome_xml_Node *)self)->refcnt--;
        !          13685: 
        !          13686:    if (((Gdome_xml_Node *)self)->refcnt == 0 && ((Gdome_xml_Node *)self)->ll == NULL) {
        !          13687: #ifdef DEBUG_REFCNT
        !          13688:      gdome_refdbg_delRef ((void *)self, GDOME_REFDBG_NODE);
        !          13689: #endif
        !          13690:      g_free (self);
        !          13691:    }
        !          13692:    return;
        !          13693:  }
        !          13694:  ((Gdome_xml_EntityReference *)self)->vtab->super.unref ((GdomeNode *)self, exc);
        !          13695: }
        !          13696: /**
        !          13697:  * gdome_er_query_interface:
        !          13698:  * @self:  Node Object ref
        !          13699:  * @interface:  interface needed
        !          13700:  * @exc:  Exception Object ref
        !          13701:  *
        !          13702:  * Returns: a reference to this object that implements the @interface needed,
        !          13703:  *          or %NULL if the @interface is not supported by this Object.
        !          13704:  */
        !          13705: gpointer
        !          13706: gdome_er_query_interface (GdomeEntityReference *self, const char *interface, GdomeException *exc)
        !          13707: {
        !          13708:  if (self == NULL) {
        !          13709:    *exc = GDOME_NULL_POINTER_ERR;
        !          13710:    return NULL;
        !          13711:  }
        !          13712:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          13713:    *exc = GDOME_INVALID_STATE_ERR;
        !          13714:    return NULL;
        !          13715:  }
        !          13716:  *exc = 0;
        !          13717:  return ((Gdome_xml_EntityReference *)self)->vtab->super.query_interface ((GdomeNode *)self, interface, exc);
        !          13718: }
        !          13719: /**
        !          13720:  * gdome_er_appendChild:
        !          13721:  * @self:  Node Object ref
        !          13722:  * @newChild:  The node to add
        !          13723:  * @exc:  Exception Object ref
        !          13724:  *
        !          13725:  * Adds the node @newChild to the end of the list of children of this node.
        !          13726:  * If the @newChild is already in the tree, it is first removed. If it is a
        !          13727:  * DocumentFragment node, the entire contents of the document fragment are
        !          13728:  * moved into the child list of this node
        !          13729:  *
        !          13730:  * %GDOME_HIERARCHY_REQUEST_ERR: Raised if this node is of a type that does not
        !          13731:  * allow children of the type of the @newChild node, or if the node to append is
        !          13732:  * one of this node's ancestors or this node itself.
        !          13733:  * %GDOME_WRONG_DOCUMENT_ERR: Raised if @newChild was created from a different
        !          13734:  * document than the one that created this node.
        !          13735:  * %GDOME_NO_MODIFICATION_ALLOWED_ERR: Raised when the node is readonly.
        !          13736:  * Returns: the node added.
        !          13737:  */
        !          13738: GdomeNode *
        !          13739: gdome_er_appendChild (GdomeEntityReference *self, GdomeNode *newChild, GdomeException *exc)
        !          13740: {
        !          13741:  if (self == NULL) {
        !          13742:    *exc = GDOME_NULL_POINTER_ERR;
        !          13743:    return NULL;
        !          13744:  }
        !          13745:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          13746:    *exc = GDOME_INVALID_STATE_ERR;
        !          13747:    return NULL;
        !          13748:  }
        !          13749:  *exc = 0;
        !          13750:  return ((Gdome_xml_EntityReference *)self)->vtab->super.appendChild ((GdomeNode *)self, newChild, exc);
        !          13751: }
        !          13752: /**
        !          13753:  * gdome_er_cloneNode:
        !          13754:  * @self:  Node Object ref
        !          13755:  * @deep:  If true, recursively clone the subtree under the specified node;
        !          13756:  *         if false, clone only the node itself (and its attributes, if it is
        !          13757:  *         an Element).
        !          13758:  * @exc:  Exception Object ref
        !          13759:  *
        !          13760:  * Makes a duplicate of this node, i.e., serves as a generic copy
        !          13761:  * constructor for nodes. The duplicate node has no parent; (parentNode is
        !          13762:  * %NULL).
        !          13763:  * %GDOME_DOCUMENT_TYPE_NODE, %GDOME_NOTATION_NODE and %GDOME_ENTITY_NODE
        !          13764:  * nodes are not supported.
        !          13765:  *
        !          13766:  * %GDOME_NOT_SUPPORTED_ERR: Raised if the type of node being cloned is not
        !          13767:  * supported.
        !          13768:  * Returns: the duplicate node.
        !          13769:  */
        !          13770: GdomeNode *
        !          13771: gdome_er_cloneNode (GdomeEntityReference *self, GdomeBoolean deep, GdomeException *exc)
        !          13772: {
        !          13773:  if (self == NULL) {
        !          13774:    *exc = GDOME_NULL_POINTER_ERR;
        !          13775:    return NULL;
        !          13776:  }
        !          13777:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          13778:    *exc = GDOME_INVALID_STATE_ERR;
        !          13779:    return NULL;
        !          13780:  }
        !          13781:  *exc = 0;
        !          13782:  return ((Gdome_xml_EntityReference *)self)->vtab->super.cloneNode ((GdomeNode *)self, deep, exc);
        !          13783: }
        !          13784: /**
        !          13785:  * gdome_er_hasAttributes:
        !          13786:  * @self:  Node Object ref
        !          13787:  * @exc:  Exception Object ref
        !          13788:  *
        !          13789:  * Returns: %TRUE if this node has any attributes, %FALSE otherwise.
        !          13790:  */
        !          13791: GdomeBoolean
        !          13792: gdome_er_hasAttributes (GdomeEntityReference *self, GdomeException *exc)
        !          13793: {
        !          13794:  if (self == NULL) {
        !          13795:    *exc = GDOME_NULL_POINTER_ERR;
        !          13796:    return FALSE;
        !          13797:  }
        !          13798:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          13799:    *exc = GDOME_INVALID_STATE_ERR;
        !          13800:    return FALSE;
        !          13801:  }
        !          13802:  *exc = 0;
        !          13803:  return ((Gdome_xml_EntityReference *)self)->vtab->super.hasAttributes ((GdomeNode *)self, exc);
        !          13804: }
        !          13805: /**
        !          13806:  * gdome_er_hasChildNodes:
        !          13807:  * @self:  Node Object ref
        !          13808:  * @exc:  Exception Object ref
        !          13809:  *
        !          13810:  * Returns: %TRUE if this node has any children, %FALSE otherwise.
        !          13811:  */
        !          13812: GdomeBoolean
        !          13813: gdome_er_hasChildNodes (GdomeEntityReference *self, GdomeException *exc)
        !          13814: {
        !          13815:  if (self == NULL) {
        !          13816:    *exc = GDOME_NULL_POINTER_ERR;
        !          13817:    return FALSE;
        !          13818:  }
        !          13819:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          13820:    *exc = GDOME_INVALID_STATE_ERR;
        !          13821:    return FALSE;
        !          13822:  }
        !          13823:  *exc = 0;
        !          13824:  return ((Gdome_xml_EntityReference *)self)->vtab->super.hasChildNodes ((GdomeNode *)self, exc);
        !          13825: }
        !          13826: /**
        !          13827:  * gdome_er_insertBefore:
        !          13828:  * @self:  Node Object ref
        !          13829:  * @newChild:  The new node to put in the child list
        !          13830:  * @refChild:  the reference node, i.e., the node before which the new node
        !          13831:  *             must be inserted.
        !          13832:  * @exc:  Exception Object ref
        !          13833:  *
        !          13834:  * Inserts the node @newChild before the existing child node @refChild. If
        !          13835:  * @refChild is %NULL, insert @newChild at the end of the list of children.
        !          13836:  * If @newChild is a DocumentFragment node, all of its children are inserted,
        !          13837:  * in the same order, before @refChild. If the @newChild is already in the
        !          13838:  * tree, it is first removed.
        !          13839:  *
        !          13840:  * %GDOME_HIERARCHY_REQUEST_ERR: Raised if this node is of a type that does not
        !          13841:  * allow children of the type of the @newChild node, or if the node to insert is
        !          13842:  * one of this node's ancestors or this node itself.
        !          13843:  * %GDOME_WRONG_DOCUMENT_ERR: Raised if @newChild was created from a different
        !          13844:  * document than the one that created this node.
        !          13845:  * %GDOME_NOT_FOUND_ERR: Raised if @refChild is not a child of this node.
        !          13846:  * %GDOME_NO_MODIFICATION_ALLOWED_ERR: Raised when the node is readonly.
        !          13847:  * Returns: the node being inserted.
        !          13848:  */
        !          13849: GdomeNode *
        !          13850: gdome_er_insertBefore (GdomeEntityReference *self, GdomeNode *newChild, GdomeNode *refChild, GdomeException *exc)
        !          13851: {
        !          13852:  if (self == NULL) {
        !          13853:    *exc = GDOME_NULL_POINTER_ERR;
        !          13854:    return NULL;
        !          13855:  }
        !          13856:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          13857:    *exc = GDOME_INVALID_STATE_ERR;
        !          13858:    return NULL;
        !          13859:  }
        !          13860:  *exc = 0;
        !          13861:  return ((Gdome_xml_EntityReference *)self)->vtab->super.insertBefore ((GdomeNode *)self, newChild, refChild, exc);
        !          13862: }
        !          13863: /**
        !          13864:  * gdome_er_isSupported:
        !          13865:  * @self:  Node Object ref
        !          13866:  * @feature:  The name of the feature to test.
        !          13867:  * @version:  This is the version number of the feature to test. In Level 2,
        !          13868:  *            version 1, this is the string "2.0". If the version is not
        !          13869:  *            specified, supporting any version of the feature will cause the
        !          13870:  *            method to return %TRUE.
        !          13871:  * @exc:  Exception Object ref
        !          13872:  *
        !          13873:  * Tests whether the DOM implementation implements a specific feature and that
        !          13874:  * feature is supported by this node.
        !          13875:  * Returns: %TRUE if the specified feature is supported on this node, %FALSE
        !          13876:  * otherwise.
        !          13877:  */
        !          13878: GdomeBoolean
        !          13879: gdome_er_isSupported (GdomeEntityReference *self, GdomeDOMString *feature, GdomeDOMString *version, GdomeException *exc)
        !          13880: {
        !          13881:  if (self == NULL) {
        !          13882:    *exc = GDOME_NULL_POINTER_ERR;
        !          13883:    return FALSE;
        !          13884:  }
        !          13885:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          13886:    *exc = GDOME_INVALID_STATE_ERR;
        !          13887:    return FALSE;
        !          13888:  }
        !          13889:  *exc = 0;
        !          13890:  return ((Gdome_xml_EntityReference *)self)->vtab->super.isSupported ((GdomeNode *)self, feature, version, exc);
        !          13891: }
        !          13892: /**
        !          13893:  * gdome_er_normalize:
        !          13894:  * @self:  Node Object ref
        !          13895:  * @exc:  Exception Object ref
        !          13896:  *
        !          13897:  * Puts all Text nodes in the full depth of the sub-tree underneath this Node,
        !          13898:  * including attribute nodes, into a "normal" form where only structure (e.g.,
        !          13899:  * elements, comments, processing instructions, CDATA sections, and entity
        !          13900:  * references) separates Text nodes, i.e., there are neither adjacent Text
        !          13901:  * nodes nor empty Text nodes.
        !          13902:  */
        !          13903: void
        !          13904: gdome_er_normalize (GdomeEntityReference *self, GdomeException *exc)
        !          13905: {
        !          13906:  if (self == NULL) {
        !          13907:    *exc = GDOME_NULL_POINTER_ERR;
        !          13908:    return;
        !          13909:  }
        !          13910:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          13911:    *exc = GDOME_INVALID_STATE_ERR;
        !          13912:    return;
        !          13913:  }
        !          13914:  *exc = 0;
        !          13915:  ((Gdome_xml_EntityReference *)self)->vtab->super.normalize ((GdomeNode *)self, exc);
        !          13916: }
        !          13917: /**
        !          13918:  * gdome_er_removeChild:
        !          13919:  * @self:  Node Object ref
        !          13920:  * @oldChild:  The node being removed
        !          13921:  * @exc:  Exception Object ref
        !          13922:  *
        !          13923:  * Removes the child node indicated by @oldChild from the list of children, and
        !          13924:  * returns it.
        !          13925:  *
        !          13926:  * %GDOME_NOT_FOUND_ERR: Raised if @oldChild is not a child of this node.
        !          13927:  * %GDOME_NO_MODIFICATION_ALLOWED_ERR: Raised when the node is readonly.
        !          13928:  * Returns: the node removed.
        !          13929:  */
        !          13930: GdomeNode *
        !          13931: gdome_er_removeChild (GdomeEntityReference *self, GdomeNode *oldChild, GdomeException *exc)
        !          13932: {
        !          13933:  if (self == NULL) {
        !          13934:    *exc = GDOME_NULL_POINTER_ERR;
        !          13935:    return NULL;
        !          13936:  }
        !          13937:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          13938:    *exc = GDOME_INVALID_STATE_ERR;
        !          13939:    return NULL;
        !          13940:  }
        !          13941:  *exc = 0;
        !          13942:  return ((Gdome_xml_EntityReference *)self)->vtab->super.removeChild ((GdomeNode *)self, oldChild, exc);
        !          13943: }
        !          13944: /**
        !          13945:  * gdome_er_replaceChild:
        !          13946:  * @self:  Node Object ref
        !          13947:  * @newChild:  The new node to put in the child list
        !          13948:  * @oldChild:  The node being replaced in the list
        !          13949:  * @exc:  Exception Object ref
        !          13950:  *
        !          13951:  * Replaces the child node @oldChild with @newChild in the list of children,
        !          13952:  * and returns the @oldChild node. If @newChild is a DocumentFragment object,
        !          13953:  * @oldChild is replaced by all of the DocumentFragment children, which are
        !          13954:  * inserted in the same order. If the @newChild is already in the tree, it is
        !          13955:  * first removed.
        !          13956:  *
        !          13957:  * %GDOME_HIERARCHY_REQUEST_ERR: Raised if this node is of a type that does
        !          13958:  * not allow children of the type of the @newChild node, or if the node to put
        !          13959:  * in is one of this node's ancestors or this node itself.
        !          13960:  * %GDOME_WRONG_DOCUMENT_ERR: Raised if @newChild was created from a different
        !          13961:  * document than the one that created this node.
        !          13962:  * %GDOME_NOT_FOUND_ERR: Raised if @oldChild is not a child of this node.
        !          13963:  * %GDOME_NO_MODIFICATION_ALLOWED_ERR: Raised when the node is readonly.
        !          13964:  * Returns: the node replaced.
        !          13965:  */
        !          13966: GdomeNode *
        !          13967: gdome_er_replaceChild (GdomeEntityReference *self, GdomeNode *newChild, GdomeNode *oldChild, GdomeException *exc)
        !          13968: {
        !          13969:  if (self == NULL) {
        !          13970:    *exc = GDOME_NULL_POINTER_ERR;
        !          13971:    return NULL;
        !          13972:  }
        !          13973:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          13974:    *exc = GDOME_INVALID_STATE_ERR;
        !          13975:    return NULL;
        !          13976:  }
        !          13977:  *exc = 0;
        !          13978:  return ((Gdome_xml_EntityReference *)self)->vtab->super.replaceChild ((GdomeNode *)self, newChild, oldChild, exc);
        !          13979: }
        !          13980: /**
        !          13981:  * gdome_er_addEventListener:
        !          13982:  * @self:  Node Object ref
        !          13983:  * @type:  the event type for which the user is registering
        !          13984:  * @listener:  the listener parameter takes an interface implemented by the
        !          13985:  *             user which contains the methods to be called when the event occurs.
        !          13986:  * @useCapture:  if %TRUE, useCapture indicates that the user wishes to initiate
        !          13987:  *               capture. After initiating capture, all events of the specified
        !          13988:  *               type will be dispatched to the registered EventListener before
        !          13989:  *               being dispatched to any EventTargets beneath them in the tree.
        !          13990:  *               Events which are bubbling upward through the tree will not
        !          13991:  *               trigger an EventListener designated to use capture.
        !          13992:  * @exc:  Exception Object ref
        !          13993:  *
        !          13994:  * This method allows the registration of event listeners on the event target.
        !          13995:  * If an EventListener is added to an EventTarget while it is processing an
        !          13996:  * event, it will not be triggered by the current actions but may be triggered
        !          13997:  * during a later stage of event flow, such as the bubbling phase.
        !          13998:  * If multiple identical EventListeners are registered on the same EventTarget
        !          13999:  * with the same parameters the duplicate instances are discarded. They do not
        !          14000:  * cause the EventListener to be called twice and since they are discarded
        !          14001:  * they do not need to be removed with the removeEventListener method.
        !          14002:  */
        !          14003: void
        !          14004: gdome_er_addEventListener (GdomeEntityReference *self, GdomeDOMString *type, GdomeEventListener *listener, GdomeBoolean useCapture, GdomeException *exc)
        !          14005: {
        !          14006:  if (self == NULL) {
        !          14007:    *exc = GDOME_NULL_POINTER_ERR;
        !          14008:    return;
        !          14009:  }
        !          14010:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          14011:    *exc = GDOME_INVALID_STATE_ERR;
        !          14012:    return;
        !          14013:  }
        !          14014:  *exc = 0;
        !          14015:  ((Gdome_xml_EntityReference *)self)->vtab->super.addEventListener ((GdomeNode *)self, type, listener, useCapture, exc);
        !          14016: }
        !          14017: /**
        !          14018:  * gdome_er_removeEventListener:
        !          14019:  * @self:  Node Object ref
        !          14020:  * @type:  Specifies the event type of the EventListener being removed.
        !          14021:  * @listener:  The EventListener parameter indicates the EventListener to be
        !          14022:  *             removed.
        !          14023:  * @useCapture:  Specifies whether the EventListener being removed was
        !          14024:  *               registered as a capturing listener or not. If a listener was
        !          14025:  *               registered twice, one with capture and one without, each must
        !          14026:  *               be removed separately. Removal of a capturing listener does
        !          14027:  *               not affect a non-capturing version of the same listener, and
        !          14028:  *               vice versa.
        !          14029:  * @exc:  Exception Object ref
        !          14030:  *
        !          14031:  * This method allows the removal of event listeners from the event target. If
        !          14032:  * an EventListener is removed from an EventTarget while it is processing an
        !          14033:  * event, it will not be triggered by the current actions. EventListeners can
        !          14034:  * never be invoked after being removed. Calling removeEventListener with
        !          14035:  * arguments which do not identify any currently registered EventListener on
        !          14036:  * the EventTarget has no effect.
        !          14037:  */
        !          14038: void
        !          14039: gdome_er_removeEventListener (GdomeEntityReference *self, GdomeDOMString *type, GdomeEventListener *listener, GdomeBoolean useCapture, GdomeException *exc)
        !          14040: {
        !          14041:  if (self == NULL) {
        !          14042:    *exc = GDOME_NULL_POINTER_ERR;
        !          14043:    return;
        !          14044:  }
        !          14045:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          14046:    *exc = GDOME_INVALID_STATE_ERR;
        !          14047:    return;
        !          14048:  }
        !          14049:  *exc = 0;
        !          14050:  ((Gdome_xml_EntityReference *)self)->vtab->super.removeEventListener ((GdomeNode *)self, type, listener, useCapture, exc);
        !          14051: }
        !          14052: /**
        !          14053:  * gdome_er_dispatchEvent:
        !          14054:  * @self:  Node Object ref
        !          14055:  * @evt:  Specifies the event type, behavior, and contextual information to be
        !          14056:  *        used in processing the event.
        !          14057:  * @exc:  Exception Object ref
        !          14058:  *
        !          14059:  * This method allows the dispatch of events into the implementations event
        !          14060:  * model. Events dispatched in this manner will have the same capturing and
        !          14061:  * bubbling behavior as events dispatched directly by the implementation. The
        !          14062:  * target of the event is the EventTarget on which dispatchEvent is called.
        !          14063:  *
        !          14064:  * GDOME_UNSPECIFIED_EVENT_TYPE_ERR: Raised if the Event's type was not
        !          14065:  * specified by initializing the event before dispatchEvent was called.
        !          14066:  * Specification of the Event's type as %NULL or an empty string will also
        !          14067:  * trigger this exception.
        !          14068:  * Returns: if preventDefault was called the value is %FALSE, else the value
        !          14069:  *          is %TRUE.
        !          14070:  */
        !          14071: GdomeBoolean
        !          14072: gdome_er_dispatchEvent (GdomeEntityReference *self, GdomeEvent *evt, GdomeException *exc)
        !          14073: {
        !          14074:  if (self == NULL) {
        !          14075:    *exc = GDOME_NULL_POINTER_ERR;
        !          14076:    return FALSE;
        !          14077:  }
        !          14078:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          14079:    *exc = GDOME_INVALID_STATE_ERR;
        !          14080:    return FALSE;
        !          14081:  }
        !          14082:  *exc = 0;
        !          14083:  return ((Gdome_xml_EntityReference *)self)->vtab->super.dispatchEvent ((GdomeNode *)self, evt, exc);
        !          14084: }
        !          14085: /**
        !          14086:  * gdome_er_subTreeDispatchEvent:
        !          14087:  * @self:  Node Object ref
        !          14088:  * @evt:  Specifies the event type, behavior, and contextual information to be
        !          14089:  *        used in processing the event.
        !          14090:  * @exc:  Exception Object ref
        !          14091:  *
        !          14092:  * This method allows the dispatch of events into the implementations event
        !          14093:  * model. Events dispatched in this manner will have the same capturing and
        !          14094:  * bubbling behavior as events dispatched directly by the implementation. The
        !          14095:  * target of the event is any nodes in the subtree of the EventTarget on which
        !          14096:  * dispatchEvent is called.
        !          14097:  *
        !          14098:  * GDOME_UNSPECIFIED_EVENT_TYPE_ERR: Raised if the Event's type was not
        !          14099:  * specified by initializing the event before dispatchEvent was called.
        !          14100:  * Specification of the Event's type as %NULL or an empty string will also
        !          14101:  * trigger this exception.
        !          14102:  */
        !          14103: void
        !          14104: gdome_er_subTreeDispatchEvent (GdomeEntityReference *self, GdomeEvent *evt, GdomeException *exc)
        !          14105: {
        !          14106:  if (self == NULL) {
        !          14107:    *exc = GDOME_NULL_POINTER_ERR;
        !          14108:    return;
        !          14109:  }
        !          14110:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          14111:    *exc = GDOME_INVALID_STATE_ERR;
        !          14112:    return;
        !          14113:  }
        !          14114:  *exc = 0;
        !          14115:  ((Gdome_xml_EntityReference *)self)->vtab->super.subTreeDispatchEvent ((GdomeNode *)self, evt, exc);
        !          14116: }
        !          14117: /**
        !          14118:  * gdome_er_canAppend:
        !          14119:  * @self:  Node Object ref
        !          14120:  * @newChild:  The Node Object ref of the node to test
        !          14121:  * @exc:  Exception Object ref
        !          14122:  *
        !          14123:  * Tests if a @newChild can be added in the child list of this node.
        !          14124:  * Returns: %TRUE if @newChild can be added, %FALSE otherwise.
        !          14125:  */
        !          14126: GdomeBoolean
        !          14127: gdome_er_canAppend (GdomeEntityReference *self, GdomeNode *newChild, GdomeException *exc)
        !          14128: {
        !          14129:  if (self == NULL) {
        !          14130:    *exc = GDOME_NULL_POINTER_ERR;
        !          14131:    return FALSE;
        !          14132:  }
        !          14133:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          14134:    *exc = GDOME_INVALID_STATE_ERR;
        !          14135:    return FALSE;
        !          14136:  }
        !          14137:  *exc = 0;
        !          14138:  return ((Gdome_xml_EntityReference *)self)->vtab->super.canAppend ((GdomeNode *)self, newChild, exc);
        !          14139: }
        !          14140: 
        !          14141: /******************************************************************************
        !          14142:           GdomeProcessingInstruction interface API
        !          14143:  ******************************************************************************/
        !          14144: /**
        !          14145:  * gdome_pi_data:
        !          14146:  * @self:  ProcessingInstruction Object ref
        !          14147:  * @exc:  Exception Object ref
        !          14148:  *
        !          14149:  * Returns: the content of this processing instruction. This is from the first
        !          14150:  * non white space character after the target to the character immediately
        !          14151:  * preceding the %?>.
        !          14152:  */
        !          14153: GdomeDOMString *
        !          14154: gdome_pi_data (GdomeProcessingInstruction *self, GdomeException *exc)
        !          14155: {
        !          14156:  if (self == NULL) {
        !          14157:    *exc = GDOME_NULL_POINTER_ERR;
        !          14158:    return NULL;
        !          14159:  }
        !          14160:  if (((Gdome_xml_EntityReference *)self)->n == NULL) {
        !          14161:    *exc = GDOME_INVALID_STATE_ERR;
        !          14162:    return NULL;
        !          14163:  }
        !          14164:  *exc = 0;
        !          14165:  return ((Gdome_xml_ProcessingInstruction *)self)->vtab->data (self, exc);
        !          14166: }
        !          14167: /**
        !          14168:  * gdome_pi_set_data:
        !          14169:  * @self:  ProcessingInstruction Object ref
        !          14170:  * @data:  The string of data to be set
        !          14171:  * @exc:  Exception Object ref
        !          14172:  *
        !          14173:  * Set the content of this processing instruction.
        !          14174:  *
        !          14175:  * %GDOME_NO_MODIFICATION_ALLOWED_ERR: Raised when the node is readonly.
        !          14176:  */
        !          14177: void
        !          14178: gdome_pi_set_data (GdomeProcessingInstruction *self, GdomeDOMString *data, GdomeException *exc)
        !          14179: {
        !          14180:  if (self == NULL) {
        !          14181:    *exc = GDOME_NULL_POINTER_ERR;
        !          14182:    return;
        !          14183:  }
        !          14184:  if (((Gdome_xml_EntityReference *)self)->n == NULL) {
        !          14185:    *exc = GDOME_INVALID_STATE_ERR;
        !          14186:    return;
        !          14187:  }
        !          14188:  *exc = 0;
        !          14189:  ((Gdome_xml_ProcessingInstruction *)self)->vtab->set_data (self, data, exc);
        !          14190: }
        !          14191: /**
        !          14192:  * gdome_pi_target:
        !          14193:  * @self:  ProcessingInstruction Object ref
        !          14194:  * @exc:  Exception Object ref
        !          14195:  *
        !          14196:  * Returns: the target of this processing instruction. XML defines this as being
        !          14197:  * the first token following the markup that begins the processing instruction.
        !          14198:  */
        !          14199: GdomeDOMString *
        !          14200: gdome_pi_target (GdomeProcessingInstruction *self, GdomeException *exc)
        !          14201: {
        !          14202:  if (self == NULL) {
        !          14203:    *exc = GDOME_NULL_POINTER_ERR;
        !          14204:    return NULL;
        !          14205:  }
        !          14206:  if (((Gdome_xml_EntityReference *)self)->n == NULL) {
        !          14207:    *exc = GDOME_INVALID_STATE_ERR;
        !          14208:    return NULL;
        !          14209:  }
        !          14210:  *exc = 0;
        !          14211:  return ((Gdome_xml_ProcessingInstruction *)self)->vtab->target (self, exc);
        !          14212: }
        !          14213: /**
        !          14214:  * gdome_pi_attributes:
        !          14215:  * @self:  Node Object ref
        !          14216:  * @exc:  Exception Object ref
        !          14217:  *
        !          14218:  * Returns: a NamedNodeMap containing the attributes of this node (if it is an
        !          14219:  * Element) or %NULL otherwise.
        !          14220:  */
        !          14221: GdomeNamedNodeMap *
        !          14222: gdome_pi_attributes (GdomeProcessingInstruction *self, GdomeException *exc)
        !          14223: {
        !          14224:  if (self == NULL) {
        !          14225:    *exc = GDOME_NULL_POINTER_ERR;
        !          14226:    return NULL;
        !          14227:  }
        !          14228:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          14229:    *exc = GDOME_INVALID_STATE_ERR;
        !          14230:    return NULL;
        !          14231:  }
        !          14232:  *exc = 0;
        !          14233:  return ((Gdome_xml_ProcessingInstruction *)self)->vtab->super.attributes ((GdomeNode *)self, exc);
        !          14234: }
        !          14235: /**
        !          14236:  * gdome_pi_childNodes:
        !          14237:  * @self:  Node Object ref
        !          14238:  * @exc:  Exception Object ref
        !          14239:  *
        !          14240:  * Returns: a NodeList that contains all children of this node. If there are no
        !          14241:  * children, this is a NodeList containing no nodes.  Note that attributes are
        !          14242:  * not considered to be children of element nodes - use gdome_n_attributes to
        !          14243:  * obtain the attributes.
        !          14244:  */
        !          14245: GdomeNodeList *
        !          14246: gdome_pi_childNodes (GdomeProcessingInstruction *self, GdomeException *exc)
        !          14247: {
        !          14248:  if (self == NULL) {
        !          14249:    *exc = GDOME_NULL_POINTER_ERR;
        !          14250:    return NULL;
        !          14251:  }
        !          14252:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          14253:    *exc = GDOME_INVALID_STATE_ERR;
        !          14254:    return NULL;
        !          14255:  }
        !          14256:  *exc = 0;
        !          14257:  return ((Gdome_xml_ProcessingInstruction *)self)->vtab->super.childNodes ((GdomeNode *)self, exc);
        !          14258: }
        !          14259: /**
        !          14260:  * gdome_pi_firstChild:
        !          14261:  * @self:  Node Object ref
        !          14262:  * @exc:  Exception Object ref
        !          14263:  * 
        !          14264:  * Returns: the first child of this node. If there is no such node,
        !          14265:  * this returns %NULL.
        !          14266:  */
        !          14267: GdomeNode *
        !          14268: gdome_pi_firstChild (GdomeProcessingInstruction *self, GdomeException *exc)
        !          14269: {
        !          14270:  if (self == NULL) {
        !          14271:    *exc = GDOME_NULL_POINTER_ERR;
        !          14272:    return NULL;
        !          14273:  }
        !          14274:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          14275:    *exc = GDOME_INVALID_STATE_ERR;
        !          14276:    return NULL;
        !          14277:  }
        !          14278:  *exc = 0;
        !          14279:  return ((Gdome_xml_ProcessingInstruction *)self)->vtab->super.firstChild ((GdomeNode *)self, exc);
        !          14280: }
        !          14281: /**
        !          14282:  * gdome_pi_lastChild:
        !          14283:  * @self:  Node Object ref
        !          14284:  * @exc:  Exception Object ref
        !          14285:  *
        !          14286:  * Returns: the last child of this node. If there is no such node,
        !          14287:  * this returns %NULL.
        !          14288:  */
        !          14289: GdomeNode *
        !          14290: gdome_pi_lastChild (GdomeProcessingInstruction *self, GdomeException *exc)
        !          14291: {
        !          14292:  if (self == NULL) {
        !          14293:    *exc = GDOME_NULL_POINTER_ERR;
        !          14294:    return NULL;
        !          14295:  }
        !          14296:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          14297:    *exc = GDOME_INVALID_STATE_ERR;
        !          14298:    return NULL;
        !          14299:  }
        !          14300:  *exc = 0;
        !          14301:  return ((Gdome_xml_ProcessingInstruction *)self)->vtab->super.lastChild ((GdomeNode *)self, exc);
        !          14302: }
        !          14303: /**
        !          14304:  * gdome_pi_localName:
        !          14305:  * @self:  Node Objects ref
        !          14306:  * @exc:  Exception Object ref
        !          14307:  *
        !          14308:  * Returns: the local part of the qualified name of this node.
        !          14309:  * For nodes of any type other than %GDOME_ELEMENT_NODE and
        !          14310:  * %GDOME_ATTRIBUTE_NODE and nodes created with a DOM Level 1 method, this is
        !          14311:  * always %NULL.
        !          14312:  */
        !          14313: GdomeDOMString *
        !          14314: gdome_pi_localName (GdomeProcessingInstruction *self, GdomeException *exc)
        !          14315: {
        !          14316:  if (self == NULL) {
        !          14317:    *exc = GDOME_NULL_POINTER_ERR;
        !          14318:    return NULL;
        !          14319:  }
        !          14320:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          14321:    *exc = GDOME_INVALID_STATE_ERR;
        !          14322:    return NULL;
        !          14323:  }
        !          14324:  *exc = 0;
        !          14325:  return ((Gdome_xml_ProcessingInstruction *)self)->vtab->super.localName ((GdomeNode *)self, exc);
        !          14326: }
        !          14327: /**
        !          14328:  * gdome_pi_namespaceURI:
        !          14329:  * @self:  Node Objects ref
        !          14330:  * @exc:  Exception Object ref
        !          14331:  *
        !          14332:  * Returns: the namespace URI of this node, or %NULL if it is unspecified.
        !          14333:  * For nodes of any type other than %GDOME_ELEMENT_NODE and
        !          14334:  * %GDOME_ATTRIBUTE_NODE and nodes created with a DOM Level 1 method, this is
        !          14335:  * always %NULL.
        !          14336:  */
        !          14337: GdomeDOMString *
        !          14338: gdome_pi_namespaceURI (GdomeProcessingInstruction *self, GdomeException *exc)
        !          14339: {
        !          14340:  if (self == NULL) {
        !          14341:    *exc = GDOME_NULL_POINTER_ERR;
        !          14342:    return NULL;
        !          14343:  }
        !          14344:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          14345:    *exc = GDOME_INVALID_STATE_ERR;
        !          14346:    return NULL;
        !          14347:  }
        !          14348:  *exc = 0;
        !          14349:  return ((Gdome_xml_ProcessingInstruction *)self)->vtab->super.namespaceURI ((GdomeNode *)self, exc);
        !          14350: }
        !          14351: /**
        !          14352:  * gdome_pi_nextSibling:
        !          14353:  * @self:  Node Object ref
        !          14354:  * @exc:  Exception Object ref
        !          14355:  *
        !          14356:  * Returns: the node immediately following this node. If there is no such
        !          14357:  * node, this returns %NULL.
        !          14358:  */
        !          14359: GdomeNode *
        !          14360: gdome_pi_nextSibling (GdomeProcessingInstruction *self, GdomeException *exc)
        !          14361: {
        !          14362:  if (self == NULL) {
        !          14363:    *exc = GDOME_NULL_POINTER_ERR;
        !          14364:    return NULL;
        !          14365:  }
        !          14366:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          14367:    *exc = GDOME_INVALID_STATE_ERR;
        !          14368:    return NULL;
        !          14369:  }
        !          14370:  *exc = 0;
        !          14371:  return ((Gdome_xml_ProcessingInstruction *)self)->vtab->super.nextSibling ((GdomeNode *)self, exc);
        !          14372: }
        !          14373: /**
        !          14374:  * gdome_pi_nodeName:
        !          14375:  * @self:  Node Object ref
        !          14376:  * @exc:  Exception Object ref
        !          14377:  *
        !          14378:  * Returns: the name of this node, depending on its type.
        !          14379:  */
        !          14380: GdomeDOMString *
        !          14381: gdome_pi_nodeName (GdomeProcessingInstruction *self, GdomeException *exc)
        !          14382: {
        !          14383:  if (self == NULL) {
        !          14384:    *exc = GDOME_NULL_POINTER_ERR;
        !          14385:    return NULL;
        !          14386:  }
        !          14387:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          14388:    *exc = GDOME_INVALID_STATE_ERR;
        !          14389:    return NULL;
        !          14390:  }
        !          14391:  *exc = 0;
        !          14392:  return ((Gdome_xml_ProcessingInstruction *)self)->vtab->super.nodeName ((GdomeNode *)self, exc);
        !          14393: }
        !          14394: /**
        !          14395:  * gdome_pi_nodeType:
        !          14396:  * @self:  Node Object ref
        !          14397:  * @exc:  Exception Object ref
        !          14398:  *
        !          14399:  * Returns: an integer bigger than %0 representing the type of the underlying
        !          14400:  * object or %0 on error.
        !          14401:  */
        !          14402: unsigned short
        !          14403: gdome_pi_nodeType (GdomeProcessingInstruction *self, GdomeException *exc)
        !          14404: {
        !          14405:  if (self == NULL) {
        !          14406:    *exc = GDOME_NULL_POINTER_ERR;
        !          14407:    return 0;
        !          14408:  }
        !          14409:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          14410:    *exc = GDOME_INVALID_STATE_ERR;
        !          14411:    return 0;
        !          14412:  }
        !          14413:  *exc = 0;
        !          14414:  return ((Gdome_xml_ProcessingInstruction *)self)->vtab->super.nodeType ((GdomeNode *)self, exc);
        !          14415: }
        !          14416: /**
        !          14417:  * gdome_pi_nodeValue:
        !          14418:  * @self:  Node Object ref
        !          14419:  * @exc:  Exception Object ref
        !          14420:  *
        !          14421:  * Returns: the value of this node, depending on its type.
        !          14422:  */
        !          14423: GdomeDOMString *
        !          14424: gdome_pi_nodeValue (GdomeProcessingInstruction *self, GdomeException *exc)
        !          14425: {
        !          14426:  if (self == NULL) {
        !          14427:    *exc = GDOME_NULL_POINTER_ERR;
        !          14428:    return NULL;
        !          14429:  }
        !          14430:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          14431:    *exc = GDOME_INVALID_STATE_ERR;
        !          14432:    return NULL;
        !          14433:  }
        !          14434:  *exc = 0;
        !          14435:  return ((Gdome_xml_ProcessingInstruction *)self)->vtab->super.nodeValue ((GdomeNode *)self, exc);
        !          14436: }
        !          14437: /**
        !          14438:  * gdome_pi_set_nodeValue:
        !          14439:  * @self:  Node Object ref
        !          14440:  * @nodeValue:  The new value for this node.
        !          14441:  * @exc:  Exception Object ref
        !          14442:  *
        !          14443:  * Sets The value of this node, depending on its type.
        !          14444:  *
        !          14445:  * %GDOME_NO_MODIFICATION_ALLOWED_ERR: Raised when the node is readonly.
        !          14446:  */
        !          14447: void
        !          14448: gdome_pi_set_nodeValue (GdomeProcessingInstruction *self, GdomeDOMString *nodeValue, GdomeException *exc)
        !          14449: {
        !          14450:  if (self == NULL) {
        !          14451:    *exc = GDOME_NULL_POINTER_ERR;
        !          14452:    return;
        !          14453:  }
        !          14454:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          14455:    *exc = GDOME_INVALID_STATE_ERR;
        !          14456:    return;
        !          14457:  }
        !          14458:  *exc = 0;
        !          14459:  ((Gdome_xml_ProcessingInstruction *)self)->vtab->super.set_nodeValue ((GdomeNode *)self, nodeValue, exc);
        !          14460: }
        !          14461: /**
        !          14462:  * gdome_pi_ownerDocument:
        !          14463:  * @self:  Node Objects ref
        !          14464:  * @exc:  Exception Object ref
        !          14465:  *
        !          14466:  * Returns: the documment object associated with this node. This is also the
        !          14467:  * Document object used to create new nodes. When this node is a Document or a
        !          14468:  * DocumentType which is not used with any Document yet, this is %NULL.
        !          14469:  */
        !          14470: GdomeDocument *
        !          14471: gdome_pi_ownerDocument (GdomeProcessingInstruction *self, GdomeException *exc)
        !          14472: {
        !          14473:  if (self == NULL) {
        !          14474:    *exc = GDOME_NULL_POINTER_ERR;
        !          14475:    return NULL;
        !          14476:  }
        !          14477:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          14478:    *exc = GDOME_INVALID_STATE_ERR;
        !          14479:    return NULL;
        !          14480:  }
        !          14481:  *exc = 0;
        !          14482:  return ((Gdome_xml_ProcessingInstruction *)self)->vtab->super.ownerDocument ((GdomeNode *)self, exc);
        !          14483: }
        !          14484: /**
        !          14485:  * gdome_pi_parentNode:
        !          14486:  * @self: Node Object ref
        !          14487:  * @exc: Exception Object ref
        !          14488:  *
        !          14489:  * Returns: the parent of this node. All nodes, except Attr,
        !          14490:  * Document, DocumentFragment, Entity, and Notation may have a parent. However,
        !          14491:  * if a node has just been created and not yet added to the tree, or if it has
        !          14492:  * been removed from the tree, this is %NULL.
        !          14493:  */
        !          14494: GdomeNode *
        !          14495: gdome_pi_parentNode (GdomeProcessingInstruction *self, GdomeException *exc)
        !          14496: {
        !          14497:  if (self == NULL) {
        !          14498:    *exc = GDOME_NULL_POINTER_ERR;
        !          14499:    return NULL;
        !          14500:  }
        !          14501:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          14502:    *exc = GDOME_INVALID_STATE_ERR;
        !          14503:    return NULL;
        !          14504:  }
        !          14505:  *exc = 0;
        !          14506:  return ((Gdome_xml_ProcessingInstruction *)self)->vtab->super.parentNode ((GdomeNode *)self, exc);
        !          14507: }
        !          14508: /**
        !          14509:  * gdome_pi_prefix:
        !          14510:  * @self:  Node Objects ref
        !          14511:  * @exc:  Exception Object ref
        !          14512:  *
        !          14513:  * Returns: the namespace prefix of this node, or %NULL if it is unspecified.
        !          14514:  * For nodes of any type other than %GDOME_ELEMENT_NODE and
        !          14515:  * %GDOME_ATTRIBUTE_NODE and nodes created with a DOM Level 1 method, this is
        !          14516:  * always %NULL.
        !          14517:  */
        !          14518: GdomeDOMString *
        !          14519: gdome_pi_prefix (GdomeProcessingInstruction *self, GdomeException *exc)
        !          14520: {
        !          14521:  if (self == NULL) {
        !          14522:    *exc = GDOME_NULL_POINTER_ERR;
        !          14523:    return NULL;
        !          14524:  }
        !          14525:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          14526:    *exc = GDOME_INVALID_STATE_ERR;
        !          14527:    return NULL;
        !          14528:  }
        !          14529:  *exc = 0;
        !          14530:  return ((Gdome_xml_ProcessingInstruction *)self)->vtab->super.prefix ((GdomeNode *)self, exc);
        !          14531: }
        !          14532: /**
        !          14533:  * gdome_pi_set_prefix:
        !          14534:  * @self:  Node Object ref
        !          14535:  * @prefix:  The new prefix for this node.
        !          14536:  * @exc:  Exception Object ref
        !          14537:  *
        !          14538:  * Sets a new nemaspace prefix for this node.
        !          14539:  *
        !          14540:  * %GDOME_NO_MODIFICATION_ALLOWED_ERR: Raised when the node is readonly.
        !          14541:  * %GDOME_NAMESPACE_ERR: Raised if the specified @prefix is malformed per the
        !          14542:  * Namespaces in XML specification, if the namespaceURI of this node is %NULL,
        !          14543:  * if the specified prefix is "xml" and the namespaceURI of this node is
        !          14544:  * different from "http://www.w3.org/XML/1998/namespace", if this node is an
        !          14545:  * attribute and the specified prefix is "xmlns" and the namespaceURI of this
        !          14546:  * node is different from "http://www.w3.org/2000/xmlns/", or if this node is
        !          14547:  * an attribute and the qualifiedName of this node is "xmlns".
        !          14548:  */
        !          14549: void
        !          14550: gdome_pi_set_prefix (GdomeProcessingInstruction *self, GdomeDOMString *prefix, GdomeException *exc)
        !          14551: {
        !          14552:  if (self == NULL) {
        !          14553:    *exc = GDOME_NULL_POINTER_ERR;
        !          14554:    return;
        !          14555:  }
        !          14556:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          14557:    *exc = GDOME_INVALID_STATE_ERR;
        !          14558:    return;
        !          14559:  }
        !          14560:  *exc = 0;
        !          14561:  ((Gdome_xml_ProcessingInstruction *)self)->vtab->super.set_prefix ((GdomeNode *)self, prefix, exc);
        !          14562: }
        !          14563: /**
        !          14564:  * gdome_pi_previousSibling:
        !          14565:  * @self:  Node Object ref
        !          14566:  * @exc:  Exception Object ref
        !          14567:  *
        !          14568:  * Returns: the node immediately preceding this node. If there is no such
        !          14569:  * node, this returns %NULL.
        !          14570:  */
        !          14571: GdomeNode *
        !          14572: gdome_pi_previousSibling (GdomeProcessingInstruction *self, GdomeException *exc)
        !          14573: {
        !          14574:  if (self == NULL) {
        !          14575:    *exc = GDOME_NULL_POINTER_ERR;
        !          14576:    return NULL;
        !          14577:  }
        !          14578:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          14579:    *exc = GDOME_INVALID_STATE_ERR;
        !          14580:    return NULL;
        !          14581:  }
        !          14582:  *exc = 0;
        !          14583:  return ((Gdome_xml_ProcessingInstruction *)self)->vtab->super.previousSibling ((GdomeNode *)self, exc);
        !          14584: }
        !          14585: /**
        !          14586:  * gdome_pi_ref:
        !          14587:  * @self:  Node Object ref
        !          14588:  * @exc:  Exception Object ref
        !          14589:  *
        !          14590:  * Increase the reference count of the specified Node.
        !          14591:  */
        !          14592: void
        !          14593: gdome_pi_ref (GdomeProcessingInstruction *self, GdomeException *exc)
        !          14594: {
        !          14595:  if (self == NULL) {
        !          14596:    *exc = GDOME_NULL_POINTER_ERR;
        !          14597:    return;
        !          14598:  }
        !          14599:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          14600:    *exc = GDOME_INVALID_STATE_ERR;
        !          14601:    return;
        !          14602:  }
        !          14603:  *exc = 0;
        !          14604:  ((Gdome_xml_ProcessingInstruction *)self)->vtab->super.ref ((GdomeNode *)self, exc);
        !          14605: }
        !          14606: /**
        !          14607:  * gdome_pi_unref:
        !          14608:  * @self:  Node Object ref
        !          14609:  * @exc:  Exception Object ref
        !          14610:  *
        !          14611:  * Decrease the reference count of the specified Node. Free the Node structure
        !          14612:  * if the Node will have zero reference.
        !          14613:  */
        !          14614: void
        !          14615: gdome_pi_unref (GdomeProcessingInstruction *self, GdomeException *exc)
        !          14616: {
        !          14617:  if (self == NULL) {
        !          14618:    *exc = GDOME_NULL_POINTER_ERR;
        !          14619:    return;
        !          14620:  }
        !          14621:  *exc = 0;
        !          14622:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          14623:    if (((Gdome_xml_Node *)self)->refcnt > 0)
        !          14624:      ((Gdome_xml_Node *)self)->refcnt--;
        !          14625: 
        !          14626:    if (((Gdome_xml_Node *)self)->refcnt == 0 && ((Gdome_xml_Node *)self)->ll == NULL) {
        !          14627: #ifdef DEBUG_REFCNT
        !          14628:      gdome_refdbg_delRef ((void *)self, GDOME_REFDBG_NODE);
        !          14629: #endif
        !          14630:      g_free (self);
        !          14631:    }
        !          14632:    return;
        !          14633:  }
        !          14634:  ((Gdome_xml_ProcessingInstruction *)self)->vtab->super.unref ((GdomeNode *)self, exc);
        !          14635: }
        !          14636: /**
        !          14637:  * gdome_pi_query_interface:
        !          14638:  * @self:  Node Object ref
        !          14639:  * @interface:  interface needed
        !          14640:  * @exc:  Exception Object ref
        !          14641:  *
        !          14642:  * Returns: a reference to this object that implements the @interface needed,
        !          14643:  *          or %NULL if the @interface is not supported by this Object.
        !          14644:  */
        !          14645: gpointer
        !          14646: gdome_pi_query_interface (GdomeProcessingInstruction *self, const char *interface, GdomeException *exc)
        !          14647: {
        !          14648:  if (self == NULL) {
        !          14649:    *exc = GDOME_NULL_POINTER_ERR;
        !          14650:    return NULL;
        !          14651:  }
        !          14652:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          14653:    *exc = GDOME_INVALID_STATE_ERR;
        !          14654:    return NULL;
        !          14655:  }
        !          14656:  *exc = 0;
        !          14657:  return ((Gdome_xml_ProcessingInstruction *)self)->vtab->super.query_interface ((GdomeNode *)self, interface, exc);
        !          14658: }
        !          14659: /**
        !          14660:  * gdome_pi_appendChild:
        !          14661:  * @self:  Node Object ref
        !          14662:  * @newChild:  The node to add
        !          14663:  * @exc:  Exception Object ref
        !          14664:  *
        !          14665:  * Adds the node @newChild to the end of the list of children of this node.
        !          14666:  * If the @newChild is already in the tree, it is first removed. If it is a
        !          14667:  * DocumentFragment node, the entire contents of the document fragment are
        !          14668:  * moved into the child list of this node
        !          14669:  *
        !          14670:  * %GDOME_HIERARCHY_REQUEST_ERR: Raised if this node is of a type that does not
        !          14671:  * allow children of the type of the @newChild node, or if the node to append is
        !          14672:  * one of this node's ancestors or this node itself.
        !          14673:  * %GDOME_WRONG_DOCUMENT_ERR: Raised if @newChild was created from a different
        !          14674:  * document than the one that created this node.
        !          14675:  * %GDOME_NO_MODIFICATION_ALLOWED_ERR: Raised when the node is readonly.
        !          14676:  * Returns: the node added.
        !          14677:  */
        !          14678: GdomeNode *
        !          14679: gdome_pi_appendChild (GdomeProcessingInstruction *self, GdomeNode *newChild, GdomeException *exc)
        !          14680: {
        !          14681:  if (self == NULL) {
        !          14682:    *exc = GDOME_NULL_POINTER_ERR;
        !          14683:    return NULL;
        !          14684:  }
        !          14685:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          14686:    *exc = GDOME_INVALID_STATE_ERR;
        !          14687:    return NULL;
        !          14688:  }
        !          14689:  *exc = 0;
        !          14690:  return ((Gdome_xml_ProcessingInstruction *)self)->vtab->super.appendChild ((GdomeNode *)self, newChild, exc);
        !          14691: }
        !          14692: /**
        !          14693:  * gdome_pi_cloneNode:
        !          14694:  * @self:  Node Object ref
        !          14695:  * @deep:  If true, recursively clone the subtree under the specified node;
        !          14696:  *         if false, clone only the node itself (and its attributes, if it is
        !          14697:  *         an Element).
        !          14698:  * @exc:  Exception Object ref
        !          14699:  *
        !          14700:  * Makes a duplicate of this node, i.e., serves as a generic copy
        !          14701:  * constructor for nodes. The duplicate node has no parent; (parentNode is
        !          14702:  * %NULL).
        !          14703:  * %GDOME_DOCUMENT_TYPE_NODE, %GDOME_NOTATION_NODE and %GDOME_ENTITY_NODE
        !          14704:  * nodes are not supported.
        !          14705:  *
        !          14706:  * %GDOME_NOT_SUPPORTED_ERR: Raised if the type of node being cloned is not
        !          14707:  * supported.
        !          14708:  * Returns: the duplicate node.
        !          14709:  */
        !          14710: GdomeNode *
        !          14711: gdome_pi_cloneNode (GdomeProcessingInstruction *self, GdomeBoolean deep, GdomeException *exc)
        !          14712: {
        !          14713:  if (self == NULL) {
        !          14714:    *exc = GDOME_NULL_POINTER_ERR;
        !          14715:    return NULL;
        !          14716:  }
        !          14717:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          14718:    *exc = GDOME_INVALID_STATE_ERR;
        !          14719:    return NULL;
        !          14720:  }
        !          14721:  *exc = 0;
        !          14722:  return ((Gdome_xml_ProcessingInstruction *)self)->vtab->super.cloneNode ((GdomeNode *)self, deep, exc);
        !          14723: }
        !          14724: /**
        !          14725:  * gdome_pi_hasAttributes:
        !          14726:  * @self:  Node Object ref
        !          14727:  * @exc:  Exception Object ref
        !          14728:  *
        !          14729:  * Returns: %TRUE if this node has any attributes, %FALSE otherwise.
        !          14730:  */
        !          14731: GdomeBoolean
        !          14732: gdome_pi_hasAttributes (GdomeProcessingInstruction *self, GdomeException *exc)
        !          14733: {
        !          14734:  if (self == NULL) {
        !          14735:    *exc = GDOME_NULL_POINTER_ERR;
        !          14736:    return FALSE;
        !          14737:  }
        !          14738:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          14739:    *exc = GDOME_INVALID_STATE_ERR;
        !          14740:    return FALSE;
        !          14741:  }
        !          14742:  *exc = 0;
        !          14743:  return ((Gdome_xml_ProcessingInstruction *)self)->vtab->super.hasAttributes ((GdomeNode *)self, exc);
        !          14744: }
        !          14745: /**
        !          14746:  * gdome_pi_hasChildNodes:
        !          14747:  * @self:  Node Object ref
        !          14748:  * @exc:  Exception Object ref
        !          14749:  *
        !          14750:  * Returns: %TRUE if this node has any children, %FALSE otherwise.
        !          14751:  */
        !          14752: GdomeBoolean
        !          14753: gdome_pi_hasChildNodes (GdomeProcessingInstruction *self, GdomeException *exc)
        !          14754: {
        !          14755:  if (self == NULL) {
        !          14756:    *exc = GDOME_NULL_POINTER_ERR;
        !          14757:    return FALSE;
        !          14758:  }
        !          14759:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          14760:    *exc = GDOME_INVALID_STATE_ERR;
        !          14761:    return FALSE;
        !          14762:  }
        !          14763:  *exc = 0;
        !          14764:  return ((Gdome_xml_ProcessingInstruction *)self)->vtab->super.hasChildNodes ((GdomeNode *)self, exc);
        !          14765: }
        !          14766: /**
        !          14767:  * gdome_pi_insertBefore:
        !          14768:  * @self:  Node Object ref
        !          14769:  * @newChild:  The new node to put in the child list
        !          14770:  * @refChild:  the reference node, i.e., the node before which the new node
        !          14771:  *             must be inserted.
        !          14772:  * @exc:  Exception Object ref
        !          14773:  *
        !          14774:  * Inserts the node @newChild before the existing child node @refChild. If
        !          14775:  * @refChild is %NULL, insert @newChild at the end of the list of children.
        !          14776:  * If @newChild is a DocumentFragment node, all of its children are inserted,
        !          14777:  * in the same order, before @refChild. If the @newChild is already in the
        !          14778:  * tree, it is first removed.
        !          14779:  *
        !          14780:  * %GDOME_HIERARCHY_REQUEST_ERR: Raised if this node is of a type that does not
        !          14781:  * allow children of the type of the @newChild node, or if the node to insert is
        !          14782:  * one of this node's ancestors or this node itself.
        !          14783:  * %GDOME_WRONG_DOCUMENT_ERR: Raised if @newChild was created from a different
        !          14784:  * document than the one that created this node.
        !          14785:  * %GDOME_NOT_FOUND_ERR: Raised if @refChild is not a child of this node.
        !          14786:  * %GDOME_NO_MODIFICATION_ALLOWED_ERR: Raised when the node is readonly.
        !          14787:  * Returns: the node being inserted.
        !          14788:  */
        !          14789: GdomeNode *
        !          14790: gdome_pi_insertBefore (GdomeProcessingInstruction *self, GdomeNode *newChild, GdomeNode *refChild, GdomeException *exc)
        !          14791: {
        !          14792:  if (self == NULL) {
        !          14793:    *exc = GDOME_NULL_POINTER_ERR;
        !          14794:    return NULL;
        !          14795:  }
        !          14796:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          14797:    *exc = GDOME_INVALID_STATE_ERR;
        !          14798:    return NULL;
        !          14799:  }
        !          14800:  *exc = 0;
        !          14801:  return ((Gdome_xml_ProcessingInstruction *)self)->vtab->super.insertBefore ((GdomeNode *)self, newChild, refChild, exc);
        !          14802: }
        !          14803: /**
        !          14804:  * gdome_pi_isSupported:
        !          14805:  * @self:  Node Object ref
        !          14806:  * @feature:  The name of the feature to test.
        !          14807:  * @version:  This is the version number of the feature to test. In Level 2,
        !          14808:  *            version 1, this is the string "2.0". If the version is not
        !          14809:  *            specified, supporting any version of the feature will cause the
        !          14810:  *            method to return %TRUE.
        !          14811:  * @exc:  Exception Object ref
        !          14812:  *
        !          14813:  * Tests whether the DOM implementation implements a specific feature and that
        !          14814:  * feature is supported by this node.
        !          14815:  * Returns: %TRUE if the specified feature is supported on this node, %FALSE
        !          14816:  * otherwise.
        !          14817:  */
        !          14818: GdomeBoolean
        !          14819: gdome_pi_isSupported (GdomeProcessingInstruction *self, GdomeDOMString *feature, GdomeDOMString *version, GdomeException *exc)
        !          14820: {
        !          14821:  if (self == NULL) {
        !          14822:    *exc = GDOME_NULL_POINTER_ERR;
        !          14823:    return FALSE;
        !          14824:  }
        !          14825:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          14826:    *exc = GDOME_INVALID_STATE_ERR;
        !          14827:    return FALSE;
        !          14828:  }
        !          14829:  *exc = 0;
        !          14830:  return ((Gdome_xml_ProcessingInstruction *)self)->vtab->super.isSupported ((GdomeNode *)self, feature, version, exc);
        !          14831: }
        !          14832: /**
        !          14833:  * gdome_pi_normalize:
        !          14834:  * @self:  Node Object ref
        !          14835:  * @exc:  Exception Object ref
        !          14836:  *
        !          14837:  * Puts all Text nodes in the full depth of the sub-tree underneath this Node,
        !          14838:  * including attribute nodes, into a "normal" form where only structure (e.g.,
        !          14839:  * elements, comments, processing instructions, CDATA sections, and entity
        !          14840:  * references) separates Text nodes, i.e., there are neither adjacent Text
        !          14841:  * nodes nor empty Text nodes.
        !          14842:  */
        !          14843: void
        !          14844: gdome_pi_normalize (GdomeProcessingInstruction *self, GdomeException *exc)
        !          14845: {
        !          14846:  if (self == NULL) {
        !          14847:    *exc = GDOME_NULL_POINTER_ERR;
        !          14848:    return;
        !          14849:  }
        !          14850:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          14851:    *exc = GDOME_INVALID_STATE_ERR;
        !          14852:    return;
        !          14853:  }
        !          14854:  *exc = 0;
        !          14855:  ((Gdome_xml_ProcessingInstruction *)self)->vtab->super.normalize ((GdomeNode *)self, exc);
        !          14856: }
        !          14857: /**
        !          14858:  * gdome_pi_removeChild:
        !          14859:  * @self:  Node Object ref
        !          14860:  * @oldChild:  The node being removed
        !          14861:  * @exc:  Exception Object ref
        !          14862:  *
        !          14863:  * Removes the child node indicated by @oldChild from the list of children, and
        !          14864:  * returns it.
        !          14865:  *
        !          14866:  * %GDOME_NOT_FOUND_ERR: Raised if @oldChild is not a child of this node.
        !          14867:  * %GDOME_NO_MODIFICATION_ALLOWED_ERR: Raised when the node is readonly.
        !          14868:  * Returns: the node removed.
        !          14869:  */
        !          14870: GdomeNode *
        !          14871: gdome_pi_removeChild (GdomeProcessingInstruction *self, GdomeNode *oldChild, GdomeException *exc)
        !          14872: {
        !          14873:  if (self == NULL) {
        !          14874:    *exc = GDOME_NULL_POINTER_ERR;
        !          14875:    return NULL;
        !          14876:  }
        !          14877:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          14878:    *exc = GDOME_INVALID_STATE_ERR;
        !          14879:    return NULL;
        !          14880:  }
        !          14881:  *exc = 0;
        !          14882:  return ((Gdome_xml_ProcessingInstruction *)self)->vtab->super.removeChild ((GdomeNode *)self, oldChild, exc);
        !          14883: }
        !          14884: /**
        !          14885:  * gdome_pi_replaceChild:
        !          14886:  * @self:  Node Object ref
        !          14887:  * @newChild:  The new node to put in the child list
        !          14888:  * @oldChild:  The node being replaced in the list
        !          14889:  * @exc:  Exception Object ref
        !          14890:  *
        !          14891:  * Replaces the child node @oldChild with @newChild in the list of children,
        !          14892:  * and returns the @oldChild node. If @newChild is a DocumentFragment object,
        !          14893:  * @oldChild is replaced by all of the DocumentFragment children, which are
        !          14894:  * inserted in the same order. If the @newChild is already in the tree, it is
        !          14895:  * first removed.
        !          14896:  *
        !          14897:  * %GDOME_HIERARCHY_REQUEST_ERR: Raised if this node is of a type that does
        !          14898:  * not allow children of the type of the @newChild node, or if the node to put
        !          14899:  * in is one of this node's ancestors or this node itself.
        !          14900:  * %GDOME_WRONG_DOCUMENT_ERR: Raised if @newChild was created from a different
        !          14901:  * document than the one that created this node.
        !          14902:  * %GDOME_NOT_FOUND_ERR: Raised if @oldChild is not a child of this node.
        !          14903:  * %GDOME_NO_MODIFICATION_ALLOWED_ERR: Raised when the node is readonly.
        !          14904:  * Returns: the node replaced.
        !          14905:  */
        !          14906: GdomeNode *
        !          14907: gdome_pi_replaceChild (GdomeProcessingInstruction *self, GdomeNode *newChild, GdomeNode *oldChild, GdomeException *exc)
        !          14908: {
        !          14909:  if (self == NULL) {
        !          14910:    *exc = GDOME_NULL_POINTER_ERR;
        !          14911:    return NULL;
        !          14912:  }
        !          14913:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          14914:    *exc = GDOME_INVALID_STATE_ERR;
        !          14915:    return NULL;
        !          14916:  }
        !          14917:  *exc = 0;
        !          14918:  return ((Gdome_xml_ProcessingInstruction *)self)->vtab->super.replaceChild ((GdomeNode *)self, newChild, oldChild, exc);
        !          14919: }
        !          14920: /**
        !          14921:  * gdome_pi_addEventListener:
        !          14922:  * @self:  Node Object ref
        !          14923:  * @type:  the event type for which the user is registering
        !          14924:  * @listener:  the listener parameter takes an interface implemented by the
        !          14925:  *             user which contains the methods to be called when the event occurs.
        !          14926:  * @useCapture:  if %TRUE, useCapture indicates that the user wishes to initiate
        !          14927:  *               capture. After initiating capture, all events of the specified
        !          14928:  *               type will be dispatched to the registered EventListener before
        !          14929:  *               being dispatched to any EventTargets beneath them in the tree.
        !          14930:  *               Events which are bubbling upward through the tree will not
        !          14931:  *               trigger an EventListener designated to use capture.
        !          14932:  * @exc:  Exception Object ref
        !          14933:  *
        !          14934:  * This method allows the registration of event listeners on the event target.
        !          14935:  * If an EventListener is added to an EventTarget while it is processing an
        !          14936:  * event, it will not be triggered by the current actions but may be triggered
        !          14937:  * during a later stage of event flow, such as the bubbling phase.
        !          14938:  * If multiple identical EventListeners are registered on the same EventTarget
        !          14939:  * with the same parameters the duplicate instances are discarded. They do not
        !          14940:  * cause the EventListener to be called twice and since they are discarded
        !          14941:  * they do not need to be removed with the removeEventListener method.
        !          14942:  */
        !          14943: void
        !          14944: gdome_pi_addEventListener (GdomeProcessingInstruction *self, GdomeDOMString *type, GdomeEventListener *listener, GdomeBoolean useCapture, GdomeException *exc)
        !          14945: {
        !          14946:  if (self == NULL) {
        !          14947:    *exc = GDOME_NULL_POINTER_ERR;
        !          14948:    return;
        !          14949:  }
        !          14950:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          14951:    *exc = GDOME_INVALID_STATE_ERR;
        !          14952:    return;
        !          14953:  }
        !          14954:  *exc = 0;
        !          14955:  ((Gdome_xml_ProcessingInstruction *)self)->vtab->super.addEventListener ((GdomeNode *)self, type, listener, useCapture, exc);
        !          14956: }
        !          14957: /**
        !          14958:  * gdome_pi_removeEventListener:
        !          14959:  * @self:  Node Object ref
        !          14960:  * @type:  Specifies the event type of the EventListener being removed.
        !          14961:  * @listener:  The EventListener parameter indicates the EventListener to be
        !          14962:  *             removed.
        !          14963:  * @useCapture:  Specifies whether the EventListener being removed was
        !          14964:  *               registered as a capturing listener or not. If a listener was
        !          14965:  *               registered twice, one with capture and one without, each must
        !          14966:  *               be removed separately. Removal of a capturing listener does
        !          14967:  *               not affect a non-capturing version of the same listener, and
        !          14968:  *               vice versa.
        !          14969:  * @exc:  Exception Object ref
        !          14970:  *
        !          14971:  * This method allows the removal of event listeners from the event target. If
        !          14972:  * an EventListener is removed from an EventTarget while it is processing an
        !          14973:  * event, it will not be triggered by the current actions. EventListeners can
        !          14974:  * never be invoked after being removed. Calling removeEventListener with
        !          14975:  * arguments which do not identify any currently registered EventListener on
        !          14976:  * the EventTarget has no effect.
        !          14977:  */
        !          14978: void
        !          14979: gdome_pi_removeEventListener (GdomeProcessingInstruction *self, GdomeDOMString *type, GdomeEventListener *listener, GdomeBoolean useCapture, GdomeException *exc)
        !          14980: {
        !          14981:  if (self == NULL) {
        !          14982:    *exc = GDOME_NULL_POINTER_ERR;
        !          14983:    return;
        !          14984:  }
        !          14985:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          14986:    *exc = GDOME_INVALID_STATE_ERR;
        !          14987:    return;
        !          14988:  }
        !          14989:  *exc = 0;
        !          14990:  ((Gdome_xml_ProcessingInstruction *)self)->vtab->super.removeEventListener ((GdomeNode *)self, type, listener, useCapture, exc);
        !          14991: }
        !          14992: /**
        !          14993:  * gdome_pi_dispatchEvent:
        !          14994:  * @self:  Node Object ref
        !          14995:  * @evt:  Specifies the event type, behavior, and contextual information to be
        !          14996:  *        used in processing the event.
        !          14997:  * @exc:  Exception Object ref
        !          14998:  *
        !          14999:  * This method allows the dispatch of events into the implementations event
        !          15000:  * model. Events dispatched in this manner will have the same capturing and
        !          15001:  * bubbling behavior as events dispatched directly by the implementation. The
        !          15002:  * target of the event is the EventTarget on which dispatchEvent is called.
        !          15003:  *
        !          15004:  * GDOME_UNSPECIFIED_EVENT_TYPE_ERR: Raised if the Event's type was not
        !          15005:  * specified by initializing the event before dispatchEvent was called.
        !          15006:  * Specification of the Event's type as %NULL or an empty string will also
        !          15007:  * trigger this exception.
        !          15008:  * Returns: if preventDefault was called the value is %FALSE, else the value
        !          15009:  *          is %TRUE.
        !          15010:  */
        !          15011: GdomeBoolean
        !          15012: gdome_pi_dispatchEvent (GdomeProcessingInstruction *self, GdomeEvent *evt, GdomeException *exc)
        !          15013: {
        !          15014:  if (self == NULL) {
        !          15015:    *exc = GDOME_NULL_POINTER_ERR;
        !          15016:    return FALSE;
        !          15017:  }
        !          15018:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          15019:    *exc = GDOME_INVALID_STATE_ERR;
        !          15020:    return FALSE;
        !          15021:  }
        !          15022:  *exc = 0;
        !          15023:  return ((Gdome_xml_ProcessingInstruction *)self)->vtab->super.dispatchEvent ((GdomeNode *)self, evt, exc);
        !          15024: }
        !          15025: /**
        !          15026:  * gdome_pi_subTreeDispatchEvent:
        !          15027:  * @self:  Node Object ref
        !          15028:  * @evt:  Specifies the event type, behavior, and contextual information to be
        !          15029:  *        used in processing the event.
        !          15030:  * @exc:  Exception Object ref
        !          15031:  *
        !          15032:  * This method allows the dispatch of events into the implementations event
        !          15033:  * model. Events dispatched in this manner will have the same capturing and
        !          15034:  * bubbling behavior as events dispatched directly by the implementation. The
        !          15035:  * target of the event is any nodes in the subtree of the EventTarget on which
        !          15036:  * dispatchEvent is called.
        !          15037:  *
        !          15038:  * GDOME_UNSPECIFIED_EVENT_TYPE_ERR: Raised if the Event's type was not
        !          15039:  * specified by initializing the event before dispatchEvent was called.
        !          15040:  * Specification of the Event's type as %NULL or an empty string will also
        !          15041:  * trigger this exception.
        !          15042:  */
        !          15043: void
        !          15044: gdome_pi_subTreeDispatchEvent (GdomeProcessingInstruction *self, GdomeEvent *evt, GdomeException *exc)
        !          15045: {
        !          15046:  if (self == NULL) {
        !          15047:    *exc = GDOME_NULL_POINTER_ERR;
        !          15048:    return;
        !          15049:  }
        !          15050:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          15051:    *exc = GDOME_INVALID_STATE_ERR;
        !          15052:    return;
        !          15053:  }
        !          15054:  *exc = 0;
        !          15055:  ((Gdome_xml_ProcessingInstruction *)self)->vtab->super.subTreeDispatchEvent ((GdomeNode *)self, evt, exc);
        !          15056: }
        !          15057: /**
        !          15058:  * gdome_pi_canAppend:
        !          15059:  * @self:  Node Object ref
        !          15060:  * @newChild:  The Node Object ref of the node to test
        !          15061:  * @exc:  Exception Object ref
        !          15062:  *
        !          15063:  * Tests if a @newChild can be added in the child list of this node.
        !          15064:  * Returns: %TRUE if @newChild can be added, %FALSE otherwise.
        !          15065:  */
        !          15066: GdomeBoolean
        !          15067: gdome_pi_canAppend (GdomeProcessingInstruction *self, GdomeNode *newChild, GdomeException *exc)
        !          15068: {
        !          15069:  if (self == NULL) {
        !          15070:    *exc = GDOME_NULL_POINTER_ERR;
        !          15071:    return FALSE;
        !          15072:  }
        !          15073:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          15074:    *exc = GDOME_INVALID_STATE_ERR;
        !          15075:    return FALSE;
        !          15076:  }
        !          15077:  *exc = 0;
        !          15078:  return ((Gdome_xml_ProcessingInstruction *)self)->vtab->super.canAppend ((GdomeNode *)self, newChild, exc);
        !          15079: }
        !          15080: 
        !          15081: /******************************************************************************
        !          15082:           GdomeXPathNamespace interface API
        !          15083:  ******************************************************************************/
        !          15084: /**
        !          15085:  * gdome_xpns_ownerElement:
        !          15086:  * @self:  XPathNamespace Object ref
        !          15087:  * @exc:  Exception Object ref
        !          15088:  *
        !          15089:  * NOT IMPLEMENTED
        !          15090:  * Returns: %NULL
        !          15091:  */
        !          15092: GdomeElement *
        !          15093: gdome_xpns_ownerElement (GdomeXPathNamespace *self, GdomeException *exc)
        !          15094: {
        !          15095:  if (self == NULL) {
        !          15096:    *exc = GDOME_NULL_POINTER_ERR;
        !          15097:    return NULL;
        !          15098:  }
        !          15099:  if (((Gdome_xml_EntityReference *)self)->n == NULL) {
        !          15100:    *exc = GDOME_INVALID_STATE_ERR;
        !          15101:    return NULL;
        !          15102:  }
        !          15103:  *exc = 0;
        !          15104:  return ((Gdome_xml_XPathNamespace *)self)->vtab->ownerElement (self, exc);
        !          15105: }
        !          15106: /**
        !          15107:  * gdome_xpns_attributes:
        !          15108:  * @self:  Node Object ref
        !          15109:  * @exc:  Exception Object ref
        !          15110:  *
        !          15111:  * Returns: a NamedNodeMap containing the attributes of this node (if it is an
        !          15112:  * Element) or %NULL otherwise.
        !          15113:  */
        !          15114: GdomeNamedNodeMap *
        !          15115: gdome_xpns_attributes (GdomeXPathNamespace *self, GdomeException *exc)
        !          15116: {
        !          15117:  if (self == NULL) {
        !          15118:    *exc = GDOME_NULL_POINTER_ERR;
        !          15119:    return NULL;
        !          15120:  }
        !          15121:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          15122:    *exc = GDOME_INVALID_STATE_ERR;
        !          15123:    return NULL;
        !          15124:  }
        !          15125:  *exc = 0;
        !          15126:  return ((Gdome_xml_XPathNamespace *)self)->vtab->super.attributes ((GdomeNode *)self, exc);
        !          15127: }
        !          15128: /**
        !          15129:  * gdome_xpns_childNodes:
        !          15130:  * @self:  Node Object ref
        !          15131:  * @exc:  Exception Object ref
        !          15132:  *
        !          15133:  * Returns: a NodeList that contains all children of this node. If there are no
        !          15134:  * children, this is a NodeList containing no nodes.  Note that attributes are
        !          15135:  * not considered to be children of element nodes - use gdome_n_attributes to
        !          15136:  * obtain the attributes.
        !          15137:  */
        !          15138: GdomeNodeList *
        !          15139: gdome_xpns_childNodes (GdomeXPathNamespace *self, GdomeException *exc)
        !          15140: {
        !          15141:  if (self == NULL) {
        !          15142:    *exc = GDOME_NULL_POINTER_ERR;
        !          15143:    return NULL;
        !          15144:  }
        !          15145:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          15146:    *exc = GDOME_INVALID_STATE_ERR;
        !          15147:    return NULL;
        !          15148:  }
        !          15149:  *exc = 0;
        !          15150:  return ((Gdome_xml_XPathNamespace *)self)->vtab->super.childNodes ((GdomeNode *)self, exc);
        !          15151: }
        !          15152: /**
        !          15153:  * gdome_xpns_firstChild:
        !          15154:  * @self:  Node Object ref
        !          15155:  * @exc:  Exception Object ref
        !          15156:  * 
        !          15157:  * Returns: the first child of this node. If there is no such node,
        !          15158:  * this returns %NULL.
        !          15159:  */
        !          15160: GdomeNode *
        !          15161: gdome_xpns_firstChild (GdomeXPathNamespace *self, GdomeException *exc)
        !          15162: {
        !          15163:  if (self == NULL) {
        !          15164:    *exc = GDOME_NULL_POINTER_ERR;
        !          15165:    return NULL;
        !          15166:  }
        !          15167:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          15168:    *exc = GDOME_INVALID_STATE_ERR;
        !          15169:    return NULL;
        !          15170:  }
        !          15171:  *exc = 0;
        !          15172:  return ((Gdome_xml_XPathNamespace *)self)->vtab->super.firstChild ((GdomeNode *)self, exc);
        !          15173: }
        !          15174: /**
        !          15175:  * gdome_xpns_lastChild:
        !          15176:  * @self:  Node Object ref
        !          15177:  * @exc:  Exception Object ref
        !          15178:  *
        !          15179:  * Returns: the last child of this node. If there is no such node,
        !          15180:  * this returns %NULL.
        !          15181:  */
        !          15182: GdomeNode *
        !          15183: gdome_xpns_lastChild (GdomeXPathNamespace *self, GdomeException *exc)
        !          15184: {
        !          15185:  if (self == NULL) {
        !          15186:    *exc = GDOME_NULL_POINTER_ERR;
        !          15187:    return NULL;
        !          15188:  }
        !          15189:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          15190:    *exc = GDOME_INVALID_STATE_ERR;
        !          15191:    return NULL;
        !          15192:  }
        !          15193:  *exc = 0;
        !          15194:  return ((Gdome_xml_XPathNamespace *)self)->vtab->super.lastChild ((GdomeNode *)self, exc);
        !          15195: }
        !          15196: /**
        !          15197:  * gdome_xpns_localName:
        !          15198:  * @self:  Node Objects ref
        !          15199:  * @exc:  Exception Object ref
        !          15200:  *
        !          15201:  * Returns: the local part of the qualified name of this node.
        !          15202:  * For nodes of any type other than %GDOME_ELEMENT_NODE and
        !          15203:  * %GDOME_ATTRIBUTE_NODE and nodes created with a DOM Level 1 method, this is
        !          15204:  * always %NULL.
        !          15205:  */
        !          15206: GdomeDOMString *
        !          15207: gdome_xpns_localName (GdomeXPathNamespace *self, GdomeException *exc)
        !          15208: {
        !          15209:  if (self == NULL) {
        !          15210:    *exc = GDOME_NULL_POINTER_ERR;
        !          15211:    return NULL;
        !          15212:  }
        !          15213:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          15214:    *exc = GDOME_INVALID_STATE_ERR;
        !          15215:    return NULL;
        !          15216:  }
        !          15217:  *exc = 0;
        !          15218:  return ((Gdome_xml_XPathNamespace *)self)->vtab->super.localName ((GdomeNode *)self, exc);
        !          15219: }
        !          15220: /**
        !          15221:  * gdome_xpns_namespaceURI:
        !          15222:  * @self:  Node Objects ref
        !          15223:  * @exc:  Exception Object ref
        !          15224:  *
        !          15225:  * Returns: the namespace URI of this node, or %NULL if it is unspecified.
        !          15226:  * For nodes of any type other than %GDOME_ELEMENT_NODE and
        !          15227:  * %GDOME_ATTRIBUTE_NODE and nodes created with a DOM Level 1 method, this is
        !          15228:  * always %NULL.
        !          15229:  */
        !          15230: GdomeDOMString *
        !          15231: gdome_xpns_namespaceURI (GdomeXPathNamespace *self, GdomeException *exc)
        !          15232: {
        !          15233:  if (self == NULL) {
        !          15234:    *exc = GDOME_NULL_POINTER_ERR;
        !          15235:    return NULL;
        !          15236:  }
        !          15237:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          15238:    *exc = GDOME_INVALID_STATE_ERR;
        !          15239:    return NULL;
        !          15240:  }
        !          15241:  *exc = 0;
        !          15242:  return ((Gdome_xml_XPathNamespace *)self)->vtab->super.namespaceURI ((GdomeNode *)self, exc);
        !          15243: }
        !          15244: /**
        !          15245:  * gdome_xpns_nextSibling:
        !          15246:  * @self:  Node Object ref
        !          15247:  * @exc:  Exception Object ref
        !          15248:  *
        !          15249:  * Returns: the node immediately following this node. If there is no such
        !          15250:  * node, this returns %NULL.
        !          15251:  */
        !          15252: GdomeNode *
        !          15253: gdome_xpns_nextSibling (GdomeXPathNamespace *self, GdomeException *exc)
        !          15254: {
        !          15255:  if (self == NULL) {
        !          15256:    *exc = GDOME_NULL_POINTER_ERR;
        !          15257:    return NULL;
        !          15258:  }
        !          15259:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          15260:    *exc = GDOME_INVALID_STATE_ERR;
        !          15261:    return NULL;
        !          15262:  }
        !          15263:  *exc = 0;
        !          15264:  return ((Gdome_xml_XPathNamespace *)self)->vtab->super.nextSibling ((GdomeNode *)self, exc);
        !          15265: }
        !          15266: /**
        !          15267:  * gdome_xpns_nodeName:
        !          15268:  * @self:  Node Object ref
        !          15269:  * @exc:  Exception Object ref
        !          15270:  *
        !          15271:  * Returns: the name of this node, depending on its type.
        !          15272:  */
        !          15273: GdomeDOMString *
        !          15274: gdome_xpns_nodeName (GdomeXPathNamespace *self, GdomeException *exc)
        !          15275: {
        !          15276:  if (self == NULL) {
        !          15277:    *exc = GDOME_NULL_POINTER_ERR;
        !          15278:    return NULL;
        !          15279:  }
        !          15280:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          15281:    *exc = GDOME_INVALID_STATE_ERR;
        !          15282:    return NULL;
        !          15283:  }
        !          15284:  *exc = 0;
        !          15285:  return ((Gdome_xml_XPathNamespace *)self)->vtab->super.nodeName ((GdomeNode *)self, exc);
        !          15286: }
        !          15287: /**
        !          15288:  * gdome_xpns_nodeType:
        !          15289:  * @self:  Node Object ref
        !          15290:  * @exc:  Exception Object ref
        !          15291:  *
        !          15292:  * Returns: an integer bigger than %0 representing the type of the underlying
        !          15293:  * object or %0 on error.
        !          15294:  */
        !          15295: unsigned short
        !          15296: gdome_xpns_nodeType (GdomeXPathNamespace *self, GdomeException *exc)
        !          15297: {
        !          15298:  if (self == NULL) {
        !          15299:    *exc = GDOME_NULL_POINTER_ERR;
        !          15300:    return 0;
        !          15301:  }
        !          15302:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          15303:    *exc = GDOME_INVALID_STATE_ERR;
        !          15304:    return 0;
        !          15305:  }
        !          15306:  *exc = 0;
        !          15307:  return ((Gdome_xml_XPathNamespace *)self)->vtab->super.nodeType ((GdomeNode *)self, exc);
        !          15308: }
        !          15309: /**
        !          15310:  * gdome_xpns_nodeValue:
        !          15311:  * @self:  Node Object ref
        !          15312:  * @exc:  Exception Object ref
        !          15313:  *
        !          15314:  * Returns: the value of this node, depending on its type.
        !          15315:  */
        !          15316: GdomeDOMString *
        !          15317: gdome_xpns_nodeValue (GdomeXPathNamespace *self, GdomeException *exc)
        !          15318: {
        !          15319:  if (self == NULL) {
        !          15320:    *exc = GDOME_NULL_POINTER_ERR;
        !          15321:    return NULL;
        !          15322:  }
        !          15323:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          15324:    *exc = GDOME_INVALID_STATE_ERR;
        !          15325:    return NULL;
        !          15326:  }
        !          15327:  *exc = 0;
        !          15328:  return ((Gdome_xml_XPathNamespace *)self)->vtab->super.nodeValue ((GdomeNode *)self, exc);
        !          15329: }
        !          15330: /**
        !          15331:  * gdome_xpns_set_nodeValue:
        !          15332:  * @self:  Node Object ref
        !          15333:  * @nodeValue:  The new value for this node.
        !          15334:  * @exc:  Exception Object ref
        !          15335:  *
        !          15336:  * Sets The value of this node, depending on its type.
        !          15337:  *
        !          15338:  * %GDOME_NO_MODIFICATION_ALLOWED_ERR: Raised when the node is readonly.
        !          15339:  */
        !          15340: void
        !          15341: gdome_xpns_set_nodeValue (GdomeXPathNamespace *self, GdomeDOMString *nodeValue, GdomeException *exc)
        !          15342: {
        !          15343:  if (self == NULL) {
        !          15344:    *exc = GDOME_NULL_POINTER_ERR;
        !          15345:    return;
        !          15346:  }
        !          15347:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          15348:    *exc = GDOME_INVALID_STATE_ERR;
        !          15349:    return;
        !          15350:  }
        !          15351:  *exc = 0;
        !          15352:  ((Gdome_xml_XPathNamespace *)self)->vtab->super.set_nodeValue ((GdomeNode *)self, nodeValue, exc);
        !          15353: }
        !          15354: /**
        !          15355:  * gdome_xpns_ownerDocument:
        !          15356:  * @self:  Node Objects ref
        !          15357:  * @exc:  Exception Object ref
        !          15358:  *
        !          15359:  * Returns: the documment object associated with this node. This is also the
        !          15360:  * Document object used to create new nodes. When this node is a Document or a
        !          15361:  * DocumentType which is not used with any Document yet, this is %NULL.
        !          15362:  */
        !          15363: GdomeDocument *
        !          15364: gdome_xpns_ownerDocument (GdomeXPathNamespace *self, GdomeException *exc)
        !          15365: {
        !          15366:  if (self == NULL) {
        !          15367:    *exc = GDOME_NULL_POINTER_ERR;
        !          15368:    return NULL;
        !          15369:  }
        !          15370:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          15371:    *exc = GDOME_INVALID_STATE_ERR;
        !          15372:    return NULL;
        !          15373:  }
        !          15374:  *exc = 0;
        !          15375:  return ((Gdome_xml_XPathNamespace *)self)->vtab->super.ownerDocument ((GdomeNode *)self, exc);
        !          15376: }
        !          15377: /**
        !          15378:  * gdome_xpns_parentNode:
        !          15379:  * @self: Node Object ref
        !          15380:  * @exc: Exception Object ref
        !          15381:  *
        !          15382:  * Returns: the parent of this node. All nodes, except Attr,
        !          15383:  * Document, DocumentFragment, Entity, and Notation may have a parent. However,
        !          15384:  * if a node has just been created and not yet added to the tree, or if it has
        !          15385:  * been removed from the tree, this is %NULL.
        !          15386:  */
        !          15387: GdomeNode *
        !          15388: gdome_xpns_parentNode (GdomeXPathNamespace *self, GdomeException *exc)
        !          15389: {
        !          15390:  if (self == NULL) {
        !          15391:    *exc = GDOME_NULL_POINTER_ERR;
        !          15392:    return NULL;
        !          15393:  }
        !          15394:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          15395:    *exc = GDOME_INVALID_STATE_ERR;
        !          15396:    return NULL;
        !          15397:  }
        !          15398:  *exc = 0;
        !          15399:  return ((Gdome_xml_XPathNamespace *)self)->vtab->super.parentNode ((GdomeNode *)self, exc);
        !          15400: }
        !          15401: /**
        !          15402:  * gdome_xpns_prefix:
        !          15403:  * @self:  Node Objects ref
        !          15404:  * @exc:  Exception Object ref
        !          15405:  *
        !          15406:  * Returns: the namespace prefix of this node, or %NULL if it is unspecified.
        !          15407:  * For nodes of any type other than %GDOME_ELEMENT_NODE and
        !          15408:  * %GDOME_ATTRIBUTE_NODE and nodes created with a DOM Level 1 method, this is
        !          15409:  * always %NULL.
        !          15410:  */
        !          15411: GdomeDOMString *
        !          15412: gdome_xpns_prefix (GdomeXPathNamespace *self, GdomeException *exc)
        !          15413: {
        !          15414:  if (self == NULL) {
        !          15415:    *exc = GDOME_NULL_POINTER_ERR;
        !          15416:    return NULL;
        !          15417:  }
        !          15418:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          15419:    *exc = GDOME_INVALID_STATE_ERR;
        !          15420:    return NULL;
        !          15421:  }
        !          15422:  *exc = 0;
        !          15423:  return ((Gdome_xml_XPathNamespace *)self)->vtab->super.prefix ((GdomeNode *)self, exc);
        !          15424: }
        !          15425: /**
        !          15426:  * gdome_xpns_set_prefix:
        !          15427:  * @self:  Node Object ref
        !          15428:  * @prefix:  The new prefix for this node.
        !          15429:  * @exc:  Exception Object ref
        !          15430:  *
        !          15431:  * Sets a new nemaspace prefix for this node.
        !          15432:  *
        !          15433:  * %GDOME_NO_MODIFICATION_ALLOWED_ERR: Raised when the node is readonly.
        !          15434:  * %GDOME_NAMESPACE_ERR: Raised if the specified @prefix is malformed per the
        !          15435:  * Namespaces in XML specification, if the namespaceURI of this node is %NULL,
        !          15436:  * if the specified prefix is "xml" and the namespaceURI of this node is
        !          15437:  * different from "http://www.w3.org/XML/1998/namespace", if this node is an
        !          15438:  * attribute and the specified prefix is "xmlns" and the namespaceURI of this
        !          15439:  * node is different from "http://www.w3.org/2000/xmlns/", or if this node is
        !          15440:  * an attribute and the qualifiedName of this node is "xmlns".
        !          15441:  */
        !          15442: void
        !          15443: gdome_xpns_set_prefix (GdomeXPathNamespace *self, GdomeDOMString *prefix, GdomeException *exc)
        !          15444: {
        !          15445:  if (self == NULL) {
        !          15446:    *exc = GDOME_NULL_POINTER_ERR;
        !          15447:    return;
        !          15448:  }
        !          15449:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          15450:    *exc = GDOME_INVALID_STATE_ERR;
        !          15451:    return;
        !          15452:  }
        !          15453:  *exc = 0;
        !          15454:  ((Gdome_xml_XPathNamespace *)self)->vtab->super.set_prefix ((GdomeNode *)self, prefix, exc);
        !          15455: }
        !          15456: /**
        !          15457:  * gdome_xpns_previousSibling:
        !          15458:  * @self:  Node Object ref
        !          15459:  * @exc:  Exception Object ref
        !          15460:  *
        !          15461:  * Returns: the node immediately preceding this node. If there is no such
        !          15462:  * node, this returns %NULL.
        !          15463:  */
        !          15464: GdomeNode *
        !          15465: gdome_xpns_previousSibling (GdomeXPathNamespace *self, GdomeException *exc)
        !          15466: {
        !          15467:  if (self == NULL) {
        !          15468:    *exc = GDOME_NULL_POINTER_ERR;
        !          15469:    return NULL;
        !          15470:  }
        !          15471:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          15472:    *exc = GDOME_INVALID_STATE_ERR;
        !          15473:    return NULL;
        !          15474:  }
        !          15475:  *exc = 0;
        !          15476:  return ((Gdome_xml_XPathNamespace *)self)->vtab->super.previousSibling ((GdomeNode *)self, exc);
        !          15477: }
        !          15478: /**
        !          15479:  * gdome_xpns_ref:
        !          15480:  * @self:  Node Object ref
        !          15481:  * @exc:  Exception Object ref
        !          15482:  *
        !          15483:  * Increase the reference count of the specified Node.
        !          15484:  */
        !          15485: void
        !          15486: gdome_xpns_ref (GdomeXPathNamespace *self, GdomeException *exc)
        !          15487: {
        !          15488:  if (self == NULL) {
        !          15489:    *exc = GDOME_NULL_POINTER_ERR;
        !          15490:    return;
        !          15491:  }
        !          15492:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          15493:    *exc = GDOME_INVALID_STATE_ERR;
        !          15494:    return;
        !          15495:  }
        !          15496:  *exc = 0;
        !          15497:  ((Gdome_xml_XPathNamespace *)self)->vtab->super.ref ((GdomeNode *)self, exc);
        !          15498: }
        !          15499: /**
        !          15500:  * gdome_xpns_unref:
        !          15501:  * @self:  Node Object ref
        !          15502:  * @exc:  Exception Object ref
        !          15503:  *
        !          15504:  * Decrease the reference count of the specified Node. Free the Node structure
        !          15505:  * if the Node will have zero reference.
        !          15506:  */
        !          15507: void
        !          15508: gdome_xpns_unref (GdomeXPathNamespace *self, GdomeException *exc)
        !          15509: {
        !          15510:  if (self == NULL) {
        !          15511:    *exc = GDOME_NULL_POINTER_ERR;
        !          15512:    return;
        !          15513:  }
        !          15514:  *exc = 0;
        !          15515:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          15516:    if (((Gdome_xml_Node *)self)->refcnt > 0)
        !          15517:      ((Gdome_xml_Node *)self)->refcnt--;
        !          15518: 
        !          15519:    if (((Gdome_xml_Node *)self)->refcnt == 0 && ((Gdome_xml_Node *)self)->ll == NULL) {
        !          15520: #ifdef DEBUG_REFCNT
        !          15521:      gdome_refdbg_delRef ((void *)self, GDOME_REFDBG_NODE);
        !          15522: #endif
        !          15523:      g_free (self);
        !          15524:    }
        !          15525:    return;
        !          15526:  }
        !          15527:  ((Gdome_xml_XPathNamespace *)self)->vtab->super.unref ((GdomeNode *)self, exc);
        !          15528: }
        !          15529: /**
        !          15530:  * gdome_xpns_query_interface:
        !          15531:  * @self:  Node Object ref
        !          15532:  * @interface:  interface needed
        !          15533:  * @exc:  Exception Object ref
        !          15534:  *
        !          15535:  * Returns: a reference to this object that implements the @interface needed,
        !          15536:  *          or %NULL if the @interface is not supported by this Object.
        !          15537:  */
        !          15538: gpointer
        !          15539: gdome_xpns_query_interface (GdomeXPathNamespace *self, const char *interface, GdomeException *exc)
        !          15540: {
        !          15541:  if (self == NULL) {
        !          15542:    *exc = GDOME_NULL_POINTER_ERR;
        !          15543:    return NULL;
        !          15544:  }
        !          15545:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          15546:    *exc = GDOME_INVALID_STATE_ERR;
        !          15547:    return NULL;
        !          15548:  }
        !          15549:  *exc = 0;
        !          15550:  return ((Gdome_xml_XPathNamespace *)self)->vtab->super.query_interface ((GdomeNode *)self, interface, exc);
        !          15551: }
        !          15552: /**
        !          15553:  * gdome_xpns_appendChild:
        !          15554:  * @self:  Node Object ref
        !          15555:  * @newChild:  The node to add
        !          15556:  * @exc:  Exception Object ref
        !          15557:  *
        !          15558:  * Adds the node @newChild to the end of the list of children of this node.
        !          15559:  * If the @newChild is already in the tree, it is first removed. If it is a
        !          15560:  * DocumentFragment node, the entire contents of the document fragment are
        !          15561:  * moved into the child list of this node
        !          15562:  *
        !          15563:  * %GDOME_HIERARCHY_REQUEST_ERR: Raised if this node is of a type that does not
        !          15564:  * allow children of the type of the @newChild node, or if the node to append is
        !          15565:  * one of this node's ancestors or this node itself.
        !          15566:  * %GDOME_WRONG_DOCUMENT_ERR: Raised if @newChild was created from a different
        !          15567:  * document than the one that created this node.
        !          15568:  * %GDOME_NO_MODIFICATION_ALLOWED_ERR: Raised when the node is readonly.
        !          15569:  * Returns: the node added.
        !          15570:  */
        !          15571: GdomeNode *
        !          15572: gdome_xpns_appendChild (GdomeXPathNamespace *self, GdomeNode *newChild, GdomeException *exc)
        !          15573: {
        !          15574:  if (self == NULL) {
        !          15575:    *exc = GDOME_NULL_POINTER_ERR;
        !          15576:    return NULL;
        !          15577:  }
        !          15578:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          15579:    *exc = GDOME_INVALID_STATE_ERR;
        !          15580:    return NULL;
        !          15581:  }
        !          15582:  *exc = 0;
        !          15583:  return ((Gdome_xml_XPathNamespace *)self)->vtab->super.appendChild ((GdomeNode *)self, newChild, exc);
        !          15584: }
        !          15585: /**
        !          15586:  * gdome_xpns_cloneNode:
        !          15587:  * @self:  Node Object ref
        !          15588:  * @deep:  If true, recursively clone the subtree under the specified node;
        !          15589:  *         if false, clone only the node itself (and its attributes, if it is
        !          15590:  *         an Element).
        !          15591:  * @exc:  Exception Object ref
        !          15592:  *
        !          15593:  * Makes a duplicate of this node, i.e., serves as a generic copy
        !          15594:  * constructor for nodes. The duplicate node has no parent; (parentNode is
        !          15595:  * %NULL).
        !          15596:  * %GDOME_DOCUMENT_TYPE_NODE, %GDOME_NOTATION_NODE and %GDOME_ENTITY_NODE
        !          15597:  * nodes are not supported.
        !          15598:  *
        !          15599:  * %GDOME_NOT_SUPPORTED_ERR: Raised if the type of node being cloned is not
        !          15600:  * supported.
        !          15601:  * Returns: the duplicate node.
        !          15602:  */
        !          15603: GdomeNode *
        !          15604: gdome_xpns_cloneNode (GdomeXPathNamespace *self, GdomeBoolean deep, GdomeException *exc)
        !          15605: {
        !          15606:  if (self == NULL) {
        !          15607:    *exc = GDOME_NULL_POINTER_ERR;
        !          15608:    return NULL;
        !          15609:  }
        !          15610:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          15611:    *exc = GDOME_INVALID_STATE_ERR;
        !          15612:    return NULL;
        !          15613:  }
        !          15614:  *exc = 0;
        !          15615:  return ((Gdome_xml_XPathNamespace *)self)->vtab->super.cloneNode ((GdomeNode *)self, deep, exc);
        !          15616: }
        !          15617: /**
        !          15618:  * gdome_xpns_hasAttributes:
        !          15619:  * @self:  Node Object ref
        !          15620:  * @exc:  Exception Object ref
        !          15621:  *
        !          15622:  * Returns: %TRUE if this node has any attributes, %FALSE otherwise.
        !          15623:  */
        !          15624: GdomeBoolean
        !          15625: gdome_xpns_hasAttributes (GdomeXPathNamespace *self, GdomeException *exc)
        !          15626: {
        !          15627:  if (self == NULL) {
        !          15628:    *exc = GDOME_NULL_POINTER_ERR;
        !          15629:    return FALSE;
        !          15630:  }
        !          15631:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          15632:    *exc = GDOME_INVALID_STATE_ERR;
        !          15633:    return FALSE;
        !          15634:  }
        !          15635:  *exc = 0;
        !          15636:  return ((Gdome_xml_XPathNamespace *)self)->vtab->super.hasAttributes ((GdomeNode *)self, exc);
        !          15637: }
        !          15638: /**
        !          15639:  * gdome_xpns_hasChildNodes:
        !          15640:  * @self:  Node Object ref
        !          15641:  * @exc:  Exception Object ref
        !          15642:  *
        !          15643:  * Returns: %TRUE if this node has any children, %FALSE otherwise.
        !          15644:  */
        !          15645: GdomeBoolean
        !          15646: gdome_xpns_hasChildNodes (GdomeXPathNamespace *self, GdomeException *exc)
        !          15647: {
        !          15648:  if (self == NULL) {
        !          15649:    *exc = GDOME_NULL_POINTER_ERR;
        !          15650:    return FALSE;
        !          15651:  }
        !          15652:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          15653:    *exc = GDOME_INVALID_STATE_ERR;
        !          15654:    return FALSE;
        !          15655:  }
        !          15656:  *exc = 0;
        !          15657:  return ((Gdome_xml_XPathNamespace *)self)->vtab->super.hasChildNodes ((GdomeNode *)self, exc);
        !          15658: }
        !          15659: /**
        !          15660:  * gdome_xpns_insertBefore:
        !          15661:  * @self:  Node Object ref
        !          15662:  * @newChild:  The new node to put in the child list
        !          15663:  * @refChild:  the reference node, i.e., the node before which the new node
        !          15664:  *             must be inserted.
        !          15665:  * @exc:  Exception Object ref
        !          15666:  *
        !          15667:  * Inserts the node @newChild before the existing child node @refChild. If
        !          15668:  * @refChild is %NULL, insert @newChild at the end of the list of children.
        !          15669:  * If @newChild is a DocumentFragment node, all of its children are inserted,
        !          15670:  * in the same order, before @refChild. If the @newChild is already in the
        !          15671:  * tree, it is first removed.
        !          15672:  *
        !          15673:  * %GDOME_HIERARCHY_REQUEST_ERR: Raised if this node is of a type that does not
        !          15674:  * allow children of the type of the @newChild node, or if the node to insert is
        !          15675:  * one of this node's ancestors or this node itself.
        !          15676:  * %GDOME_WRONG_DOCUMENT_ERR: Raised if @newChild was created from a different
        !          15677:  * document than the one that created this node.
        !          15678:  * %GDOME_NOT_FOUND_ERR: Raised if @refChild is not a child of this node.
        !          15679:  * %GDOME_NO_MODIFICATION_ALLOWED_ERR: Raised when the node is readonly.
        !          15680:  * Returns: the node being inserted.
        !          15681:  */
        !          15682: GdomeNode *
        !          15683: gdome_xpns_insertBefore (GdomeXPathNamespace *self, GdomeNode *newChild, GdomeNode *refChild, GdomeException *exc)
        !          15684: {
        !          15685:  if (self == NULL) {
        !          15686:    *exc = GDOME_NULL_POINTER_ERR;
        !          15687:    return NULL;
        !          15688:  }
        !          15689:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          15690:    *exc = GDOME_INVALID_STATE_ERR;
        !          15691:    return NULL;
        !          15692:  }
        !          15693:  *exc = 0;
        !          15694:  return ((Gdome_xml_XPathNamespace *)self)->vtab->super.insertBefore ((GdomeNode *)self, newChild, refChild, exc);
        !          15695: }
        !          15696: /**
        !          15697:  * gdome_xpns_isSupported:
        !          15698:  * @self:  Node Object ref
        !          15699:  * @feature:  The name of the feature to test.
        !          15700:  * @version:  This is the version number of the feature to test. In Level 2,
        !          15701:  *            version 1, this is the string "2.0". If the version is not
        !          15702:  *            specified, supporting any version of the feature will cause the
        !          15703:  *            method to return %TRUE.
        !          15704:  * @exc:  Exception Object ref
        !          15705:  *
        !          15706:  * Tests whether the DOM implementation implements a specific feature and that
        !          15707:  * feature is supported by this node.
        !          15708:  * Returns: %TRUE if the specified feature is supported on this node, %FALSE
        !          15709:  * otherwise.
        !          15710:  */
        !          15711: GdomeBoolean
        !          15712: gdome_xpns_isSupported (GdomeXPathNamespace *self, GdomeDOMString *feature, GdomeDOMString *version, GdomeException *exc)
        !          15713: {
        !          15714:  if (self == NULL) {
        !          15715:    *exc = GDOME_NULL_POINTER_ERR;
        !          15716:    return FALSE;
        !          15717:  }
        !          15718:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          15719:    *exc = GDOME_INVALID_STATE_ERR;
        !          15720:    return FALSE;
        !          15721:  }
        !          15722:  *exc = 0;
        !          15723:  return ((Gdome_xml_XPathNamespace *)self)->vtab->super.isSupported ((GdomeNode *)self, feature, version, exc);
        !          15724: }
        !          15725: /**
        !          15726:  * gdome_xpns_normalize:
        !          15727:  * @self:  Node Object ref
        !          15728:  * @exc:  Exception Object ref
        !          15729:  *
        !          15730:  * Puts all Text nodes in the full depth of the sub-tree underneath this Node,
        !          15731:  * including attribute nodes, into a "normal" form where only structure (e.g.,
        !          15732:  * elements, comments, processing instructions, CDATA sections, and entity
        !          15733:  * references) separates Text nodes, i.e., there are neither adjacent Text
        !          15734:  * nodes nor empty Text nodes.
        !          15735:  */
        !          15736: void
        !          15737: gdome_xpns_normalize (GdomeXPathNamespace *self, GdomeException *exc)
        !          15738: {
        !          15739:  if (self == NULL) {
        !          15740:    *exc = GDOME_NULL_POINTER_ERR;
        !          15741:    return;
        !          15742:  }
        !          15743:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          15744:    *exc = GDOME_INVALID_STATE_ERR;
        !          15745:    return;
        !          15746:  }
        !          15747:  *exc = 0;
        !          15748:  ((Gdome_xml_XPathNamespace *)self)->vtab->super.normalize ((GdomeNode *)self, exc);
        !          15749: }
        !          15750: /**
        !          15751:  * gdome_xpns_removeChild:
        !          15752:  * @self:  Node Object ref
        !          15753:  * @oldChild:  The node being removed
        !          15754:  * @exc:  Exception Object ref
        !          15755:  *
        !          15756:  * Removes the child node indicated by @oldChild from the list of children, and
        !          15757:  * returns it.
        !          15758:  *
        !          15759:  * %GDOME_NOT_FOUND_ERR: Raised if @oldChild is not a child of this node.
        !          15760:  * %GDOME_NO_MODIFICATION_ALLOWED_ERR: Raised when the node is readonly.
        !          15761:  * Returns: the node removed.
        !          15762:  */
        !          15763: GdomeNode *
        !          15764: gdome_xpns_removeChild (GdomeXPathNamespace *self, GdomeNode *oldChild, GdomeException *exc)
        !          15765: {
        !          15766:  if (self == NULL) {
        !          15767:    *exc = GDOME_NULL_POINTER_ERR;
        !          15768:    return NULL;
        !          15769:  }
        !          15770:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          15771:    *exc = GDOME_INVALID_STATE_ERR;
        !          15772:    return NULL;
        !          15773:  }
        !          15774:  *exc = 0;
        !          15775:  return ((Gdome_xml_XPathNamespace *)self)->vtab->super.removeChild ((GdomeNode *)self, oldChild, exc);
        !          15776: }
        !          15777: /**
        !          15778:  * gdome_xpns_replaceChild:
        !          15779:  * @self:  Node Object ref
        !          15780:  * @newChild:  The new node to put in the child list
        !          15781:  * @oldChild:  The node being replaced in the list
        !          15782:  * @exc:  Exception Object ref
        !          15783:  *
        !          15784:  * Replaces the child node @oldChild with @newChild in the list of children,
        !          15785:  * and returns the @oldChild node. If @newChild is a DocumentFragment object,
        !          15786:  * @oldChild is replaced by all of the DocumentFragment children, which are
        !          15787:  * inserted in the same order. If the @newChild is already in the tree, it is
        !          15788:  * first removed.
        !          15789:  *
        !          15790:  * %GDOME_HIERARCHY_REQUEST_ERR: Raised if this node is of a type that does
        !          15791:  * not allow children of the type of the @newChild node, or if the node to put
        !          15792:  * in is one of this node's ancestors or this node itself.
        !          15793:  * %GDOME_WRONG_DOCUMENT_ERR: Raised if @newChild was created from a different
        !          15794:  * document than the one that created this node.
        !          15795:  * %GDOME_NOT_FOUND_ERR: Raised if @oldChild is not a child of this node.
        !          15796:  * %GDOME_NO_MODIFICATION_ALLOWED_ERR: Raised when the node is readonly.
        !          15797:  * Returns: the node replaced.
        !          15798:  */
        !          15799: GdomeNode *
        !          15800: gdome_xpns_replaceChild (GdomeXPathNamespace *self, GdomeNode *newChild, GdomeNode *oldChild, GdomeException *exc)
        !          15801: {
        !          15802:  if (self == NULL) {
        !          15803:    *exc = GDOME_NULL_POINTER_ERR;
        !          15804:    return NULL;
        !          15805:  }
        !          15806:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          15807:    *exc = GDOME_INVALID_STATE_ERR;
        !          15808:    return NULL;
        !          15809:  }
        !          15810:  *exc = 0;
        !          15811:  return ((Gdome_xml_XPathNamespace *)self)->vtab->super.replaceChild ((GdomeNode *)self, newChild, oldChild, exc);
        !          15812: }
        !          15813: /**
        !          15814:  * gdome_xpns_addEventListener:
        !          15815:  * @self:  Node Object ref
        !          15816:  * @type:  the event type for which the user is registering
        !          15817:  * @listener:  the listener parameter takes an interface implemented by the
        !          15818:  *             user which contains the methods to be called when the event occurs.
        !          15819:  * @useCapture:  if %TRUE, useCapture indicates that the user wishes to initiate
        !          15820:  *               capture. After initiating capture, all events of the specified
        !          15821:  *               type will be dispatched to the registered EventListener before
        !          15822:  *               being dispatched to any EventTargets beneath them in the tree.
        !          15823:  *               Events which are bubbling upward through the tree will not
        !          15824:  *               trigger an EventListener designated to use capture.
        !          15825:  * @exc:  Exception Object ref
        !          15826:  *
        !          15827:  * This method allows the registration of event listeners on the event target.
        !          15828:  * If an EventListener is added to an EventTarget while it is processing an
        !          15829:  * event, it will not be triggered by the current actions but may be triggered
        !          15830:  * during a later stage of event flow, such as the bubbling phase.
        !          15831:  * If multiple identical EventListeners are registered on the same EventTarget
        !          15832:  * with the same parameters the duplicate instances are discarded. They do not
        !          15833:  * cause the EventListener to be called twice and since they are discarded
        !          15834:  * they do not need to be removed with the removeEventListener method.
        !          15835:  */
        !          15836: void
        !          15837: gdome_xpns_addEventListener (GdomeXPathNamespace *self, GdomeDOMString *type, GdomeEventListener *listener, GdomeBoolean useCapture, GdomeException *exc)
        !          15838: {
        !          15839:  if (self == NULL) {
        !          15840:    *exc = GDOME_NULL_POINTER_ERR;
        !          15841:    return;
        !          15842:  }
        !          15843:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          15844:    *exc = GDOME_INVALID_STATE_ERR;
        !          15845:    return;
        !          15846:  }
        !          15847:  *exc = 0;
        !          15848:  ((Gdome_xml_XPathNamespace *)self)->vtab->super.addEventListener ((GdomeNode *)self, type, listener, useCapture, exc);
        !          15849: }
        !          15850: /**
        !          15851:  * gdome_xpns_removeEventListener:
        !          15852:  * @self:  Node Object ref
        !          15853:  * @type:  Specifies the event type of the EventListener being removed.
        !          15854:  * @listener:  The EventListener parameter indicates the EventListener to be
        !          15855:  *             removed.
        !          15856:  * @useCapture:  Specifies whether the EventListener being removed was
        !          15857:  *               registered as a capturing listener or not. If a listener was
        !          15858:  *               registered twice, one with capture and one without, each must
        !          15859:  *               be removed separately. Removal of a capturing listener does
        !          15860:  *               not affect a non-capturing version of the same listener, and
        !          15861:  *               vice versa.
        !          15862:  * @exc:  Exception Object ref
        !          15863:  *
        !          15864:  * This method allows the removal of event listeners from the event target. If
        !          15865:  * an EventListener is removed from an EventTarget while it is processing an
        !          15866:  * event, it will not be triggered by the current actions. EventListeners can
        !          15867:  * never be invoked after being removed. Calling removeEventListener with
        !          15868:  * arguments which do not identify any currently registered EventListener on
        !          15869:  * the EventTarget has no effect.
        !          15870:  */
        !          15871: void
        !          15872: gdome_xpns_removeEventListener (GdomeXPathNamespace *self, GdomeDOMString *type, GdomeEventListener *listener, GdomeBoolean useCapture, GdomeException *exc)
        !          15873: {
        !          15874:  if (self == NULL) {
        !          15875:    *exc = GDOME_NULL_POINTER_ERR;
        !          15876:    return;
        !          15877:  }
        !          15878:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          15879:    *exc = GDOME_INVALID_STATE_ERR;
        !          15880:    return;
        !          15881:  }
        !          15882:  *exc = 0;
        !          15883:  ((Gdome_xml_XPathNamespace *)self)->vtab->super.removeEventListener ((GdomeNode *)self, type, listener, useCapture, exc);
        !          15884: }
        !          15885: /**
        !          15886:  * gdome_xpns_dispatchEvent:
        !          15887:  * @self:  Node Object ref
        !          15888:  * @evt:  Specifies the event type, behavior, and contextual information to be
        !          15889:  *        used in processing the event.
        !          15890:  * @exc:  Exception Object ref
        !          15891:  *
        !          15892:  * This method allows the dispatch of events into the implementations event
        !          15893:  * model. Events dispatched in this manner will have the same capturing and
        !          15894:  * bubbling behavior as events dispatched directly by the implementation. The
        !          15895:  * target of the event is the EventTarget on which dispatchEvent is called.
        !          15896:  *
        !          15897:  * GDOME_UNSPECIFIED_EVENT_TYPE_ERR: Raised if the Event's type was not
        !          15898:  * specified by initializing the event before dispatchEvent was called.
        !          15899:  * Specification of the Event's type as %NULL or an empty string will also
        !          15900:  * trigger this exception.
        !          15901:  * Returns: if preventDefault was called the value is %FALSE, else the value
        !          15902:  *          is %TRUE.
        !          15903:  */
        !          15904: GdomeBoolean
        !          15905: gdome_xpns_dispatchEvent (GdomeXPathNamespace *self, GdomeEvent *evt, GdomeException *exc)
        !          15906: {
        !          15907:  if (self == NULL) {
        !          15908:    *exc = GDOME_NULL_POINTER_ERR;
        !          15909:    return FALSE;
        !          15910:  }
        !          15911:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          15912:    *exc = GDOME_INVALID_STATE_ERR;
        !          15913:    return FALSE;
        !          15914:  }
        !          15915:  *exc = 0;
        !          15916:  return ((Gdome_xml_XPathNamespace *)self)->vtab->super.dispatchEvent ((GdomeNode *)self, evt, exc);
        !          15917: }
        !          15918: /**
        !          15919:  * gdome_xpns_subTreeDispatchEvent:
        !          15920:  * @self:  Node Object ref
        !          15921:  * @evt:  Specifies the event type, behavior, and contextual information to be
        !          15922:  *        used in processing the event.
        !          15923:  * @exc:  Exception Object ref
        !          15924:  *
        !          15925:  * This method allows the dispatch of events into the implementations event
        !          15926:  * model. Events dispatched in this manner will have the same capturing and
        !          15927:  * bubbling behavior as events dispatched directly by the implementation. The
        !          15928:  * target of the event is any nodes in the subtree of the EventTarget on which
        !          15929:  * dispatchEvent is called.
        !          15930:  *
        !          15931:  * GDOME_UNSPECIFIED_EVENT_TYPE_ERR: Raised if the Event's type was not
        !          15932:  * specified by initializing the event before dispatchEvent was called.
        !          15933:  * Specification of the Event's type as %NULL or an empty string will also
        !          15934:  * trigger this exception.
        !          15935:  */
        !          15936: void
        !          15937: gdome_xpns_subTreeDispatchEvent (GdomeXPathNamespace *self, GdomeEvent *evt, GdomeException *exc)
        !          15938: {
        !          15939:  if (self == NULL) {
        !          15940:    *exc = GDOME_NULL_POINTER_ERR;
        !          15941:    return;
        !          15942:  }
        !          15943:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          15944:    *exc = GDOME_INVALID_STATE_ERR;
        !          15945:    return;
        !          15946:  }
        !          15947:  *exc = 0;
        !          15948:  ((Gdome_xml_XPathNamespace *)self)->vtab->super.subTreeDispatchEvent ((GdomeNode *)self, evt, exc);
        !          15949: }
        !          15950: /**
        !          15951:  * gdome_xpns_canAppend:
        !          15952:  * @self:  Node Object ref
        !          15953:  * @newChild:  The Node Object ref of the node to test
        !          15954:  * @exc:  Exception Object ref
        !          15955:  *
        !          15956:  * Tests if a @newChild can be added in the child list of this node.
        !          15957:  * Returns: %TRUE if @newChild can be added, %FALSE otherwise.
        !          15958:  */
        !          15959: GdomeBoolean
        !          15960: gdome_xpns_canAppend (GdomeXPathNamespace *self, GdomeNode *newChild, GdomeException *exc)
        !          15961: {
        !          15962:  if (self == NULL) {
        !          15963:    *exc = GDOME_NULL_POINTER_ERR;
        !          15964:    return FALSE;
        !          15965:  }
        !          15966:  if (((Gdome_xml_Node *)self)->n == NULL) {
        !          15967:    *exc = GDOME_INVALID_STATE_ERR;
        !          15968:    return FALSE;
        !          15969:  }
        !          15970:  *exc = 0;
        !          15971:  return ((Gdome_xml_XPathNamespace *)self)->vtab->super.canAppend ((GdomeNode *)self, newChild, exc);
        !          15972: }
        !          15973: 
        !          15974: /******************************************************************************
        !          15975:           GdomeNodeList interface API
        !          15976:  ******************************************************************************/
        !          15977: /**
        !          15978:  * gdome_nl_length:
        !          15979:  * @self:  NodeList Object ref
        !          15980:  * @exc:  Exception Object ref
        !          15981:  *
        !          15982:  * Returns: the number of nodes in the list. The range of valid child node
        !          15983:  * indices is 0 to length-1 inclusive.
        !          15984:  */
        !          15985: gulong
        !          15986: gdome_nl_length (GdomeNodeList *self, GdomeException *exc)
        !          15987: {
        !          15988:  if (self == NULL) {
        !          15989:    *exc = GDOME_NULL_POINTER_ERR;
        !          15990:    return 0L;
        !          15991:  }
        !          15992:  if (((Gdome_xml_Node *)((Gdome_xml_NodeList *)self)->root)->n == NULL) {
        !          15993:    *exc = GDOME_INVALID_STATE_ERR;
        !          15994:    return 0L;
        !          15995:  }
        !          15996:  *exc = 0;
        !          15997:  return ((Gdome_xml_NodeList *)self)->vtab->length (self, exc);
        !          15998: }
        !          15999: /**
        !          16000:  * gdome_nl_ref:
        !          16001:  * @self:  NodeList Object ref
        !          16002:  * @exc:  Exception Object ref
        !          16003:  *
        !          16004:  * Increase the reference count of the specified NodeList.
        !          16005:  */
        !          16006: void
        !          16007: gdome_nl_ref (GdomeNodeList *self, GdomeException *exc)
        !          16008: {
        !          16009:  if (self == NULL) {
        !          16010:    *exc = GDOME_NULL_POINTER_ERR;
        !          16011:    return;
        !          16012:  }
        !          16013:  if (((Gdome_xml_Node *)((Gdome_xml_NodeList *)self)->root)->n == NULL) {
        !          16014:    *exc = GDOME_INVALID_STATE_ERR;
        !          16015:    return;
        !          16016:  }
        !          16017:  *exc = 0;
        !          16018:  ((Gdome_xml_NodeList *)self)->vtab->ref (self, exc);
        !          16019: }
        !          16020: /**
        !          16021:  * gdome_nl_unref:
        !          16022:  * @self:  NodeList Object ref
        !          16023:  * @exc:  Exception Object ref
        !          16024:  *
        !          16025:  * Decrease the reference count of the specified NodeList. Free the NodeList
        !          16026:  * structure if the specified NodeList will have zero reference.
        !          16027:  */
        !          16028: void
        !          16029: gdome_nl_unref (GdomeNodeList *self, GdomeException *exc)
        !          16030: {
        !          16031:  if (self == NULL) {
        !          16032:    *exc = GDOME_NULL_POINTER_ERR;
        !          16033:    return;
        !          16034:  }
        !          16035:  *exc = 0;
        !          16036:  if (((Gdome_xml_Node *)((Gdome_xml_NodeList *)self)->root)->n == NULL) {
        !          16037:    if (--((Gdome_xml_NodeList *)self)->refcnt == 0) {
        !          16038:      gdome_n_unref (((Gdome_xml_NodeList *)self)->root, exc);
        !          16039:      if(((Gdome_xml_NodeList *)self)->tagName != NULL)
        !          16040:        gdome_str_unref(((Gdome_xml_NodeList *)self)->tagName);
        !          16041:      if(((Gdome_xml_NodeList *)self)->tagURI != NULL)
        !          16042:        gdome_str_unref(((Gdome_xml_NodeList *)self)->tagURI);
        !          16043: #ifdef DEBUG_REFCNT
        !          16044:      gdome_refdbg_delRef ((void *)self, GDOME_REFDBG_NODELIST);
        !          16045: #endif
        !          16046:      g_free (self);
        !          16047:    }
        !          16048:    return;
        !          16049:  }
        !          16050:  ((Gdome_xml_NodeList *)self)->vtab->unref (self, exc);
        !          16051: }
        !          16052: /**
        !          16053:  * gdome_nl_query_interface:
        !          16054:  * @self:  NodeList Object ref
        !          16055:  * @interface:  interface needed
        !          16056:  * @exc:  Exception Object ref
        !          16057:  *
        !          16058:  * Returns: a reference to this object that implements the @interface needed,
        !          16059:  *          or %NULL if the @interface is not supported by this Object.
        !          16060:  */
        !          16061: gpointer
        !          16062: gdome_nl_query_interface (GdomeNodeList *self, const char *interface, GdomeException *exc)
        !          16063: {
        !          16064:  if (self == NULL) {
        !          16065:    *exc = GDOME_NULL_POINTER_ERR;
        !          16066:    return NULL;
        !          16067:  }
        !          16068:  if (((Gdome_xml_Node *)((Gdome_xml_NodeList *)self)->root)->n == NULL) {
        !          16069:    *exc = GDOME_INVALID_STATE_ERR;
        !          16070:    return NULL;
        !          16071:  }
        !          16072:  *exc = 0;
        !          16073:  return ((Gdome_xml_NodeList *)self)->vtab->query_interface (self, interface, exc);
        !          16074: }
        !          16075: /**
        !          16076:  * gdome_nl_item:
        !          16077:  * @self:  NodeList Object ref
        !          16078:  * @index:  Index into the collection
        !          16079:  * @exc:  Exception Object ref
        !          16080:  *
        !          16081:  * Returns: the indexth item in the collection. If @index is greater than or
        !          16082:  * equal to the number of nodes in the list, this returns %NULL.
        !          16083:  */
        !          16084: GdomeNode *
        !          16085: gdome_nl_item (GdomeNodeList *self, gulong index, GdomeException *exc)
        !          16086: {
        !          16087:  if (self == NULL) {
        !          16088:    *exc = GDOME_NULL_POINTER_ERR;
        !          16089:    return NULL;
        !          16090:  }
        !          16091:  if (((Gdome_xml_Node *)((Gdome_xml_NodeList *)self)->root)->n == NULL) {
        !          16092:    *exc = GDOME_INVALID_STATE_ERR;
        !          16093:    return NULL;
        !          16094:  }
        !          16095:  *exc = 0;
        !          16096:  return ((Gdome_xml_NodeList *)self)->vtab->item (self, index, exc);
        !          16097: }
        !          16098: 
        !          16099: /******************************************************************************
        !          16100:           GdomeNamedNodeMap interface API
        !          16101:  ******************************************************************************/
        !          16102: /**
        !          16103:  * gdome_nnm_length:
        !          16104:  * @self:  NamedNodeMap Objects ref
        !          16105:  * @exc:  Exception Object ref
        !          16106:  *
        !          16107:  * Returns: the number of nodes in this map. The range of valid child node
        !          16108:  * indices is 0 to length-1 inclusive.
        !          16109:  */
        !          16110: gulong
        !          16111: gdome_nnm_length (GdomeNamedNodeMap *self, GdomeException *exc)
        !          16112: {
        !          16113:  if (self == NULL) {
        !          16114:    *exc = GDOME_NULL_POINTER_ERR;
        !          16115:    return 0L;
        !          16116:  }
        !          16117:  if (((Gdome_xml_NamedNodeMap *)self)->type == GDOME_ATTRIBUTE_NODE && ((Gdome_xml_Node *)((Gdome_xml_NamedNodeMap *)self)->elem)->n == NULL) {
        !          16118:    *exc = GDOME_INVALID_STATE_ERR;
        !          16119:    return 0L;
        !          16120:  }
        !          16121:  *exc = 0;
        !          16122:  return ((Gdome_xml_NamedNodeMap *)self)->vtab->length (self, exc);
        !          16123: }
        !          16124: /**
        !          16125:  * gdome_nnm_ref:
        !          16126:  * @self:  NodeList Object ref
        !          16127:  * @exc:  Exception Object ref
        !          16128:  *
        !          16129:  * Increase the reference count of the specified NamedNodeMap.
        !          16130:  */
        !          16131: void
        !          16132: gdome_nnm_ref (GdomeNamedNodeMap *self, GdomeException *exc)
        !          16133: {
        !          16134:  if (self == NULL) {
        !          16135:    *exc = GDOME_NULL_POINTER_ERR;
        !          16136:    return;
        !          16137:  }
        !          16138:  if (((Gdome_xml_NamedNodeMap *)self)->type == GDOME_ATTRIBUTE_NODE && ((Gdome_xml_Node *)((Gdome_xml_NamedNodeMap *)self)->elem)->n == NULL) {
        !          16139:    *exc = GDOME_INVALID_STATE_ERR;
        !          16140:    return;
        !          16141:  }
        !          16142:  *exc = 0;
        !          16143:  ((Gdome_xml_NamedNodeMap *)self)->vtab->ref (self, exc);
        !          16144: }
        !          16145: /**
        !          16146:  * gdome_nnm_unref:
        !          16147:  * @self:  NodeList Object ref
        !          16148:  * @exc:  Exception Object ref
        !          16149:  *
        !          16150:  * Decrease the reference count of the specified NamedNodeMap. Free the
        !          16151:  * NamedNodeMap structure if the specified NamedNodeMap will have zero
        !          16152:  * reference.
        !          16153:  */
        !          16154: void
        !          16155: gdome_nnm_unref (GdomeNamedNodeMap *self, GdomeException *exc)
        !          16156: {
        !          16157:  if (self == NULL) {
        !          16158:    *exc = GDOME_NULL_POINTER_ERR;
        !          16159:    return;
        !          16160:  }
        !          16161:  *exc = 0;
        !          16162:  if (((Gdome_xml_NamedNodeMap *)self)->type == GDOME_ATTRIBUTE_NODE && ((Gdome_xml_Node *)((Gdome_xml_NamedNodeMap *)self)->elem)->n == NULL) {
        !          16163:    if (--((Gdome_xml_NamedNodeMap *)self)->refcnt == 0) {
        !          16164:      gdome_doc_unref (((Gdome_xml_NamedNodeMap *)self)->doc, exc);
        !          16165:      gdome_el_unref (((Gdome_xml_NamedNodeMap *)self)->elem, exc);
        !          16166: 
        !          16167: #ifdef DEBUG_REFCNT
        !          16168:      gdome_refdbg_delRef ((void *)self, GDOME_REFDBG_NAMEDNODEMAP);
        !          16169: #endif
        !          16170:      g_free (self);
        !          16171:    }
        !          16172:    return;
        !          16173:  }
        !          16174:  ((Gdome_xml_NamedNodeMap *)self)->vtab->unref (self, exc);
        !          16175: }
        !          16176: /**
        !          16177:  * gdome_nnm_query_interface:
        !          16178:  * @self:  NamedNodeMap Object ref
        !          16179:  * @interface:  interface needed
        !          16180:  * @exc:  Exception Object ref
        !          16181:  *
        !          16182:  * Returns: a reference to this object that implements the @interface needed,
        !          16183:  *          or %NULL if the @interface is not supported by this Object.
        !          16184:  */
        !          16185: gpointer
        !          16186: gdome_nnm_query_interface (GdomeNamedNodeMap *self, const char *interface, GdomeException *exc)
        !          16187: {
        !          16188:  if (self == NULL) {
        !          16189:    *exc = GDOME_NULL_POINTER_ERR;
        !          16190:    return NULL;
        !          16191:  }
        !          16192:  if (((Gdome_xml_NamedNodeMap *)self)->type == GDOME_ATTRIBUTE_NODE && ((Gdome_xml_Node *)((Gdome_xml_NamedNodeMap *)self)->elem)->n == NULL) {
        !          16193:    *exc = GDOME_INVALID_STATE_ERR;
        !          16194:    return NULL;
        !          16195:  }
        !          16196:  *exc = 0;
        !          16197:  return ((Gdome_xml_NamedNodeMap *)self)->vtab->query_interface (self, interface, exc);
        !          16198: }
        !          16199: /**
        !          16200:  * gdome_nnm_getNamedItem:
        !          16201:  * @self:  NamedNodeMap Objects ref
        !          16202:  * @name:  The nodeName of the node to retrieve.
        !          16203:  * @exc:  Exception Object ref
        !          16204:  *
        !          16205:  * Retrieves a node specified by name.
        !          16206:  * Returns: a Node (of any type) with the specified nodeName, or %NULL if it
        !          16207:  * does not identify any node in this map.
        !          16208:  */
        !          16209: GdomeNode *
        !          16210: gdome_nnm_getNamedItem (GdomeNamedNodeMap *self, GdomeDOMString *name, GdomeException *exc)
        !          16211: {
        !          16212:  if (self == NULL) {
        !          16213:    *exc = GDOME_NULL_POINTER_ERR;
        !          16214:    return NULL;
        !          16215:  }
        !          16216:  if (((Gdome_xml_NamedNodeMap *)self)->type == GDOME_ATTRIBUTE_NODE && ((Gdome_xml_Node *)((Gdome_xml_NamedNodeMap *)self)->elem)->n == NULL) {
        !          16217:    *exc = GDOME_INVALID_STATE_ERR;
        !          16218:    return NULL;
        !          16219:  }
        !          16220:  *exc = 0;
        !          16221:  return ((Gdome_xml_NamedNodeMap *)self)->vtab->getNamedItem (self, name, exc);
        !          16222: }
        !          16223: /**
        !          16224:  * gdome_nnm_getNamedItemNS:
        !          16225:  * @self:  NamedNodeMap Objects ref
        !          16226:  * @namespaceURI:  The namespace URI of the node to retrieve.
        !          16227:  * @localName:  The local name of the node to retrieve.
        !          16228:  * @exc:  Exception Object ref
        !          16229:  *
        !          16230:  * Retrieves a node specified by local name and namespace URI.
        !          16231:  * Returns: a Node (of any type) with the specified local name and namespace
        !          16232:  * URI, or %NULL if they do not identify any node in this map.
        !          16233:  */
        !          16234: GdomeNode *
        !          16235: gdome_nnm_getNamedItemNS (GdomeNamedNodeMap *self, GdomeDOMString *namespaceURI, GdomeDOMString *localName, GdomeException *exc)
        !          16236: {
        !          16237:  if (self == NULL) {
        !          16238:    *exc = GDOME_NULL_POINTER_ERR;
        !          16239:    return NULL;
        !          16240:  }
        !          16241:  if (((Gdome_xml_NamedNodeMap *)self)->type == GDOME_ATTRIBUTE_NODE && ((Gdome_xml_Node *)((Gdome_xml_NamedNodeMap *)self)->elem)->n == NULL) {
        !          16242:    *exc = GDOME_INVALID_STATE_ERR;
        !          16243:    return NULL;
        !          16244:  }
        !          16245:  *exc = 0;
        !          16246:  return ((Gdome_xml_NamedNodeMap *)self)->vtab->getNamedItemNS (self, namespaceURI, localName, exc);
        !          16247: }
        !          16248: /**
        !          16249:  * gdome_nnm_item:
        !          16250:  * @self:  NamedNodeMap Objects ref
        !          16251:  * @index:  Index into this map.
        !          16252:  * @exc:  Exception Object ref
        !          16253:  *
        !          16254:  * Returns: the indexth item in the map. If index is greater than or equal to
        !          16255:  * the number of nodes in this map, this returns %NULL.
        !          16256:  */
        !          16257: GdomeNode *
        !          16258: gdome_nnm_item (GdomeNamedNodeMap *self, gulong index, GdomeException *exc)
        !          16259: {
        !          16260:  if (self == NULL) {
        !          16261:    *exc = GDOME_NULL_POINTER_ERR;
        !          16262:    return NULL;
        !          16263:  }
        !          16264:  if (((Gdome_xml_NamedNodeMap *)self)->type == GDOME_ATTRIBUTE_NODE && ((Gdome_xml_Node *)((Gdome_xml_NamedNodeMap *)self)->elem)->n == NULL) {
        !          16265:    *exc = GDOME_INVALID_STATE_ERR;
        !          16266:    return NULL;
        !          16267:  }
        !          16268:  *exc = 0;
        !          16269:  return ((Gdome_xml_NamedNodeMap *)self)->vtab->item (self, index, exc);
        !          16270: }
        !          16271: /**
        !          16272:  * gdome_nnm_removeNamedItem:
        !          16273:  * @self:  NamedNodeMap Objects ref
        !          16274:  * @name:  The nodeName of the node to remove.
        !          16275:  * @exc:  Exception Object ref
        !          16276:  *
        !          16277:  * Removes a node specified by name. When this map contains the attributes
        !          16278:  * attached to an element, if the removed attribute is known to have a default
        !          16279:  * value, an attribute immediately appears containing the default value as
        !          16280:  * well as the corresponding namespace URI, local name, and prefix when applicable.
        !          16281:  *
        !          16282:  * %GDOME_NOT_FOUND_ERR: Raised if there is no node named @name in this map.
        !          16283:  * %GDOME_NO_MODIFICATION_ALLOWED_ERR: Raised if this map is readonly.
        !          16284:  * Returns: the node removed from this map if a node with such a name exists.
        !          16285:  */
        !          16286: GdomeNode *
        !          16287: gdome_nnm_removeNamedItem (GdomeNamedNodeMap *self, GdomeDOMString *name, GdomeException *exc)
        !          16288: {
        !          16289:  if (self == NULL) {
        !          16290:    *exc = GDOME_NULL_POINTER_ERR;
        !          16291:    return NULL;
        !          16292:  }
        !          16293:  if (((Gdome_xml_NamedNodeMap *)self)->type == GDOME_ATTRIBUTE_NODE && ((Gdome_xml_Node *)((Gdome_xml_NamedNodeMap *)self)->elem)->n == NULL) {
        !          16294:    *exc = GDOME_INVALID_STATE_ERR;
        !          16295:    return NULL;
        !          16296:  }
        !          16297:  *exc = 0;
        !          16298:  return ((Gdome_xml_NamedNodeMap *)self)->vtab->removeNamedItem (self, name, exc);
        !          16299: }
        !          16300: /**
        !          16301:  * gdome_nnm_removeNamedItemNS:
        !          16302:  * @self:  NamedNodeMap Objects ref
        !          16303:  * @namespaceURI:  The namespace URI of the node to remove.
        !          16304:  * @localName:  The local name of the node to remove.
        !          16305:  * @exc:  Exception Object ref
        !          16306:  *
        !          16307:  * Removes a node specified by local name and namespace URI. When this map
        !          16308:  * contains the attributes attached to an element, if the removed attribute
        !          16309:  * is known to have a default value, an attribute immediately appears
        !          16310:  * containing the default value as well as the corresponding namespace URI,
        !          16311:  * local name, and prefix when applicable.
        !          16312:  *
        !          16313:  * %GDOME_NOT_FOUND_ERR: Raised if there is no node named @name in this map.
        !          16314:  * %GDOME_NO_MODIFICATION_ALLOWED_ERR: Raised if this map is readonly.
        !          16315:  * Returns: the node removed from this map if a node with such a local name and
        !          16316:  * namespace URI exists.
        !          16317:  */
        !          16318: GdomeNode *
        !          16319: gdome_nnm_removeNamedItemNS (GdomeNamedNodeMap *self, GdomeDOMString *namespaceURI, GdomeDOMString *localName, GdomeException *exc)
        !          16320: {
        !          16321:  if (self == NULL) {
        !          16322:    *exc = GDOME_NULL_POINTER_ERR;
        !          16323:    return NULL;
        !          16324:  }
        !          16325:  if (((Gdome_xml_NamedNodeMap *)self)->type == GDOME_ATTRIBUTE_NODE && ((Gdome_xml_Node *)((Gdome_xml_NamedNodeMap *)self)->elem)->n == NULL) {
        !          16326:    *exc = GDOME_INVALID_STATE_ERR;
        !          16327:    return NULL;
        !          16328:  }
        !          16329:  *exc = 0;
        !          16330:  return ((Gdome_xml_NamedNodeMap *)self)->vtab->removeNamedItemNS (self, namespaceURI, localName, exc);
        !          16331: }
        !          16332: /**
        !          16333:  * gdome_nnm_setNamedItem:
        !          16334:  * @self:  NamedNodeMap Objects ref
        !          16335:  * @arg:  a node to store in this map.
        !          16336:  * @exc:  Exception Object ref
        !          16337:  *
        !          16338:  * Adds a node using its nodeName attribute. If a node with that name is
        !          16339:  * already present in this map, it is replaced by the new one.
        !          16340:  *
        !          16341:  * %GDOME_WRONG_DOCUMENT_ERR: Raised if @arg was created from a different
        !          16342:  * document than the one that created this map.
        !          16343:  * %GDOME_NO_MODIFICATION_ALLOWED_ERR: Raised if this map is readonly.
        !          16344:  * %GDOME_INUSE_ATTRIBUTE_ERR: Raised if arg is an Attr that is already an
        !          16345:  * attribute of another Element object. The DOM user must explicitly clone
        !          16346:  * Attr nodes to re-use them in other elements.
        !          16347:  * Returns: if the new Node replaces an existing node, the replaced Node is
        !          16348:  * returned, otherwise %NULL is returned.
        !          16349:  * %GDOME_HIERARCHY_REQUEST_ERR: Raised if an attempt is made to add a node
        !          16350:  * doesn't belong in this NamedNodeMap. Examples would include trying to
        !          16351:  * insert something other than an Attr node into an Element's map of
        !          16352:  * attributes, or a non-Entity node into the DocumentType's map of Entities.
        !          16353:  */
        !          16354: GdomeNode *
        !          16355: gdome_nnm_setNamedItem (GdomeNamedNodeMap *self, GdomeNode *arg, GdomeException *exc)
        !          16356: {
        !          16357:  if (self == NULL) {
        !          16358:    *exc = GDOME_NULL_POINTER_ERR;
        !          16359:    return NULL;
        !          16360:  }
        !          16361:  if (((Gdome_xml_NamedNodeMap *)self)->type == GDOME_ATTRIBUTE_NODE && ((Gdome_xml_Node *)((Gdome_xml_NamedNodeMap *)self)->elem)->n == NULL) {
        !          16362:    *exc = GDOME_INVALID_STATE_ERR;
        !          16363:    return NULL;
        !          16364:  }
        !          16365:  *exc = 0;
        !          16366:  return ((Gdome_xml_NamedNodeMap *)self)->vtab->setNamedItem (self, arg, exc);
        !          16367: }
        !          16368: /**
        !          16369:  * gdome_nnm_setNamedItemNS:
        !          16370:  * @self:  NamedNodeMap Objects ref
        !          16371:  * @arg:  a node to store in this map. The node will later be accessible
        !          16372:  *        using the value of its namespaceURI and localName attributes.
        !          16373:  * @exc:  Exception Object ref
        !          16374:  *
        !          16375:  * Adds a node using its namespaceURI and localName. If a node with that
        !          16376:  * namespace URI and that local name is already present in this map, it is
        !          16377:  * replaced by the new one
        !          16378:  *
        !          16379:  * %GDOME_WRONG_DOCUMENT_ERR: Raised if @arg was created from a different
        !          16380:  * document than the one that created this map.
        !          16381:  * %GDOME_NO_MODIFICATION_ALLOWED_ERR: Raised if this map is readonly.
        !          16382:  * %GDOME_INUSE_ATTRIBUTE_ERR: Raised if @arg is an Attr that is already an
        !          16383:  * attribute of another Element object. The DOM user must explicitly clone
        !          16384:  * Attr nodes to re-use them in other elements.
        !          16385:  * Returns: If the new Node replaces an existing node the replaced Node is
        !          16386:  * returned, otherwise null is returned.
        !          16387:  * %GDOME_HIERARCHY_REQUEST_ERR: Raised if an attempt is made to add a node
        !          16388:  * doesn't belong in this NamedNodeMap. Examples would include trying to
        !          16389:  * insert something other than an Attr node into an Element's map of
        !          16390:  * attributes, or a non-Entity node into the DocumentType's map of Entities.
        !          16391:  */
        !          16392: GdomeNode *
        !          16393: gdome_nnm_setNamedItemNS (GdomeNamedNodeMap *self, GdomeNode *arg, GdomeException *exc)
        !          16394: {
        !          16395:  if (self == NULL) {
        !          16396:    *exc = GDOME_NULL_POINTER_ERR;
        !          16397:    return NULL;
        !          16398:  }
        !          16399:  if (((Gdome_xml_NamedNodeMap *)self)->type == GDOME_ATTRIBUTE_NODE && ((Gdome_xml_Node *)((Gdome_xml_NamedNodeMap *)self)->elem)->n == NULL) {
        !          16400:    *exc = GDOME_INVALID_STATE_ERR;
        !          16401:    return NULL;
        !          16402:  }
        !          16403:  *exc = 0;
        !          16404:  return ((Gdome_xml_NamedNodeMap *)self)->vtab->setNamedItemNS (self, arg, exc);
        !          16405: }

E-mail: