You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@xerces.apache.org by ja...@apache.org on 2001/03/07 17:04:08 UTC

cvs commit: xml-xerces/perl/Xerces_headers/util PlatformUtils.hpp XMLURL.hpp XercesDefs.hpp

jasons      01/03/07 08:04:07

  Added:       perl/Xerces_headers/dom DOMString.hpp DOM_Attr.hpp
                        DOM_CDATASection.hpp DOM_CharacterData.hpp
                        DOM_Comment.hpp DOM_DOMImplementation.hpp
                        DOM_Document.hpp DOM_DocumentFragment.hpp
                        DOM_DocumentType.hpp DOM_Element.hpp DOM_Entity.hpp
                        DOM_EntityReference.hpp DOM_NamedNodeMap.hpp
                        DOM_Node.hpp DOM_NodeFilter.hpp
                        DOM_NodeIterator.hpp DOM_NodeList.hpp
                        DOM_Notation.hpp DOM_ProcessingInstruction.hpp
                        DOM_Range.hpp DOM_Text.hpp DOM_TreeWalker.hpp
                        DOM_XMLDecl.hpp
               perl/Xerces_headers/framework LocalFileInputSource.hpp
                        MemBufInputSource.hpp StdInInputSource.hpp
                        URLInputSource.hpp
               perl/Xerces_headers/parsers DOMParser.hpp
               perl/Xerces_headers/sax ErrorHandler.hpp InputSource.hpp
                        SAXException.hpp SAXParseException.hpp
               perl/Xerces_headers/util PlatformUtils.hpp XMLURL.hpp
                        XercesDefs.hpp
  Log:
  Submitted by:	jason@openinformatics.com
  
  Added new files from Harmon's 1.3 port
  
  Revision  Changes    Path
  1.1                  xml-xerces/perl/Xerces_headers/dom/DOMString.hpp
  
  Index: DOMString.hpp
  ===================================================================
  /*
   * The Apache Software License, Version 1.1
   * 
   * Copyright (c) 1999-2000 The Apache Software Foundation.  All rights
   * reserved.
   * 
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions
   * are met:
   * 
   * 1. Redistributions of source code must retain the above copyright
   *    notice, this list of conditions and the following disclaimer. 
   * 
   * 2. Redistributions in binary form must reproduce the above copyright
   *    notice, this list of conditions and the following disclaimer in
   *    the documentation and/or other materials provided with the
   *    distribution.
   * 
   * 3. The end-user documentation included with the redistribution,
   *    if any, must include the following acknowledgment:  
   *       "This product includes software developed by the
   *        Apache Software Foundation (http://www.apache.org/)."
   *    Alternately, this acknowledgment may appear in the software itself,
   *    if and wherever such third-party acknowledgments normally appear.
   * 
   * 4. The names "Xerces" and "Apache Software Foundation" must
   *    not be used to endorse or promote products derived from this
   *    software without prior written permission. For written 
   *    permission, please contact apache\@apache.org.
   * 
   * 5. Products derived from this software may not be called "Apache",
   *    nor may "Apache" appear in their name, without prior written
   *    permission of the Apache Software Foundation.
   * 
   * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
   * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
   * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
   * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
   * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
   * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
   * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   * SUCH DAMAGE.
   * ====================================================================
   * 
   * This software consists of voluntary contributions made by many
   * individuals on behalf of the Apache Software Foundation, and was
   * originally based on software copyright (c) 1999, International
   * Business Machines, Inc., http://www.ibm.com .  For more information
   * on the Apache Software Foundation, please see
   * <http://www.apache.org/>.
   */
  
  /*
   * $Log: DOMString.hpp,v $
   * Revision 1.1  2001/03/07 16:03:58  jasons
   * PR:
   * Submitted by:	jason@openinformatics.com
   *
   * Added new files from Harmon's 1.3 port
   *
   * Revision 1.12  2000/06/02 00:45:42  andyh
   * DOM Fixes:  DOMString::rawBuffer() now returns a const XMLCh * pointer.
   * Two plain deletes changed to array deletes.
   *
   * Revision 1.11  2000/03/02 19:53:52  roddey
   * This checkin includes many changes done while waiting for the
   * 1.1.0 code to be finished. I can't list them all here, but a list is
   * available elsewhere.
   *
   * Revision 1.10  2000/02/24 20:11:27  abagchi
   * Swat for removing Log from API docs
   *
   * Revision 1.9  2000/02/16 22:54:56  abagchi
   * Switched the order of CDOM_EXPORT DomString for operators, to make OS/390 happy
   *
   * Revision 1.8  2000/02/06 07:47:27  rahulj
   * Year 2K copyright swat.
   *
   * Revision 1.7  2000/02/04 05:06:30  andyh
   * Change all DOMString offsets and lengths form signed to unsigned
   * Other misc. cleanups.
   *
   * Revision 1.6  2000/02/04 00:52:58  rahulj
   * Changed size_t to int.
   *
   * Revision 1.5  2000/02/03 23:07:27  andyh
   * Add several new functions from Robert Weir to DOMString.
   *
   * Revision 1.4  2000/01/05 22:16:26  robweir
   * Move DOMString implementation class declarations into a new
   * file: DOMStringImpl.hpp.  Include this header in DOMString.hpp
   * for XML_DEBUG builds so the underlying character array will be
   * visible in the debugger.  <ro...@lotus.com>
   *
   * Revision 1.3  1999/12/03 00:11:22  andyh
   * Added DOMString.clone() to node parameters in and out of the DOM,
   * where they had been missed.
   *
   * DOMString::rawBuffer, removed incorrect assumptions about it
   * being null terminated.
   *
   * Revision 1.2  1999/11/30 21:16:25  roddey
   * Changes to add the transcode() method to DOMString, which returns a transcoded
   * version (to local code page) of the DOM string contents. And I changed all of the
   * exception 'throw by pointer' to 'throw by value' style.
   *
   * Revision 1.1.1.1  1999/11/09 01:08:48  twl
   * Initial checkin
   *
   * Revision 1.2  1999/11/08 20:44:12  rahul
   * Swat for adding in Product name and CVS comment log variable.
   *
   */
  
  //#ifndef DOMString_HEADER_GUARD_
  //#define DOMString_HEADER_GUARD_
  
  //#include <util/XercesDefs.hpp>
  
  //#ifdef XML_DEBUG
  //#include "DOMStringImpl.hpp"
  //#else
  //class DOMStringHandle;
  //#endif
  
  //class DOM_NullPtr;
  
  /**
   * <code>DOMString</code> is the generic string class that stores all strings
   * used in the DOM C++ API.
   *
   * Though this class supports most of the common string operations to manipulate
   * strings, it is not meant to be a comphrehensive string class.
   */
  
  class /*CDOM_EXPORT*/ DOMString {
  public:
      /** @name Constructors and assignment operator */
      //@{
      /**
        * Default constructor for DOMString.  The resulting DOMString
        * object refers to no string at all; it will compare == 0.
        *
        */
  //    DOMString();
  
      /**
        * Copy constructor.
        *
        * @param other The object to be copied.
        */
  //    DOMString(const DOMString &other);
  
      /**
        * Constructor to build a DOMString from an XML character array.
        * (XMLCh is a 16 bit UNICODE character).
        *
        * @param other The null-terminated character array to be 
        *   that provides the initial value for the DOMString.
        */
  //    DOMString(const XMLCh *other);
  
      /**
        * Constructor to build a DOMString from a character array of given length.
        *
        * @param other The character array to be imported into the <code>DOMString</code>
        * @param length The length of the character array to be imported
        */
  //    DOMString(const XMLCh *other, unsigned int length);
  
      /**
        * Constructor to build a DOMString from an 8 bit character array.
        * The char * string will be transcoded to UNICODE using the default
        * code page on the system where the code is running.
        *
        * @param other The character array to be imported into the <code>DOMString</code>
        */
      DOMString(const char *other);
  
      /**
        * Construct a null DOMString.
        */
  //    DOMString(int nullPointerValue);
  
      /**
        * Assignment operator.  Make destination DOMString refer to the same
        *      underlying string in memory as the source string.
        *
        * @param the source DOMString.
        */
  //    DOMString &        operator = (const DOMString &other);
      DOMString &        assignment(const DOMString &other);
  
  
  
  //    DOMString &        operator = (DOM_NullPtr *other);
  
      //@}
      /** @name Destructor. */
      //@{
  
  	 /**
  	  * Destructor for DOMString
  	  *
  	  */
  //    ~DOMString();
  
      //@}
      /** @name Operators for string manipulation. */
      //@{
  
      /**
        * Concatenate a DOMString to another.
        *
        * @param other The string to be concatenated.
        * @return The concatenated object
        */
      // DOMString   operator + (const DOMString &other);
  
      //@}
      /** @name Equality and Inequality operators. */
      //@{
  
      /**
        * Equality operator.  
        *
        * @param other The object to be compared with.
        * @return True if the two DOMStrings refer to the same underlying string
        *  in memory.  
        *  <p>
        *  WARNING:  operator == does NOT compare the contents of
        *  the two  strings.  To do this, use the <code>DOMString::equals()</code>
        *  This behavior is modelled after the String operations in Java, and
        *  is also similar to operator == on the other DOM_* classes.
        */
  //    bool        operator == (const DOMString &other) const;
      bool        equal_to(const DOMString &other) const;
  
      /**
        * Inequality operator.
        *
        * @param other The object to be compared with.
        * @return True if the two DOMStrings refer to different underlying strings in
        *    memory.
        * <p>
        *  WARNING:  operator == does NOT compare the contents of
        *  the two  strings.  To do this, use the <code>DOMString::equals()</code>
        *  This behavior is modelled after the String operations in Java, and
        *  is also similar to operator == on the other DOM_* classes.
        */
  //    bool        operator != (const DOMString &other) const;
      bool        not_equal_to(const DOMString &other) const;
  
      /**
        * Equality operator.  Test for a null DOMString, which is one that does
        *   not refer to any string at all; similar to a null object reference
        *   variable in Java.
        *
        * @param other must be 0 or null.
        * @return 
        */
  //    bool        operator == (const DOM_NullPtr *other) const;
  
      /**
        * Inequality operator, for null test.
        *
        * @param other must be 0 or null.
        * @return True if the two strings are different, false otherwise
        */
  //    bool        operator != (const DOM_NullPtr *other) const;
  
      //@}
      /** @name Functions to change the string. */
      //@{
  
  
      /**
        * Preallocate storage in the string to hold a given number of characters.
        * A DOMString will grow its buffer on demand, as characters are added,
        * but it can be more efficient to allocate once in advance, if the size is known.
        *
        * @param size The number of 16 bit characters to reserve.
        */
      void reserve(unsigned int size);
  
      
      /**
        * Appends the content of another <code>DOMString</code> to this string.
        *
        * @param other The object to be appended
        */
      void        appendData(const DOMString &other);
  
      /**
        * Append a single Unicode character to this string.
        *
        * @param other The object to be appended
        */
  //    void        appendData(XMLCh ch);
  
       /**
        * Append a null-terminated XMLCh * (Unicode) string to this string.
        *
        * @param other The object to be appended
        */
  //    void        appendData(const XMLCh *other);
  
  
      /**
        * Appends the content of another <code>DOMString</code> to this string.
        *
        * @param other The object to be appended
        */
  //	DOMString& operator +=(const DOMString &other);
  	DOMString& addition_assignment(const DOMString &other);
  
  
      /**
        * Appends the content of a c-style string to this string.
        *
        * @param other The string to be appended
        */
  //    DOMString& operator +=(const XMLCh* other);
  
  
      /**
        * Appends a character to this string.
        *
        * @param ch The character to be appended
        */
  //	DOMString& operator +=(XMLCh ch);
  
  
      /**
        * Clears the data of this <code>DOMString</code>.
        *
        * @param offset The position from the beginning from which the data must be deleted
        * @param count The count of characters from the offset that must be deleted
        */
      void        deleteData(unsigned int offset, unsigned int count);
  
      /**
        * Inserts a string within the existing <code>DOMString</code> at an arbitrary position.
        *
        * @param offset The offset from the beginning at which the insertion needs to be done 
        *               in <code>this</code> object
        * @param data The <code>DOMString</code> containing the data that needs to be inserted
        * @return The object to be returned.
        */
      void        insertData(unsigned int offset, const DOMString &data);
  
      //@}
      /** @name Functions to get properties of the string. */
      //@{
  
      /**
        * Returns the character at the specified position.
        *
        * @param index The position at which the character is being requested
        * @return Returns the character at the specified position.
        */
      XMLCh       charAt(unsigned int index) const;
  
      /**
        * Returns a handle to the raw buffer in the <code>DOMString</code>.
        *
        * @return The pointer inside the <code>DOMString</code> containg the string data.
        *         Note: the data is not always null terminated.  Do not rely on
        *         a null being there, and do not add one, as several DOMStrings
        *         with different lengths may share the same raw buffer.
        */
  //    const XMLCh *rawBuffer() const;
  
      /**
        * Returns a copy of the string, transcoded to the local code page. The
        * caller owns the (char *) string that is returned, and is responsible
        * for deleting it.
        *
        * @return A pointer to a newly allocated buffer of char elements, which
        *         represents the original string, but in the local encoding.
        */
      char        *transcode() const;
  
  
      /**
        * Creates a DOMString, transcoded from an input 8 bit char * string
        * in the local code page.
        *
        * @param str The string to be transcoded
        * @return A new DOMString object
        */
  //    static DOMString transcode(const char* str);
  
  
  
      /**
        * Returns a sub-string of the <code>DOMString</code> starting at a specified position.
        *
        * @param offset The offset from the beginning from which the sub-string is being requested.
        * @param count The count of characters in the requested sub-string
        * @return The sub-string of the <code>DOMString</code> being requested
        */
      DOMString   substringData(unsigned int offset, unsigned int count) const;
  
      /**
        * Returns the length of the DOMString.
        *
        * @return The length of the string
        */
      unsigned int length() const;
  
      //@}
      /** @name Cloning function. */
      //@{
  
      /**
        * Makes a clone of a the DOMString.
        *
        * @return The object to be cloned.
        */
      DOMString   clone() const;
  
      //@}
      /** @name Print functions. */
      //@{
  
      /**
        * Dumps the <code>DOMString</code> on the console.
        *
        */
  //    void        print() const;
  
      /**
        * Dumps the <code>DOMString</code> on the console with a line feed at the end.
        *
        */
  //    void        println() const;
  
      //@}
      /** @name Functions to compare a string with another. */
      //@{
  
      /**
        * Compares a DOMString with another.
        *
        * This compareString does not match the semantics of the standard C strcmp.  
        * All it needs to do is define some less than - equals - greater than 
        * ordering of strings.  How doesn't matter.
        *
        *
        * @param other The object to be compared with
        * @return Either -1, 0, or 1 based on the comparison. 
        */
      int         compareString(const DOMString &other) const;
  
      /**
        * Tells if a <code>DOMString</code> contains the same character data
        * as another.
        *
        * @param other The DOMString to be compared with.
        * @return True if the two <code>DOMString</code>s are same, false otherwise.
        */
      bool        equals(const DOMString &other) const;
  
  
        /**
        * Compare a DOMString with a null-terminated raw 16-bit character
        * string.
        *
        * @param other The character string to be compared with.
        * @return True if the strings are the same, false otherwise.
        */
  //    bool        equals(const XMLCh  *other) const;
  
  
      //@}
  //    friend      class DOMStringData;
  //    friend      class DOMStringHandle;
  //    friend      class DomMemDebug;
  //private:
  
  //    DOMStringHandle         *fHandle;
  //    static int              gLiveStringHandleCount;
  //    static int              gTotalStringHandleCount;
  //    static int              gLiveStringDataCount;
  //    static int              gTotalStringDataCount;
  };
  
  
  /****** Global Helper Functions ******/
  
  /**
    * Concatenate two DOMString's.
    *
    * @param lhs the first string
    * @param rhs the second string
    * @return The concatenated object
    */
  //DOMString CDOM_EXPORT operator + (const DOMString &lhs, const DOMString &rhs);
  
  /**
    * Concatenate a null terminated Unicode string to a DOMString.
    *
    * @param lhs the DOMString
    * @param rhs the XMLCh * string
    * @return The concatenated object
    */
  //DOMString CDOM_EXPORT operator + (const DOMString &lhs, const XMLCh* rhs);
  
  
  /**
    * Concatenate a DOMString to a null terminated Unicode string
    *
    * @param lhs the null-terminated Unicode string
    * @param rhs the DOMString
    * @return The concatenated object
    */
  //DOMString CDOM_EXPORT operator + (const XMLCh* lhs, const DOMString &rhs);
  
  
  /**
    * Concatenate a single Unicode character to a DOMString.
    *
    * @param lhs the DOMString
    * @param rhs the character
    * @return The concatenated object
    */
  //DOMString CDOM_EXPORT operator + (const DOMString &lhs, XMLCh rhs);
  
  
  /**
    * Concatenate a DOMString to a single Unicode character.
    *
    * @param lhs the character
    * @param rhs the DOMString
    * @return The concatenated object
    */
  //DOMString CDOM_EXPORT operator + (XMLCh lhs, const DOMString &rhs);
  
  //#endif
  
  
  
  1.1                  xml-xerces/perl/Xerces_headers/dom/DOM_Attr.hpp
  
  Index: DOM_Attr.hpp
  ===================================================================
  /*
   * The Apache Software License, Version 1.1
   * 
   * Copyright (c) 1999-2000 The Apache Software Foundation.  All rights
   * reserved.
   * 
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions
   * are met:
   * 
   * 1. Redistributions of source code must retain the above copyright
   *    notice, this list of conditions and the following disclaimer. 
   * 
   * 2. Redistributions in binary form must reproduce the above copyright
   *    notice, this list of conditions and the following disclaimer in
   *    the documentation and/or other materials provided with the
   *    distribution.
   * 
   * 3. The end-user documentation included with the redistribution,
   *    if any, must include the following acknowledgment:  
   *       "This product includes software developed by the
   *        Apache Software Foundation (http://www.apache.org/)."
   *    Alternately, this acknowledgment may appear in the software itself,
   *    if and wherever such third-party acknowledgments normally appear.
   * 
   * 4. The names "Xerces" and "Apache Software Foundation" must
   *    not be used to endorse or promote products derived from this
   *    software without prior written permission. For written 
   *    permission, please contact apache\@apache.org.
   * 
   * 5. Products derived from this software may not be called "Apache",
   *    nor may "Apache" appear in their name, without prior written
   *    permission of the Apache Software Foundation.
   * 
   * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
   * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
   * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
   * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
   * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
   * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
   * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   * SUCH DAMAGE.
   * ====================================================================
   * 
   * This software consists of voluntary contributions made by many
   * individuals on behalf of the Apache Software Foundation, and was
   * originally based on software copyright (c) 1999, International
   * Business Machines, Inc., http://www.ibm.com .  For more information
   * on the Apache Software Foundation, please see
   * <http://www.apache.org/>.
   */
  
  /*
   * $Log: DOM_Attr.hpp,v $
   * Revision 1.1  2001/03/07 16:03:59  jasons
   * PR:
   * Submitted by:	jason@openinformatics.com
   *
   * Added new files from Harmon's 1.3 port
   *
   * Revision 1.7  2000/03/11 02:58:38  chchou
   * Fix bug # 18, remove set method of readonly attributes
   *
   * Revision 1.6  2000/03/02 19:53:52  roddey
   * This checkin includes many changes done while waiting for the
   * 1.1.0 code to be finished. I can't list them all here, but a list is
   * available elsewhere.
   *
   * Revision 1.5  2000/02/24 20:11:27  abagchi
   * Swat for removing Log from API docs
   *
   * Revision 1.4  2000/02/17 17:47:24  andyh
   * Update Doc++ API comments
   * NameSpace update to track W3C
   * Changes were made by Chih Hsiang Chou
   *
   * Revision 1.3  2000/02/06 07:47:27  rahulj
   * Year 2K copyright swat.
   *
   * Revision 1.2  2000/01/05 01:16:06  andyh
   * DOM Level 2 core, namespace support added.
   *
   * Revision 1.1.1.1  1999/11/09 01:08:48  twl
   * Initial checkin
   *
   * Revision 1.3  1999/11/08 20:44:13  rahul
   * Swat for adding in Product name and CVS comment log variable.
   *
   */
  
  //#ifndef DOM_Attr_HEADER_GUARD_
  //#define DOM_Attr_HEADER_GUARD_
  
  //#include <util/XercesDefs.hpp>
  //#include <dom/DOM_Node.hpp>
  //#include <dom/DOM_Element.hpp>
  
  //class AttrImpl;
  
  /**
  * The <code>DOM_Attr</code> class refers to an attribute of an XML element.
  *
  * Typically the allowable values for the 
  * attribute are defined in a documenttype definition.
  * <p><code>DOM_Attr</code> objects inherit the <code>DOM_Node</code>  interface, but 
  * since attributes are not actually child nodes of the elements they are associated with, the 
  * DOM does not consider them part of the document  tree.  Thus, the 
  * <code>DOM_Node</code> attributes <code>parentNode</code>,  
  * <code>previousSibling</code>, and <code>nextSibling</code> have a  null 
  * value for <code>DOM_Attr</code> objects. The DOM takes the  view that 
  * attributes are properties of elements rather than having a  separate 
  * identity from the elements they are associated with;  this should make it 
  * more efficient to implement such features as default attributes associated 
  * with all elements of a  given type.  Furthermore, attribute nodes 
  * may not be immediate children of a <code>DocumentFragment</code>. However, 
  * they can be associated with <code>Element</code> nodes contained within a 
  * <code>DocumentFragment</code>. In short, users of the DOM 
  * need to be aware that  <code>Attr</code> nodes have some things in  common 
  * with other objects inheriting the <code>Node</code> interface, but they 
  * also are quite distinct.
  *  
  */
  class /*CDOM_EXPORT*/ DOM_Attr: public DOM_Node {
      
  //public:
    /** @name Constructors and assignment operators */
    //@{
    /**
      * Default constructor for DOM_Attr.  The resulting object does not
      * refer to any Attribute; it will compare == to 0, and is similar
      * to a null object reference variable in Java.
      *
      */
  //    DOM_Attr();
  
  public:
  
    /**
      * Copy constructor.  Creates a new <code>DOM_Attr</code> that refers to the
      *   same underlying Attribute as the original.  See also DOM_Node::clone(),
      * which will copy an actual attribute, rather than just creating a new
      * reference to the original attribute.
      *
      * @param other The source attribute reference object
      */
  //    DOM_Attr(const DOM_Attr &other);
  
    /**
      * Assignment operator
      *
      * @param other The source attribute object
      */
  //    DOM_Attr & operator = (const DOM_Attr &other);
      DOM_Attr & assignment(const DOM_Attr &other);
      
      /**
        * Assignment operator.  This overloaded variant is provided for
        *   the sole purpose of setting a DOM_Node reference variable to
        *   zero.  Nulling out a reference variable in this way will decrement
        *   the reference count on the underlying Node object that the variable
        *   formerly referenced.  This effect is normally obtained when reference
        *   variable goes out of scope, but zeroing them can be useful for
        *   global instances, or for local instances that will remain in scope
        *   for an extended time,  when the storage belonging to the underlying
        *   node needs to be reclaimed.
        *
        * @param val.  Only a value of 0, or null, is allowed.
        */
  //    DOM_Attr & operator = (const DOM_NullPtr *val);
  
  
  
  	//@}
    /** @name Destructor */
    //@{
  	    
    /**
      * Destructor.  The object being destroyed is a reference to the Attribute
      * "node", not the underlying attribute itself.
      *
      */
  //    ~DOM_Attr();
  	//@}
      
    /** @name Getter functions */
    //@{
      /**
      * Returns the name of this attribute. 
      */
      DOMString       getName() const;
  
      /**
      *
      * Returns true if the attribute received its value explicitly in the
      * XML document, or if a value was assigned programatically with
      * the setValue function.  Returns false if the attribute value 
      * came from the default value declared in the document's DTD.
      */
      bool            getSpecified() const;
  
      /**
  	* Returns the value of the attribute.
  	*
      * The value of the attribute is returned as a string. 
      * Character and general entity references are replaced with their values.
      */
      DOMString       getValue() const;
      
  	//@}
    /** @name Setter functions */
    //@{
      /**
  	* Sets the value of the attribute.  A text node with the unparsed contents
      * of the string will be created.
  	*
      * @param value The value of the DOM attribute to be set
      */
      void            setValue(const DOMString &value);
  	//@}
  
      /** @name Functions introduced in DOM Level 2. */
      //@{
      /**
       * The <code>DOM_Element</code> node this attribute is attached to or
       * <code>null</code> if this attribute is not in use.
       *
       * <p><b>"Experimental - subject to change"</b></p>
       *
       */
      DOM_Element     getOwnerElement() const;
      //@}
  
  //protected:
  //    DOM_Attr(AttrImpl *attr);
  
  //    friend class DOM_Element;
  //    friend class DOM_Document;
  
  };
  
  //#endif
  
  
  
  
  
  1.1                  xml-xerces/perl/Xerces_headers/dom/DOM_CDATASection.hpp
  
  Index: DOM_CDATASection.hpp
  ===================================================================
  /*
   * The Apache Software License, Version 1.1
   * 
   * Copyright (c) 1999-2000 The Apache Software Foundation.  All rights
   * reserved.
   * 
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions
   * are met:
   * 
   * 1. Redistributions of source code must retain the above copyright
   *    notice, this list of conditions and the following disclaimer. 
   * 
   * 2. Redistributions in binary form must reproduce the above copyright
   *    notice, this list of conditions and the following disclaimer in
   *    the documentation and/or other materials provided with the
   *    distribution.
   * 
   * 3. The end-user documentation included with the redistribution,
   *    if any, must include the following acknowledgment:  
   *       "This product includes software developed by the
   *        Apache Software Foundation (http://www.apache.org/)."
   *    Alternately, this acknowledgment may appear in the software itself,
   *    if and wherever such third-party acknowledgments normally appear.
   * 
   * 4. The names "Xerces" and "Apache Software Foundation" must
   *    not be used to endorse or promote products derived from this
   *    software without prior written permission. For written 
   *    permission, please contact apache\@apache.org.
   * 
   * 5. Products derived from this software may not be called "Apache",
   *    nor may "Apache" appear in their name, without prior written
   *    permission of the Apache Software Foundation.
   * 
   * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
   * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
   * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
   * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
   * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
   * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
   * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   * SUCH DAMAGE.
   * ====================================================================
   * 
   * This software consists of voluntary contributions made by many
   * individuals on behalf of the Apache Software Foundation, and was
   * originally based on software copyright (c) 1999, International
   * Business Machines, Inc., http://www.ibm.com .  For more information
   * on the Apache Software Foundation, please see
   * <http://www.apache.org/>.
   */
  
  /*
   * $Log: DOM_CDATASection.hpp,v $
   * Revision 1.1  2001/03/07 16:03:59  jasons
   * PR:
   * Submitted by:	jason@openinformatics.com
   *
   * Added new files from Harmon's 1.3 port
   *
   * Revision 1.5  2000/03/02 19:53:52  roddey
   * This checkin includes many changes done while waiting for the
   * 1.1.0 code to be finished. I can't list them all here, but a list is
   * available elsewhere.
   *
   * Revision 1.4  2000/02/24 20:11:27  abagchi
   * Swat for removing Log from API docs
   *
   * Revision 1.3  2000/02/06 07:47:28  rahulj
   * Year 2K copyright swat.
   *
   * Revision 1.2  2000/01/05 01:16:06  andyh
   * DOM Level 2 core, namespace support added.
   *
   * Revision 1.1.1.1  1999/11/09 01:08:49  twl
   * Initial checkin
   *
   * Revision 1.2  1999/11/08 20:44:13  rahul
   * Swat for adding in Product name and CVS comment log variable.
   *
   */
  
  //#ifndef DOM_CDataSection_HEADER_GUARD_
  //#define DOM_CDataSection_HEADER_GUARD_
  
  //#include <util/XercesDefs.hpp>
  //#include <dom/DOM_Text.hpp>
  
  //class CDATASectionImpl;
  
  /**
   * <code>DOM_CDataSection</code> objects refer to the data from an
   * XML CDATA section.  These are used to escape blocks of text containing  characters 
   * that would otherwise be regarded as markup.
   *
   * <p>Note that the string data associated with the CDATA section may 
   * contain characters that need to be escaped when appearing in an
   * XML document outside of a CDATA section.  
   * <p> The <code>DOM_CDATASection</code> class inherits from the 
   * <code>DOM_CharacterData</code> class through the <code>Text</code> 
   * interface. Adjacent CDATASection nodes are not merged by use 
   * of the Element.normalize() method.
   */
  class /*CDOM_EXPORT*/ DOM_CDATASection: public DOM_Text {
  public:
    /** @name Constructors and assignment operators */
    //@{
    /**
      * Default constructor for DOM_CDATASection.  The resulting object does not
      * refer to any actual CData section; it will compare == to 0, and is similar
      * to a null object reference variable in Java.
      *
      */
  //        DOM_CDATASection();
    /**
      * Copy constructor.  Creates a new <code>DOM_CDataSection</code> that refers to the
      *   same underlying data as the original.  See also <code>DOM_Node::clone()</code>,
      * which will copy the underlying data, rather than just creating a new
      * reference to the original object.
      *
      * @param other The source <code>DOM_CDATASection</code> object
      */
  //        DOM_CDATASection(const DOM_CDATASection &other);
  
    /**
      * Assignment operator.
      *
      * @param other The object to be copied.
      */
  //        DOM_CDATASection & operator = (const DOM_CDATASection &other);
          DOM_CDATASection & assignment(const DOM_CDATASection &other);
  
      /**
        * Assignment operator.  This overloaded variant is provided for
        *   the sole purpose of setting a DOM_Node reference variable to
        *   zero.  Nulling out a reference variable in this way will decrement
        *   the reference count on the underlying Node object that the variable
        *   formerly referenced.  This effect is normally obtained when reference
        *   variable goes out of scope, but zeroing them can be useful for
        *   global instances, or for local instances that will remain in scope
        *   for an extended time,  when the storage belonging to the underlying
        *   node needs to be reclaimed.
        *
        * @param val.  Only a value of 0, or null, is allowed.
        */
  //    DOM_CDATASection & operator = (const DOM_NullPtr *val);
  
  
      //@}
      /** @name Destructor. */
      //@{
  	 /**
  	  * Destructor for DOM_CDATASection.
  	  *
  	  */
  
  //	    ~DOM_CDATASection();
      //@}
  
  
  //protected:
  //	DOM_CDATASection(CDATASectionImpl *);
  
  //    friend class DOM_Document;
  
  };
  //#endif
  
  
  
  
  
  1.1                  xml-xerces/perl/Xerces_headers/dom/DOM_CharacterData.hpp
  
  Index: DOM_CharacterData.hpp
  ===================================================================
  /*
   * The Apache Software License, Version 1.1
   * 
   * Copyright (c) 1999-2000 The Apache Software Foundation.  All rights
   * reserved.
   * 
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions
   * are met:
   * 
   * 1. Redistributions of source code must retain the above copyright
   *    notice, this list of conditions and the following disclaimer. 
   * 
   * 2. Redistributions in binary form must reproduce the above copyright
   *    notice, this list of conditions and the following disclaimer in
   *    the documentation and/or other materials provided with the
   *    distribution.
   * 
   * 3. The end-user documentation included with the redistribution,
   *    if any, must include the following acknowledgment:  
   *       "This product includes software developed by the
   *        Apache Software Foundation (http://www.apache.org/)."
   *    Alternately, this acknowledgment may appear in the software itself,
   *    if and wherever such third-party acknowledgments normally appear.
   * 
   * 4. The names "Xerces" and "Apache Software Foundation" must
   *    not be used to endorse or promote products derived from this
   *    software without prior written permission. For written 
   *    permission, please contact apache\@apache.org.
   * 
   * 5. Products derived from this software may not be called "Apache",
   *    nor may "Apache" appear in their name, without prior written
   *    permission of the Apache Software Foundation.
   * 
   * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
   * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
   * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
   * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
   * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
   * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
   * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   * SUCH DAMAGE.
   * ====================================================================
   * 
   * This software consists of voluntary contributions made by many
   * individuals on behalf of the Apache Software Foundation, and was
   * originally based on software copyright (c) 1999, International
   * Business Machines, Inc., http://www.ibm.com .  For more information
   * on the Apache Software Foundation, please see
   * <http://www.apache.org/>.
   */
  
  /*
   * $Log: DOM_CharacterData.hpp,v $
   * Revision 1.1  2001/03/07 16:03:59  jasons
   * PR:
   * Submitted by:	jason@openinformatics.com
   *
   * Added new files from Harmon's 1.3 port
   *
   * Revision 1.6  2000/03/02 19:53:53  roddey
   * This checkin includes many changes done while waiting for the
   * 1.1.0 code to be finished. I can't list them all here, but a list is
   * available elsewhere.
   *
   * Revision 1.5  2000/02/24 20:11:27  abagchi
   * Swat for removing Log from API docs
   *
   * Revision 1.4  2000/02/15 23:17:36  andyh
   * Update Doc++ API comments
   * NameSpace bugfix and update to track W3C
   * Chih Hsiang Chou
   *
   * Revision 1.3  2000/02/06 07:47:28  rahulj
   * Year 2K copyright swat.
   *
   * Revision 1.2  2000/02/04 01:49:29  aruna1
   * TreeWalker and NodeIterator changes
   *
   * Revision 1.1.1.1  1999/11/09 01:08:49  twl
   * Initial checkin
   *
   * Revision 1.2  1999/11/08 20:44:13  rahul
   * Swat for adding in Product name and CVS comment log variable.
   *
   */
  
  //#ifndef DOM_CharacterData_HEADER_GUARD_
  //#define DOM_CharacterData_HEADER_GUARD_
  
  //#include <util/XercesDefs.hpp>
  //#include <dom/DOM_Node.hpp>
  
  //class CharacterDataImpl;
  
  /**
   * The <code>DOM_CharacterData</code> interface extends Node with a set  of 
   * methods for accessing character data in the DOM.
   *
   * For clarity this set is defined here rather than on each class that uses 
   * these methods. No DOM objects correspond directly to 
   * <code>CharacterData</code>, though <code>Text</code> and others do inherit 
   * the interface from it. All <code>offset</code>s in this interface start 
   * from 0, and index in terms of Unicode 16 bit storage units.
   */
  class /*CDOM_EXPORT*/ DOM_CharacterData: public DOM_Node {
  
  //private:
  
  public:
    /** @name Constructors and assignment operator */
    //@{
    /**
      * Default constructor for DOM_CharacterData.  While there can be
      * no actual DOM nodes of type CharacterData, the C++ objects
      * function more like reference variables, and instances of
      * <code>DOM_CharacterData</code> can exist.  They will be null when created
      * by this constructor, and can then be assigned to refer to Text
      * or CDATASection nodes.
      */
  //    DOM_CharacterData();
  
    /**
      * Copy constructor
      *
      * @param other The object to be copied
      */
  //    DOM_CharacterData(const DOM_CharacterData &other);
    /**
      * Assignment operator
      *
      * @param other The object to be copied
      */
  //    DOM_CharacterData & operator = (const DOM_CharacterData &other);
      DOM_CharacterData & assignment(const DOM_CharacterData &other);
  
      /**
        * Assignment operator.  This overloaded variant is provided for
        *   the sole purpose of setting a DOM_Node reference variable to
        *   zero.  Nulling out a reference variable in this way will decrement
        *   the reference count on the underlying Node object that the variable
        *   formerly referenced.  This effect is normally obtained when reference
        *   variable goes out of scope, but zeroing them can be useful for
        *   global instances, or for local instances that will remain in scope
        *   for an extended time,  when the storage belonging to the underlying
        *   node needs to be reclaimed.
        *
        * @param val.  Only a value of 0, or null, is allowed.
        */
  //    DOM_CharacterData & operator = (const DOM_NullPtr *val);
  
      //@}
      /** @name Destructor. */
      //@{
  	 /**
  	  * Destructor for DOM_CharacterData.  The object being destroyed
        * is the reference to the Character Data node, not the character
        * data itself.
  	  */
  //    ~DOM_CharacterData();
  
  
      //@}
  
      /** @name Getter functions. */
      //@{
    /**
     * Returns the character data of the node that implements this interface. 
     *
     * The DOM implementation may not put arbitrary limits on the amount of data that 
     * may be stored in a  <code>CharacterData</code> node. However, 
     * implementation limits may  mean that the entirety of a node's data may 
     * not fit into a single <code>DOMString</code>. In such cases, the user 
     * may call <code>substringData</code> to retrieve the data in 
     * appropriately sized pieces.
     * @exception DOMException
     *   NO_MODIFICATION_ALLOWED_ERR: Raised when the node is readonly.
     * @exception DOMException
     *   DOMSTRING_SIZE_ERR: Raised when it would return more characters than 
     *   fit in a <code>DOMString</code> variable on the implementation 
     *   platform.
     */
    DOMString          getData() const;
    /**
     * Returns the number of characters that are available through <code>data</code> and 
     * the <code>substringData</code> method below. 
     *
     * This may have the value 
     * zero, i.e., <code>CharacterData</code> nodes may be empty.
     */
    unsigned int       getLength() const;
    /**
     * Extracts a range of data from the node.
     *
     * @param offset Start offset of substring to extract.
     * @param count The number of characters to extract.
     * @return The specified substring. If the sum of <code>offset</code> and 
     *   <code>count</code> exceeds the <code>length</code>, then all 
     *   characters to the end of the data are returned.
     * @exception DOMException
     *   INDEX_SIZE_ERR: Raised if the specified offset is negative or greater 
     *   than the number of characters in <code>data</code>, or if the 
     *   specified <code>count</code> is negative.
     *   <br>DOMSTRING_SIZE_ERR: Raised if the specified range of text does not 
     *   fit into a <code>DOMString</code>.
     */
    DOMString          substringData(unsigned int offset, 
                                     unsigned int count) const;
      //@}
      /** @name Functions that set or change data. */
      //@{
    /**
     * Append the string to the end of the character data of the node.
     *
     * Upon success, <code>data</code> provides access to the concatenation of 
     * <code>data</code> and the <code>DOMString</code> specified.
     * @param arg The <code>DOMString</code> to append.
     * @exception DOMException
     *   NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly.
     */
    void               appendData(const DOMString &arg);
    /**
     * Insert a string at the specified character offset.
     *
     * @param offset The character offset at which to insert.
     * @param arg The <code>DOMString</code> to insert.
     * @exception DOMException
     *   INDEX_SIZE_ERR: Raised if the specified offset is negative or greater 
     *   than the number of characters in <code>data</code>.
     *   <br>NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly.
     */
    void               insertData(unsigned int offset, const  DOMString &arg);
    /**
     * Remove a range of characters from the node. 
     *
     * Upon success, 
     * <code>data</code> and <code>length</code> reflect the change.
     * @param offset The offset from which to remove characters.
     * @param count The number of characters to delete. If the sum of 
     *   <code>offset</code> and <code>count</code> exceeds <code>length</code> 
     *   then all characters from <code>offset</code> to the end of the data 
     *   are deleted.
     * @exception DOMException
     *   INDEX_SIZE_ERR: Raised if the specified offset is negative or greater 
     *   than the number of characters in <code>data</code>, or if the 
     *   specified <code>count</code> is negative.
     *   <br>NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly.
     */
    void               deleteData(unsigned int offset, 
                                  unsigned int count);
    /**
     * Replace the characters starting at the specified character offset with 
     * the specified string.
     *
     * @param offset The offset from which to start replacing.
     * @param count The number of characters to replace. If the sum of 
     *   <code>offset</code> and <code>count</code> exceeds <code>length</code>
     *   , then all characters to the end of the data are replaced (i.e., the 
     *   effect is the same as a <code>remove</code> method call with the same 
     *   range, followed by an <code>append</code> method invocation).
     * @param arg The <code>DOMString</code> with which the range must be 
     *   replaced.
     * @exception DOMException
     *   INDEX_SIZE_ERR: Raised if the specified offset is negative or greater 
     *   than the number of characters in <code>data</code>, or if the 
     *   specified <code>count</code> is negative.
     *   <br>NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly.
     */
    void               replaceData(unsigned int offset, 
                                   unsigned int count, 
                                   const DOMString &arg);
  
    /**
     * Sets the character data of the node that implements this interface. 
     *
     * @param data The <code>DOMString</code> to set.
     */
    void               setData(const DOMString &data);
    //@}
  
  //protected:
  //    DOM_CharacterData(CharacterDataImpl *impl);
  
  };
  
  //#endif
  
  
  
  
  
  1.1                  xml-xerces/perl/Xerces_headers/dom/DOM_Comment.hpp
  
  Index: DOM_Comment.hpp
  ===================================================================
  /*
   * The Apache Software License, Version 1.1
   * 
   * Copyright (c) 1999-2000 The Apache Software Foundation.  All rights
   * reserved.
   * 
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions
   * are met:
   * 
   * 1. Redistributions of source code must retain the above copyright
   *    notice, this list of conditions and the following disclaimer. 
   * 
   * 2. Redistributions in binary form must reproduce the above copyright
   *    notice, this list of conditions and the following disclaimer in
   *    the documentation and/or other materials provided with the
   *    distribution.
   * 
   * 3. The end-user documentation included with the redistribution,
   *    if any, must include the following acknowledgment:  
   *       "This product includes software developed by the
   *        Apache Software Foundation (http://www.apache.org/)."
   *    Alternately, this acknowledgment may appear in the software itself,
   *    if and wherever such third-party acknowledgments normally appear.
   * 
   * 4. The names "Xerces" and "Apache Software Foundation" must
   *    not be used to endorse or promote products derived from this
   *    software without prior written permission. For written 
   *    permission, please contact apache\@apache.org.
   * 
   * 5. Products derived from this software may not be called "Apache",
   *    nor may "Apache" appear in their name, without prior written
   *    permission of the Apache Software Foundation.
   * 
   * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
   * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
   * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
   * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
   * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
   * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
   * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   * SUCH DAMAGE.
   * ====================================================================
   * 
   * This software consists of voluntary contributions made by many
   * individuals on behalf of the Apache Software Foundation, and was
   * originally based on software copyright (c) 1999, International
   * Business Machines, Inc., http://www.ibm.com .  For more information
   * on the Apache Software Foundation, please see
   * <http://www.apache.org/>.
   */
  
  /*
   * $Log: DOM_Comment.hpp,v $
   * Revision 1.1  2001/03/07 16:03:59  jasons
   * PR:
   * Submitted by:	jason@openinformatics.com
   *
   * Added new files from Harmon's 1.3 port
   *
   * Revision 1.5  2000/03/02 19:53:54  roddey
   * This checkin includes many changes done while waiting for the
   * 1.1.0 code to be finished. I can't list them all here, but a list is
   * available elsewhere.
   *
   * Revision 1.4  2000/02/24 20:11:27  abagchi
   * Swat for removing Log from API docs
   *
   * Revision 1.3  2000/02/06 07:47:28  rahulj
   * Year 2K copyright swat.
   *
   * Revision 1.2  2000/01/05 01:16:06  andyh
   * DOM Level 2 core, namespace support added.
   *
   * Revision 1.1.1.1  1999/11/09 01:08:50  twl
   * Initial checkin
   *
   * Revision 1.2  1999/11/08 20:44:14  rahul
   * Swat for adding in Product name and CVS comment log variable.
   *
   */
  
  //#ifndef DOM_Comment_HEADER_GUARD_
  //#define DOM_Comment_HEADER_GUARD_
  
  //#include <util/XercesDefs.hpp>
  //#include <dom/DOM_CharacterData.hpp>
  
  //class CommentImpl;
  
  /**
   * Class to refer to XML comment nodes in the DOM.
   *
   * <P>The string value contains all of the characters between 
   * the starting '<code>&lt;!--</code>' and ending '<code>--&gt;</code>'.
   */
  class /*CDOM_EXPORT*/ DOM_Comment: public DOM_CharacterData {
  
  public:
    /** @name Constructors and assignment operators */
    //@{
    /**
      * Default constructor for DOM_Comment.  The resulting object does not
      * refer to an actual Comment node; it will compare == to 0, and is similar
      * to a null object reference variable in Java.  It may subsequently be
      * assigned to refer to an actual comment node.
      * <p>
      * New comment nodes are created by DOM_Document::createComment().
      *
      */
  //    DOM_Comment();
  
    /**
      * Copy constructor.   Creates a new <code>DOM_Comment</code> that refers to the
      * same underlying node as the original.  See also DOM_Node::clone(),
      * which will copy the actual Comment node, rather than just creating a new
      * reference to the original node.
      *
      * @param other The object to be copied.
      */
  //    DOM_Comment(const DOM_Comment &other);
    /**
      * Assignment operator.
      *
      * @param other The object to be copied.
      */
  //    DOM_Comment & operator = (const DOM_Comment &other);
      DOM_Comment & assignment(const DOM_Comment &other);
  
      /**
        * Assignment operator.  This overloaded variant is provided for
        *   the sole purpose of setting a DOM_Node reference variable to
        *   zero.  Nulling out a reference variable in this way will decrement
        *   the reference count on the underlying Node object that the variable
        *   formerly referenced.  This effect is normally obtained when reference
        *   variable goes out of scope, but zeroing them can be useful for
        *   global instances, or for local instances that will remain in scope
        *   for an extended time,  when the storage belonging to the underlying
        *   node needs to be reclaimed.
        *
        * @param val.  Only a value of 0, or null, is allowed.
        */
  //    DOM_Comment & operator = (const DOM_NullPtr *val);
  
  
  
      //@}
      /** @name Destructor. */
      //@{
  	 /**
  	  * Destructor for DOM_Comment.  The object being destroyed is the reference
        * object, not the underlying Comment node itself.
        * 
  	  */
  //    ~DOM_Comment();
      //@}
  
  //protected:
  //    DOM_Comment(CommentImpl *comment);
  
  //    friend class DOM_Document;
  
  
  
  };
  
  //#endif
  
  
  
  
  1.1                  xml-xerces/perl/Xerces_headers/dom/DOM_DOMImplementation.hpp
  
  Index: DOM_DOMImplementation.hpp
  ===================================================================
  /*
   * The Apache Software License, Version 1.1
   * 
   * Copyright (c) 1999-2000 The Apache Software Foundation.  All rights
   * reserved.
   * 
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions
   * are met:
   * 
   * 1. Redistributions of source code must retain the above copyright
   *    notice, this list of conditions and the following disclaimer. 
   * 
   * 2. Redistributions in binary form must reproduce the above copyright
   *    notice, this list of conditions and the following disclaimer in
   *    the documentation and/or other materials provided with the
   *    distribution.
   * 
   * 3. The end-user documentation included with the redistribution,
   *    if any, must include the following acknowledgment:  
   *       "This product includes software developed by the
   *        Apache Software Foundation (http://www.apache.org/)."
   *    Alternately, this acknowledgment may appear in the software itself,
   *    if and wherever such third-party acknowledgments normally appear.
   * 
   * 4. The names "Xerces" and "Apache Software Foundation" must
   *    not be used to endorse or promote products derived from this
   *    software without prior written permission. For written 
   *    permission, please contact apache\@apache.org.
   * 
   * 5. Products derived from this software may not be called "Apache",
   *    nor may "Apache" appear in their name, without prior written
   *    permission of the Apache Software Foundation.
   * 
   * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
   * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
   * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
   * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
   * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
   * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
   * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   * SUCH DAMAGE.
   * ====================================================================
   * 
   * This software consists of voluntary contributions made by many
   * individuals on behalf of the Apache Software Foundation, and was
   * originally based on software copyright (c) 1999, International
   * Business Machines, Inc., http://www.ibm.com .  For more information
   * on the Apache Software Foundation, please see
   * <http://www.apache.org/>.
   */
  
  /*
   * $Log: DOM_DOMImplementation.hpp,v $
   * Revision 1.1  2001/03/07 16:03:59  jasons
   * PR:
   * Submitted by:	jason@openinformatics.com
   *
   * Added new files from Harmon's 1.3 port
   *
   * Revision 1.7  2000/03/02 19:53:54  roddey
   * This checkin includes many changes done while waiting for the
   * 1.1.0 code to be finished. I can't list them all here, but a list is
   * available elsewhere.
   *
   * Revision 1.6  2000/02/24 20:11:27  abagchi
   * Swat for removing Log from API docs
   *
   * Revision 1.5  2000/02/17 17:47:24  andyh
   * Update Doc++ API comments
   * NameSpace update to track W3C
   * Changes were made by Chih Hsiang Chou
   *
   * Revision 1.4  2000/02/10 23:35:11  andyh
   * Update DOM_DOMImplementation::CreateDocumentType and
   * DOM_DocumentType to match latest from W3C
   *
   * Revision 1.3  2000/02/06 07:47:28  rahulj
   * Year 2K copyright swat.
   *
   * Revision 1.2  2000/01/05 01:16:07  andyh
   * DOM Level 2 core, namespace support added.
   *
   * Revision 1.1.1.1  1999/11/09 01:08:57  twl
   * Initial checkin
   *
   * Revision 1.3  1999/11/08 20:44:15  rahul
   * Swat for adding in Product name and CVS comment log variable.
   *
   */
  
  //#ifndef DOMImplementation_HEADER_GUARD_
  //#define DOMImplementation_HEADER_GUARD_
  
  //#include <util/XercesDefs.hpp>
  //#include <dom/DOMString.hpp>
  
  //class DOM_Document;
  //class DOM_DocumentType;
  
  /**
   *   This class provides a way to query the capabilities of an implementation
   *   of the DOM
   */
  
  
  class /*CDOM_EXPORT*/ DOM_DOMImplementation {
  // private:
  //    DOM_DOMImplementation(const DOM_DOMImplementation &other);
  
   public:
  /** @name Constructors and assignment operators */
  //@{  
   /**
     * Construct a DOM_Implementation reference variable, which should
     * be assigned to the return value from 
     * <code>DOM_Implementation::getImplementation()</code>.
     */
  //    DOM_DOMImplementation();
  
   /**
     * Assignment operator
     *
     */
  //    DOM_DOMImplementation & operator = (const DOM_DOMImplementation &other);
      DOM_DOMImplementation & assignment(const DOM_DOMImplementation &other);
  //@}
  
    /** @name Destructor */
    //@{  
    /**
      * Destructor.  The object being destroyed is a reference to the DOMImplemenentation,
      * not the underlying DOMImplementation object itself, which is owned by
      * the implementation code.
      *
      */
  
  //    ~DOM_DOMImplementation();
  	//@}
  
    /** @name Getter functions */
    //@{
  
   /**
     * Test if the DOM implementation implements a specific feature.
     *
     * @param feature The string of the feature to test (case-insensitive). The legal 
     *        values are defined throughout this specification. The string must be 
     *        an <EM>XML name</EM> (see also Compliance).
     * @param version This is the version number of the package name to test.  
     *   In Level 1, this is the string "1.0". If the version is not specified, 
     *   supporting any version of the  feature will cause the method to return 
     *   <code>true</code>. 
     * @return <code>true</code> if the feature is implemented in the specified 
     *   version, <code>false</code> otherwise.
     */
   bool  hasFeature(const DOMString &feature,  const DOMString &version);
  
  
    /** Return a reference to a DOM_Implementation object for this 
      *  DOM implementation. 
      *
      * Intended to support applications that may be
      * using DOMs retrieved from several different sources, potentially
      * with different underlying implementations.
      */
   static DOM_DOMImplementation &getImplementation();
    
   //@}
  
      /** @name Functions introduced in DOM Level 2. */
      //@{
      /**
       * Creates an empty <code>DOM_DocumentType</code> node.
       * Entity declarations and notations are not made available.
       * Entity reference expansions and default attribute additions
       * do not occur. It is expected that a future version of the DOM
       * will provide a way for populating a <code>DOM_DocumentType</code>.
       *
       * <p><b>"Experimental - subject to change"</b></p>
       *
       * @param qualifiedName The <em>qualified name</em>
       * of the document type to be created.
       * @param publicId The external subset public identifier.
       * @param systemId The external subset system identifier.
       * @return A new <code>DOM_DocumentType</code> node with
       * <code>Node.ownerDocument</code> set to <code>null</code>.
       * @exception DOMException
       *   INVALID_CHARACTER_ERR: Raised if the specified qualified name
       *      contains an illegal character.
       * <br>
       *   NAMESPACE_ERR: Raised if the <code>qualifiedName</code> is malformed.
       */
      DOM_DocumentType createDocumentType(const DOMString &qualifiedName,
  	const DOMString &publicId, const DOMString &systemId);
  
      /**
       * Creates an XML <code>DOM_Document</code> object of the specified type
       * with its document element.
       *
       * <p><b>"Experimental - subject to change"</b></p>
       *
       * @param namespaceURI The <em>namespace URI</em> of
       * the document element to create, or <code>null</code>.
       * @param qualifiedName The <em>qualified name</em>
       * of the document element to be created.
       * @param doctype The type of document to be created or <code>null</code>.
       * <p>When <code>doctype</code> is not <code>null</code>, its
       * <code>Node.ownerDocument</code> attribute is set to the document
       * being created.
       * @return A new <code>DOM_Document</code> object.
       * @exception DOMException
       *   INVALID_CHARACTER_ERR: Raised if the specified qualified name
       *      contains an illegal character.
       * <br>
       *   NAMESPACE_ERR: Raised if the <CODE>qualifiedName</CODE> is 
       *      malformed, or if the <CODE>qualifiedName</CODE> has a prefix that is 
       *      "xml" and the <CODE>namespaceURI</CODE> is different from 
       *      "http://www.w3.org/XML/1998/namespace".
       * <br>
       *   WRONG_DOCUMENT_ERR: Raised if <code>doctype</code> has already
       *   been used with a different document.
       */
      DOM_Document createDocument(const DOMString &namespaceURI,
  	const DOMString &qualifiedName, const DOM_DocumentType &doctype);
      //@}
  
  };
  
  //#endif
  
  
  
  1.1                  xml-xerces/perl/Xerces_headers/dom/DOM_Document.hpp
  
  Index: DOM_Document.hpp
  ===================================================================
  /*
   * The Apache Software License, Version 1.1
   *
   * Copyright (c) 1999-2000 The Apache Software Foundation.  All rights
   * reserved.
   *
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions
   * are met:
   *
   * 1. Redistributions of source code must retain the above copyright
   *    notice, this list of conditions and the following disclaimer.
   *
   * 2. Redistributions in binary form must reproduce the above copyright
   *    notice, this list of conditions and the following disclaimer in
   *    the documentation and/or other materials provided with the
   *    distribution.
   *
   * 3. The end-user documentation included with the redistribution,
   *    if any, must include the following acknowledgment:
   *       "This product includes software developed by the
   *        Apache Software Foundation (http://www.apache.org/)."
   *    Alternately, this acknowledgment may appear in the software itself,
   *    if and wherever such third-party acknowledgments normally appear.
   *
   * 4. The names "Xerces" and "Apache Software Foundation" must
   *    not be used to endorse or promote products derived from this
   *    software without prior written permission. For written
   *    permission, please contact apache\@apache.org.
   *
   * 5. Products derived from this software may not be called "Apache",
   *    nor may "Apache" appear in their name, without prior written
   *    permission of the Apache Software Foundation.
   *
   * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
   * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
   * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
   * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
   * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
   * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
   * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   * SUCH DAMAGE.
   * ====================================================================
   *
   * This software consists of voluntary contributions made by many
   * individuals on behalf of the Apache Software Foundation, and was
   * originally based on software copyright (c) 1999, International
   * Business Machines, Inc., http://www.ibm.com .  For more information
   * on the Apache Software Foundation, please see
   * <http://www.apache.org/>.
   */
  
  /*
   * $Id: DOM_Document.hpp,v 1.1 2001/03/07 16:04:00 jasons Exp $
  */
  
  //#ifndef DOM_Document_HEADER_GUARD_
  //#define DOM_Document_HEADER_GUARD_
  
  //#include <util/XercesDefs.hpp>
  //#include <dom/DOM_DocumentType.hpp>
  //#include <dom/DOM_DOMImplementation.hpp>
  //#include <dom/DOM_Element.hpp>
  //#include <dom/DOM_DocumentFragment.hpp>
  //#include <dom/DOM_Comment.hpp>
  //#include <dom/DOM_CDATASection.hpp>
  //#include <dom/DOM_ProcessingInstruction.hpp>
  //#include <dom/DOM_Attr.hpp>
  //#include <dom/DOM_Entity.hpp>
  //#include <dom/DOM_EntityReference.hpp>
  //#include <dom/DOM_NodeList.hpp>
  //#include <dom/DOM_Notation.hpp>
  //#include <dom/DOM_Text.hpp>
  //#include <dom/DOM_Node.hpp>
  //#include <dom/DOM_NodeIterator.hpp>
  //#include <dom/DOM_TreeWalker.hpp>
  //#include <dom/DOM_XMLDecl.hpp>
  //#include <dom/DOM_Range.hpp>
  
  //class DocumentImpl;
  //class NodeIteratorImpl;
  
  
  /**
  * Class to refer to XML Document nodes in the DOM.
  *
  * Conceptually, a DOM document node is the root of the document tree, and provides
  * the  primary access to the document's data.
  * <p>Since elements, text nodes, comments, processing instructions, etc.
  * cannot exist outside the context of a <code>Document</code>, the
  * <code>Document</code> interface also contains the factory methods needed
  * to create these objects.  The <code>Node</code> objects created have a
  * <code>ownerDocument</code> attribute which associates them with the
  * <code>Document</code> within whose  context they were created.
  */
  class /*CDOM_EXPORT*/ DOM_Document: public DOM_Node {
  
  public:
      /** @name Constructors and assignment operators */
      //@{
      /**
       * The default constructor for DOM_Document creates a null
       * DOM_Document object that refers to no document.  It may subsequently be
       * assigned to refer to an actual Document node.
       *
       * To create a new document, use the static method
       *   <code> DOM_Document::createDocument(). </code>
       *
       */
  //    DOM_Document();
  
      /**
        * Copy constructor.  Creates a new <code>DOM_Document</code> that refers to the
        * same underlying actual document as the original.
        *
        * @param other The object to be copied
        */
  //    DOM_Document(const DOM_Document &other);
      /**
        * Assignment operator
        *
        * @param other The object to be copied
        */
  //    DOM_Document & operator = (const DOM_Document &other);
      DOM_Document & assignment(const DOM_Document &other);
  
      /**
        * Assignment operator.  This overloaded variant is provided for
        *   the sole purpose of setting a DOM_Node reference variable to
        *   zero.  Nulling out a reference variable in this way will decrement
        *   the reference count on the underlying Node object that the variable
        *   formerly referenced.  This effect is normally obtained when reference
        *   variable goes out of scope, but zeroing them can be useful for
        *   global instances, or for local instances that will remain in scope
        *   for an extended time,  when the storage belonging to the underlying
        *   node needs to be reclaimed.
        *
        * @param val.  Only a value of 0, or null, is allowed.
        */
  //    DOM_Document & operator = (const DOM_NullPtr *val);
  
  
  
  	//@}
    /** @name Destructor */
    //@{
  	
    /**
      * Destructor.  The object being destroyed is the reference
      * object, not the underlying Document itself.
      *
      * <p>The reference counting memory management will
      *  delete the underlying document itself if this
      * DOM_Document is the last remaining to refer to the Document,
      * and if there are no remaining references to any of the nodes
      * within the document tree.  If other live references do remain,
      * the underlying document itself remains also.
      *
      */
  //    ~DOM_Document();
  
    //@}
    /** @name Factory methods to create new nodes for the Document */
    //@{
  
      /**
      *   Create a new empty document.
      *
      *   This differs from the <code> DOM_Document </code> default
      *   constructor, which creates
      *   a null reference only, not an actual document.
      *
      *   <p>This function is an extension to the DOM API, which
      *   lacks any mechanism for the creation of new documents.
      *   @return A new <code>DOM_Document</code>, which may then
      *   be populated using the DOM API calls.
      */
      static DOM_Document   createDocument();
  
      /**
      *  Create a new entity.
      *
      *  Non-standard extension.
      * @param name The name of the entity to instantiate
      *
      */
      DOM_Entity     createEntity(const DOMString &name);
  
      /**
      * Creates an element of the type specified.
      *
      * Note that the instance returned
      * implements the Element interface, so attributes can be specified
      * directly  on the returned object.
      * @param tagName The name of the element type to instantiate.
      * @return A <code>DOM_Element</code> that reference the new element.
      * @exception DOMException
      *   INVALID_CHARACTER_ERR: Raised if the specified name contains an
      *   illegal character.
      */
      DOM_Element     createElement(const DOMString &tagName);
  
      /**
      * Creates an element of the type specified.
      * This non-standard overload of createElement, with the name specified as
      * raw Unicode string, is intended for use from XML parsers,
      * and is the best performing way to create elements.  The name
      * string is not checked for conformance to the XML rules for valid
      * element names.
      *
      *
      * @param tagName The name of the element type to instantiate, as
      *    a null-terminated unicode string.
      * @return A new <CODE>DOM_Element</CODE> 
      *        object with the <CODE>nodeName</CODE> attribute set to 
      *        <CODE>tagName</CODE>, and <CODE>localName</CODE>, 
      *        <CODE>prefix</CODE>, and <CODE>namespaceURI</CODE> set to 
      *        <CODE>null</CODE>.
      */
  //    DOM_Element     createElement(const XMLCh *tagName);
  
  
      /**
      * Creates an empty DocumentFragment object.
      *
      * @return A <code>DOM_DocumentFragment</code> that references the newly
      * created document fragment.
      */
      DOM_DocumentFragment   createDocumentFragment();
  
      /**
      * Creates a Text node given the specified string.
      *
      * @param data The data for the node.
      * @return A <code>DOM_Text</code> object that references the newly
      *  created text node.
      */
      DOM_Text         createTextNode(const DOMString &data);
  
      /**
      * Creates a Comment node given the specified string.
      *
      * @param data The data for the comment.
      * @return A <code>DOM_Comment</code> that references the newly
      *  created comment node.
      */
      DOM_Comment      createComment(const DOMString &data);
  
      /**
      * Creates a CDATASection node whose value  is the specified
      * string.
      *
      * @param data The data for the <code>DOM_CDATASection</code> contents.
      * @return A <code>DOM_CDATASection</code> object.
      * @exception DOMException
      *   NOT_SUPPORTED_ERR: Raised if this document is an HTML document.
      */
      DOM_CDATASection   createCDATASection(const DOMString &data);
  
      /**
      *  Create a DocumentType node.  Non-standard extension.
      *
      * @return A <code>DOM_DocumentType</code> that references the newly
      *  created DocumentType node.
      *
      */
      DOM_DocumentType createDocumentType(const DOMString &name);
  
  
      /**
      *  Create a Notation.
      *
      *  Non-standard extension.
      *
      *  @param name The name of the notation to instantiate
      * @return A <code>DOM_Notation</code> that references the newly
      *  created Notation node.
      */
      DOM_Notation createNotation(const DOMString &name);
  
  
      /**
      * Creates a ProcessingInstruction node given the specified
      * name and data strings.
      *
      * @param target The target part of the processing instruction.
      * @param data The data for the node.
      * @return A <code>DOM_ProcessingInstruction</code> that references the newly
      *  created PI node.
      * @exception DOMException
      *   INVALID_CHARACTER_ERR: Raised if an illegal character is specified.
      */
      DOM_ProcessingInstruction createProcessingInstruction(const DOMString &target,
          const DOMString &data);
  
  
      /**
       * Creates an Attr of the given name.
       *
       * Note that the
       * <code>Attr</code> instance can then be attached to an Element
       * using the <code>DOMElement::setAttribute()</code> method.
       * @param name The name of the attribute.
       * @return A new <CODE>DOM_Attr</CODE> 
       *       object with the <CODE>nodeName</CODE> attribute set to 
       *       <CODE>name</CODE>, and <CODE>localName</CODE>, <CODE>prefix</CODE>, 
       *       and <CODE>namespaceURI</CODE> set to 
       *       <CODE>null</CODE>.
       * @exception DOMException
       *   INVALID_CHARACTER_ERR: Raised if the specified name contains an
       *   illegal character.
       */
      DOM_Attr     createAttribute(const DOMString &name);
  
  
      /**
       * Creates an EntityReference object.
       *
       * @param name The name of the entity to reference.
       * @return A <code>DOM_EntityReference</code> that references the newly
       *  created EntityReference node.
       * @exception DOMException
       *   INVALID_CHARACTER_ERR: Raised if the specified name contains an
       *   illegal character.
       */
      DOM_EntityReference    createEntityReference(const DOMString &name);
  
  
      /**
       * Creates a NodeIterator object.   (DOM2)
       *
       * NodeIterators are used to step through a set of nodes, e.g. the set of nodes in a NodeList, the
       * document subtree governed by a particular node, the results of a query, or any other set of nodes.
       * The set of nodes to be iterated is determined by the implementation of the NodeIterator. DOM Level 2
       * specifies a single NodeIterator implementation for document-order traversal of a document subtree.
       * Instances of these iterators are created by calling <code>DocumentTraversal.createNodeIterator()</code>. 
       *
       * To produce a view of the document that has entity references expanded and does not
       * expose the entity reference node itself, use the <code>whatToShow</code> flags to hide the entity
       * reference node and set expandEntityReferences to true when creating the iterator. To
       * produce a view of the document that has entity reference nodes but no entity expansion,
       * use the <code>whatToShow</code> flags to show the entity reference node and set
       * expandEntityReferences to false.
       *
       * <p><b>"Experimental - subject to change"</b></p>
       *
       * @param root The root node of the DOM tree
       * @param whatToShow This attribute determines which node types are presented via the iterator.
       * @param filter The filter used to screen nodes
       * @param entityReferenceExpansion The value of this flag determines whether the children of entity reference nodes are
       *                   visible to the iterator. If false, they will be skipped over.
       */
  
      DOM_NodeIterator createNodeIterator(DOM_Node root, 
                                          unsigned long whatToShow, 
                                          DOM_NodeFilter*  filter, 
                                          bool entityReferenceExpansion);
       /**
       * Creates a TreeWalker object.   (DOM2)
       *
       * TreeWalker objects are used to navigate a document tree or subtree using the view of the document defined
       * by its whatToShow flags and any filters that are defined for the TreeWalker. Any function which performs
       * navigation using a TreeWalker will automatically support any view defined by a TreeWalker.
       *
       * Omitting nodes from the logical view of a subtree can result in a structure that is substantially different from
       * the same subtree in the complete, unfiltered document. Nodes that are siblings in the TreeWalker view may
       * be children of different, widely separated nodes in the original view. For instance, consider a Filter that skips
       * all nodes except for Text nodes and the root node of a document. In the logical view that results, all text
       * nodes will be siblings and appear as direct children of the root node, no matter how deeply nested the
       * structure of the original document.
       *
       * To produce a view of the document that has entity references expanded
       * and does not expose the entity reference node itself, use the whatToShow
       * flags to hide the entity reference node and set <code>expandEntityReferences</code> to
       * true when creating the TreeWalker. To produce a view of the document
       * that has entity reference nodes but no entity expansion, use the
       * <code>whatToShow</code> flags to show the entity reference node and set
       * <code>expandEntityReferences</code> to false
       *
       * <p><b>"Experimental - subject to change"</b></p>
       *
       * @param root The root node of the DOM tree
       * @param whatToShow This attribute determines which node types are presented via the tree-walker.
       * @param filter The filter used to screen nodes
       * @param entityReferenceExpansion The value of this flag determines whether the children of entity reference nodes are
       *                   visible to the tree-walker. If false, they will be skipped over.
       */
  
      DOM_TreeWalker  createTreeWalker(DOM_Node root, 
                                       unsigned long whatToShow, 
                                       DOM_NodeFilter*  filter, 
                                       bool entityReferenceExpansion);
  
      /**
       * Creates a XMLDecl type Node .   Non-Standard (an extension to xerces)
       *
       * XMLDecl Nodes are created to get  version, encoding and standalone information in a document tree
       *
       * This node if created gets attached to a document object or an entity node. There can be no child
       * to this type of node.
       *
       * <p><b>"Experimental - subject to change"</b></p>
       *
       * @param version The version data of the document. Currently possible value is 1.0
       * @param encoding The encoding type specified in the document
       * @param standalone The information whether the document is standalone or not
       */
  
      DOM_XMLDecl createXMLDecl(const DOMString& version,
                              const DOMString& encoding,
                              const DOMString& standalone);
  
      /**
  	  * To create the range  consisting of boundary-points and offset of the 
        * selected contents
        *
        * @return The initial state of the Range such that both the boundary-points 
        * are positioned at the beginning of the corresponding DOM_DOcument, before 
        * any content. The range returned can only be used to select content 
        * associated with this document, or with documentFragments and Attrs for 
        * which this document is the ownerdocument
  	  */
      DOM_Range    createRange(); 
  
      //@}
      /** @name Getter functions */
      //@{
      /**
       * Get Document Type Declaration (see <code>DOM_DocumentType</code>) associated
       * with  this document.
       *
       * For documents without
       * a document type declaration this returns <code>null</code> reference object. The DOM Level
       *  1 does not support editing the Document Type Declaration, therefore
       * <code>docType</code> cannot be altered in any way.
       */
      DOM_DocumentType       getDoctype() const;
  
  
  
      /**
       * Return the <code>DOMImplementation</code> object that handles this document.
       */
      DOM_DOMImplementation  &getImplementation() const;
  
  
      /**
       * Return a reference to the root element of the document.
       */
      DOM_Element     getDocumentElement() const;
  
      /**
       * Returns a <code>DOM_NodeList</code> of all the elements with a
       * given tag name.  The returned node list is "live", in that changes
       * to the document tree made after a nodelist was initially
       * returned will be immediately reflected in the node list.
       *
       * The elements in the node list are ordered in the same order in which they
       * would be encountered in a
       * preorder traversal of the <code>Document</code> tree.
       * @param tagname The name of the tag to match on. The special value "*"
       *   matches all tags.
       * @return A reference to a NodeList containing all the matched
       *   <code>Element</code>s.
       */
      DOM_NodeList           getElementsByTagName(const DOMString &tagname) const;
  
      //@}
      /** @name Functions introduced in DOM Level 2. */
      //@{
  
      /**
       * Imports a node from another document to this document. 
       * The returned node has no parent (<CODE>parentNode</CODE> is 
       * <CODE>null</CODE>). The source node is not altered or removed from the 
       * original document; this method creates a new copy of the source 
       * node.<BR>For all nodes, importing a node creates a node object owned by 
       * the importing document, with attribute values identical to the source 
       * node's <CODE>nodeName</CODE> and <CODE>nodeType</CODE>, plus the 
       * attributes related to namespaces (prefix and namespaces URI).
       *
       * <p><b>"Experimental - subject to change"</b></p>
       *
       * @param importedNode The node to import.
       * @param deep If <CODE>true</CODE>, recursively import the subtree under the 
       *      specified node; if <CODE>false</CODE>, import only the node itself, 
       *      as explained above. This does not apply to <CODE>DOM_Attr</CODE>, 
       *      <CODE>DOM_EntityReference</CODE>, and <CODE>DOM_Notation</CODE> nodes.
       * @return The imported node that belongs to this <CODE>DOM_Document</CODE>.
       * @exception DOMException
       *   NOT_SUPPORTED_ERR: Raised if the type of node being imported is 
       *                      not supported.
       */
      DOM_Node            importNode(const DOM_Node &importedNode, bool deep);
  
      /**
       * Creates an element of the given qualified name and 
       * namespace URI.
       *
       * <p><b>"Experimental - subject to change"</b></p>
       *
       * @param namespaceURI The <em>namespace URI</em> of
       *   the element to create.
       * @param qualifiedName The <em>qualified name</em>
       *   of the element type to instantiate.
       * @return A new <code>DOM_Element</code> object.
       * @exception DOMException
       *   INVALID_CHARACTER_ERR: Raised if the specified qualified name contains
       *                          an illegal character.
       * <br>
       *   NAMESPACE_ERR: Raised if the <CODE>qualifiedName</CODE> is 
       *      malformed, if the <CODE>qualifiedName</CODE> has a prefix and the 
       *      <CODE>namespaceURI</CODE> is <CODE>null</CODE> or an empty string, 
       *      or if the <CODE>qualifiedName</CODE> has a prefix that is "xml" and 
       *      the <CODE>namespaceURI</CODE> is different from 
       *      "http://www.w3.org/XML/1998/namespace".
       */
      DOM_Element         createElementNS(const DOMString &namespaceURI,
  	const DOMString &qualifiedName);
  
      /**
       * Creates an attribute of the given qualified name and namespace
       * URI.
       *
       * <p><b>"Experimental - subject to change"</b></p>
       *
       * @param namespaceURI The <em>namespace URI</em> of
       *   the attribute to create.
       * @param qualifiedName The <em>qualified name</em>
       *   of the attribute to instantiate.
       * @return A new <code>DOM_Attr</code> object.
       * @exception DOMException
       *   INVALID_CHARACTER_ERR: Raised if the specified qualified name contains
       *                          an illegal character.
       * <br>
       *   NAMESPACE_ERR: Raised if the <CODE>qualifiedName</CODE> is 
       *      malformed, if the <CODE>qualifiedName</CODE> has a prefix and the 
       *      <CODE>namespaceURI</CODE> is <CODE>null</CODE> or an empty string, 
       *      if the <CODE>qualifiedName</CODE> has a prefix that is "xml" and the 
       *      <CODE>namespaceURI</CODE> is different from 
       *      "http://www.w3.org/XML/1998/namespace", if the 
       *      <CODE>qualifiedName</CODE> has a prefix that is "xmlns" and the 
       *      <CODE>namespaceURI</CODE> is different from 
       *      "http://www.w3.org/2000/xmlns/", or if the 
       *      <CODE>qualifiedName</CODE> is "xmlns" and the 
       *      <CODE>namespaceURI</CODE> is different from 
       *      "http://www.w3.org/2000/xmlns/".
       */
      DOM_Attr            createAttributeNS(const DOMString &namespaceURI,
  	const DOMString &qualifiedName);
  
      /**
       * Returns a <code>DOM_NodeList</code> of all the <code>DOM_Element</code>s
       * with a given <em>local name</em> and
       * namespace URI in the order in which they would be encountered in a
       * preorder traversal of the <code>DOM_Document</code> tree.
       *
       * <p><b>"Experimental - subject to change"</b></p>
       *
       * @param namespaceURI The <em>namespace URI</em> of
       *   the elements to match on. The special value "*" matches all
       *   namespaces.
       * @param localName The <em>local name</em> of the
       *   elements to match on. The special value "*" matches all local names.
       * @return A new <code>DOM_NodeList</code> object containing all the matched
       *  <code>DOM_Element</code>s.
       */
      DOM_NodeList        getElementsByTagNameNS(const DOMString &namespaceURI,
  	const DOMString &localName) const;
  
      /**
       * Returns the <code>DOM_Element</code> whose ID is given by <code>elementId</code>.
       * If no such element exists, returns <code>null</code>.
       * Behavior is not defined if more than one element has this <code>ID</code>.
       * <P><B>Note:</B> The DOM implementation must have information that says 
       * which attributes are of type ID. Attributes with the name "ID" are not of 
       * type ID unless so defined. Implementations that do not know whether 
       * attributes are of type ID or not are expected to return 
       * <CODE>null</CODE>.</P>
       *
       * <p><b>"Experimental - subject to change"</b></p>
       *
       * @param elementId The unique <code>id</code> value for an element.
       * @return The matching element.
       */
      DOM_Element         getElementById(const DOMString &elementId);
  
      //@}
  
  //protected:
  //    DOM_Document (DocumentImpl *impl);
  
  //    friend class DOM_Node;
  //    friend class DocumentImpl;
  //    friend class NodeIteratorImpl;
  //    friend class DOM_DOMImplementation;
  
  };
  
  
  //#endif
  
  
  
  1.1                  xml-xerces/perl/Xerces_headers/dom/DOM_DocumentFragment.hpp
  
  Index: DOM_DocumentFragment.hpp
  ===================================================================
  /*
   * The Apache Software License, Version 1.1
   * 
   * Copyright (c) 1999-2000 The Apache Software Foundation.  All rights
   * reserved.
   * 
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions
   * are met:
   * 
   * 1. Redistributions of source code must retain the above copyright
   *    notice, this list of conditions and the following disclaimer. 
   * 
   * 2. Redistributions in binary form must reproduce the above copyright
   *    notice, this list of conditions and the following disclaimer in
   *    the documentation and/or other materials provided with the
   *    distribution.
   * 
   * 3. The end-user documentation included with the redistribution,
   *    if any, must include the following acknowledgment:  
   *       "This product includes software developed by the
   *        Apache Software Foundation (http://www.apache.org/)."
   *    Alternately, this acknowledgment may appear in the software itself,
   *    if and wherever such third-party acknowledgments normally appear.
   * 
   * 4. The names "Xerces" and "Apache Software Foundation" must
   *    not be used to endorse or promote products derived from this
   *    software without prior written permission. For written 
   *    permission, please contact apache\@apache.org.
   * 
   * 5. Products derived from this software may not be called "Apache",
   *    nor may "Apache" appear in their name, without prior written
   *    permission of the Apache Software Foundation.
   * 
   * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
   * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
   * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
   * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
   * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
   * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
   * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   * SUCH DAMAGE.
   * ====================================================================
   * 
   * This software consists of voluntary contributions made by many
   * individuals on behalf of the Apache Software Foundation, and was
   * originally based on software copyright (c) 1999, International
   * Business Machines, Inc., http://www.ibm.com .  For more information
   * on the Apache Software Foundation, please see
   * <http://www.apache.org/>.
   */
  
  /*
   * $Id: DOM_DocumentFragment.hpp,v 1.1 2001/03/07 16:04:00 jasons Exp $
   */
  
  //#ifndef DOM_DocumentFragment_HEADER_GUARD_
  //#define DOM_DocumentFragment_HEADER_GUARD_
  
  //#include <util/XercesDefs.hpp>
  //#include <dom/DOM_Node.hpp>
  
  //class DocumentFragmentImpl;
  
  /**
   * <code>DocumentFragment</code> is a "lightweight" or "minimal" 
   * <code>Document</code> object. 
   *
   * It is very common to want to be able to 
   * extract a portion of a document's tree or to create a new fragment of a 
   * document. Imagine implementing a user command like cut or rearranging a 
   * document by moving fragments around. It is desirable to have an object 
   * which can hold such fragments and it is quite natural to use a Node for 
   * this purpose. While it is true that a <code>Document</code> object could 
   * fulfil this role,  a <code>Document</code> object can potentially be a 
   * heavyweight  object, depending on the underlying implementation. What is 
   * really needed for this is a very lightweight object.  
   * <code>DocumentFragment</code> is such an object.
   * <p>Furthermore, various operations -- such as inserting nodes as children 
   * of another <code>Node</code> -- may take <code>DocumentFragment</code> 
   * objects as arguments;  this results in all the child nodes of the 
   * <code>DocumentFragment</code>  being moved to the child list of this node.
   * <p>The children of a <code>DocumentFragment</code> node are zero or more 
   * nodes representing the tops of any sub-trees defining the structure of the 
   * document. <code>DocumentFragment</code> nodes do not need to be 
   * well-formed XML documents (although they do need to follow the rules 
   * imposed upon well-formed XML parsed entities, which can have multiple top 
   * nodes).  For example, a <code>DocumentFragment</code> might have only one 
   * child and that child node could be a <code>Text</code> node. Such a 
   * structure model  represents neither an HTML document nor a well-formed XML 
   * document.  
   * <p>When a <code>DocumentFragment</code> is inserted into a  
   * <code>Document</code> (or indeed any other <code>Node</code> that may take 
   * children) the children of the <code>DocumentFragment</code> and not the 
   * <code>DocumentFragment</code>  itself are inserted into the 
   * <code>Node</code>. This makes the <code>DocumentFragment</code> very 
   * useful when the user wishes to create nodes that are siblings; the 
   * <code>DocumentFragment</code> acts as the parent of these nodes so that the
   *  user can use the standard methods from the <code>Node</code>  interface, 
   * such as <code>insertBefore()</code> and  <code>appendChild()</code>.  
   */
  
  class /*CDOM_EXPORT*/ DOM_DocumentFragment: public DOM_Node {
  
  public:
      /** @name Constructors and assignment operators */
      //@{
      /**
      * Default constructor for <code>DOM_DocumentFragment</code>.  The resulting object does not
      * refer to an actual Document Fragment node; it will compare == to 0, and is similar
      * to a null object reference variable in Java.  It may subsequently be
      * assigned to refer to an actual Document Fragment node.
      * <p>
      * New document fragment nodes are created by DOM_Document::createDocumentFragment().
      *
      */
  
  //    DOM_DocumentFragment();
  
      /**
        * Copy constructor.  Creates a new <code>DOM_DocumentFragment</code> that refers to the
        *   same underlying node as the original.  See also DOM_Node::clone(),
        * which will copy the actual Document fragment node, rather than just creating a new
        * reference to the original node.
        *
        * @param other The object to be copied
        */
  //    DOM_DocumentFragment(const DOM_DocumentFragment &other);
  
      /**
        * Assignment operator
        *
        * @param other The object to be copied
        */
  //    DOM_DocumentFragment & operator = (const DOM_DocumentFragment &other);
      DOM_DocumentFragment & assignment(const DOM_DocumentFragment &other);
  
      /**
        * Assignment operator.  This overloaded variant is provided for
        *   the sole purpose of setting a DOM_Node reference variable to
        *   zero.  Nulling out a reference variable in this way will decrement
        *   the reference count on the underlying Node object that the variable
        *   formerly referenced.  This effect is normally obtained when reference
        *   variable goes out of scope, but zeroing them can be useful for
        *   global instances, or for local instances that will remain in scope
        *   for an extended time,  when the storage belonging to the underlying
        *   node needs to be reclaimed.
        *
        * @param val.  Only a value of 0, or null, is allowed.
        */
  //    DOM_DocumentFragment & operator = (const DOM_NullPtr *val);
  
  	//@}
      /** @name Destructor */
      //@{
  	    
      /**
        * Destructor.  The object being destroyed is the reference
        * object, not the underlying Comment node itself.
        *
        */
  //    ~DOM_DocumentFragment();
  
  	//@}
  
  //protected:
  //    DOM_DocumentFragment(DocumentFragmentImpl *);
  
  //    friend class DOM_Document;
  //    friend class RangeImpl;
  };
  
  //#endif
  
  
  
  1.1                  xml-xerces/perl/Xerces_headers/dom/DOM_DocumentType.hpp
  
  Index: DOM_DocumentType.hpp
  ===================================================================
  /*
   * The Apache Software License, Version 1.1
   * 
   * Copyright (c) 1999-2000 The Apache Software Foundation.  All rights
   * reserved.
   * 
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions
   * are met:
   * 
   * 1. Redistributions of source code must retain the above copyright
   *    notice, this list of conditions and the following disclaimer. 
   * 
   * 2. Redistributions in binary form must reproduce the above copyright
   *    notice, this list of conditions and the following disclaimer in
   *    the documentation and/or other materials provided with the
   *    distribution.
   * 
   * 3. The end-user documentation included with the redistribution,
   *    if any, must include the following acknowledgment:  
   *       "This product includes software developed by the
   *        Apache Software Foundation (http://www.apache.org/)."
   *    Alternately, this acknowledgment may appear in the software itself,
   *    if and wherever such third-party acknowledgments normally appear.
   * 
   * 4. The names "Xerces" and "Apache Software Foundation" must
   *    not be used to endorse or promote products derived from this
   *    software without prior written permission. For written 
   *    permission, please contact apache\@apache.org.
   * 
   * 5. Products derived from this software may not be called "Apache",
   *    nor may "Apache" appear in their name, without prior written
   *    permission of the Apache Software Foundation.
   * 
   * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
   * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
   * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
   * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
   * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
   * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
   * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   * SUCH DAMAGE.
   * ====================================================================
   * 
   * This software consists of voluntary contributions made by many
   * individuals on behalf of the Apache Software Foundation, and was
   * originally based on software copyright (c) 1999, International
   * Business Machines, Inc., http://www.ibm.com .  For more information
   * on the Apache Software Foundation, please see
   * <http://www.apache.org/>.
   */
  
  /*
   * $Log: DOM_DocumentType.hpp,v $
   * Revision 1.1  2001/03/07 16:04:00  jasons
   * PR:
   * Submitted by:	jason@openinformatics.com
   *
   * Added new files from Harmon's 1.3 port
   *
   * Revision 1.8  2000/03/10 02:14:39  chchou
   * add null DOM_DocumentType constructor
   *
   * Revision 1.7  2000/03/02 19:53:55  roddey
   * This checkin includes many changes done while waiting for the
   * 1.1.0 code to be finished. I can't list them all here, but a list is
   * available elsewhere.
   *
   * Revision 1.6  2000/02/24 20:11:27  abagchi
   * Swat for removing Log from API docs
   *
   * Revision 1.5  2000/02/17 17:47:24  andyh
   * Update Doc++ API comments
   * NameSpace update to track W3C
   * Changes were made by Chih Hsiang Chou
   *
   * Revision 1.4  2000/02/10 23:35:11  andyh
   * Update DOM_DOMImplementation::CreateDocumentType and
   * DOM_DocumentType to match latest from W3C
   *
   * Revision 1.3  2000/02/06 07:47:29  rahulj
   * Year 2K copyright swat.
   *
   * Revision 1.2  2000/01/05 01:16:07  andyh
   * DOM Level 2 core, namespace support added.
   *
   * Revision 1.1.1.1  1999/11/09 01:08:52  twl
   * Initial checkin
   *
   * Revision 1.3  1999/11/08 20:44:16  rahul
   * Swat for adding in Product name and CVS comment log variable.
   *
   */
  
  //#ifndef DOM_DocumentType_HEADER_GUARD_
  //#define DOM_DocumentType_HEADER_GUARD_
  
  //#include <util/XercesDefs.hpp>
  //#include <dom/DOM_Node.hpp>
  
  //class DOM_NamedNodeMap;
  //class DocumentTypeImpl;
  
  /**
   * Each <code>Document</code> has a <code>doctype</code> whose value 
   * is either <code>null</code> or a <code>DocumentType</code> object. 
   *
   * The <code>DOM_DocumentType</code> class provides access
   *  to the list of entities and notations that are defined for the document.
   * <p>The DOM Level 1 doesn't support editing <code>DocumentType</code> nodes.
   */
  class /*CDOM_EXPORT*/ DOM_DocumentType: public DOM_Node {
  
  public:
      /** @name Constructors and assignment operator */
      //@{
      /**
        * Default constructor for DOM_DocumentType.  The resulting object does not
        * refer to an actual DocumentType node; it will compare == to 0, and is similar
        * to a null object reference variable in Java.  It may subsequently be
        * assigned to refer to the actual DocumentType node.
        * <p>
        * A new DocumentType node for a document that does not already have one
        * can be created by DOM_Document::createDocumentType().     
        *
        */
  //    DOM_DocumentType();
  
      /**
        * Constructor for a null DOM_DocumentType.
        * This allows passing 0 directly as a null DOM_DocumentType to
        * function calls that take DOM_DocumentType as parameters.
        *
        * @param nullPointer Must be 0.
        */
  //    DOM_DocumentType(int nullPointer);
  
      /**
        * Copy constructor.  Creates a new <code>DOM_Comment</code> that refers to the
        * same underlying node as the original.  
        *
        *
        * @param other The object to be copied.
        */
  //    DOM_DocumentType(const DOM_DocumentType &other);
  
  
      /**
        * Assignment operator.
        *
        * @param other The object to be copied.
        */
  //    DOM_DocumentType & operator = (const DOM_DocumentType &other);
      DOM_DocumentType & assignment(const DOM_DocumentType &other);
  
      /**
        * Assignment operator.  This overloaded variant is provided for
        *   the sole purpose of setting a DOM_Node reference variable to
        *   zero.  Nulling out a reference variable in this way will decrement
        *   the reference count on the underlying Node object that the variable
        *   formerly referenced.  This effect is normally obtained when reference
        *   variable goes out of scope, but zeroing them can be useful for
        *   global instances, or for local instances that will remain in scope
        *   for an extended time,  when the storage belonging to the underlying
        *   node needs to be reclaimed.
        *
        * @param val.  Only a value of 0, or null, is allowed.
        */
  //    DOM_DocumentType & operator = (const DOM_NullPtr *val);
  
      //@}
      /** @name Destructor. */
      //@{
  	 /**
  	  * Destructor for DOM_DocumentType.  The object being destroyed is the reference
        * object, not the underlying DocumentType node itself.
  	  *
  	  */
  //    ~DOM_DocumentType();
      //@}
  
      /** @name Getter functions. */
      //@{
    /**
     * The name of DTD; i.e., the name immediately following the 
     * <code>DOCTYPE</code> keyword in an XML source document.
     */
    DOMString       getName() const;
  
    /**
     * This function returns a  <code>NamedNodeMap</code> containing the general entities, both 
     * external and internal, declared in the DTD. Parameter entities are not contained.
     * Duplicates are discarded. 
     * <p>
     * Note: this functionality is not implemented in the initial release
     * of the parser, and the returned NamedNodeMap will be empty.
     */
    DOM_NamedNodeMap getEntities() const;
  
  
    /**
     * This function returns a named node map containing an entry for
     * each notation declared in a document's DTD.  Duplicates are discarded.
     *
     * <p>
     * Note: this functionality is not implemented in the initial release
     * of the parser, and the returned NamedNodeMap will be empty.
     */
    DOM_NamedNodeMap getNotations() const;
    //@}
  
      /** @name Functions introduced in DOM Level 2. */
      //@{
      /**
       * Get the public identifier of the external subset.
       *
       * <p><b>"Experimental - subject to change"</b></p>
       *
       * @return The public identifier of the external subset.
       */
      DOMString     getPublicId() const;
  
      /**
       * Get the system identifier of the external subset.
       *
       * <p><b>"Experimental - subject to change"</b></p>
       *
       * @return The system identifier of the external subset.
       */
      DOMString     getSystemId() const;
  
      /**
       * Get the internal subset as a string.
       *
       * <p><b>"Experimental - subject to change"</b></p>
       *
       * @return The internal subset as a string.
       */
      DOMString     getInternalSubset() const;
      //@}
  
  //protected:
  //    DOM_DocumentType(DocumentTypeImpl *);
  
  //    friend class DOM_Document;
  //    friend class DOM_DOMImplementation;
  };
  
  //#endif
  
  
  
  
  
  1.1                  xml-xerces/perl/Xerces_headers/dom/DOM_Element.hpp
  
  Index: DOM_Element.hpp
  ===================================================================
  /*
   * The Apache Software License, Version 1.1
   * 
   * Copyright (c) 1999-2000 The Apache Software Foundation.  All rights
   * reserved.
   * 
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions
   * are met:
   * 
   * 1. Redistributions of source code must retain the above copyright
   *    notice, this list of conditions and the following disclaimer. 
   * 
   * 2. Redistributions in binary form must reproduce the above copyright
   *    notice, this list of conditions and the following disclaimer in
   *    the documentation and/or other materials provided with the
   *    distribution.
   * 
   * 3. The end-user documentation included with the redistribution,
   *    if any, must include the following acknowledgment:  
   *       "This product includes software developed by the
   *        Apache Software Foundation (http://www.apache.org/)."
   *    Alternately, this acknowledgment may appear in the software itself,
   *    if and wherever such third-party acknowledgments normally appear.
   * 
   * 4. The names "Xerces" and "Apache Software Foundation" must
   *    not be used to endorse or promote products derived from this
   *    software without prior written permission. For written 
   *    permission, please contact apache\@apache.org.
   * 
   * 5. Products derived from this software may not be called "Apache",
   *    nor may "Apache" appear in their name, without prior written
   *    permission of the Apache Software Foundation.
   * 
   * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
   * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
   * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
   * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
   * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
   * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
   * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   * SUCH DAMAGE.
   * ====================================================================
   * 
   * This software consists of voluntary contributions made by many
   * individuals on behalf of the Apache Software Foundation, and was
   * originally based on software copyright (c) 1999, International
   * Business Machines, Inc., http://www.ibm.com .  For more information
   * on the Apache Software Foundation, please see
   * <http://www.apache.org/>.
   */
  
  /*
   * $Log: DOM_Element.hpp,v $
   * Revision 1.1  2001/03/07 16:04:00  jasons
   * PR:
   * Submitted by:	jason@openinformatics.com
   *
   * Added new files from Harmon's 1.3 port
   *
   * Revision 1.7  2000/03/02 19:53:55  roddey
   * This checkin includes many changes done while waiting for the
   * 1.1.0 code to be finished. I can't list them all here, but a list is
   * available elsewhere.
   *
   * Revision 1.6  2000/02/24 20:11:27  abagchi
   * Swat for removing Log from API docs
   *
   * Revision 1.5  2000/02/17 17:47:24  andyh
   * Update Doc++ API comments
   * NameSpace update to track W3C
   * Changes were made by Chih Hsiang Chou
   *
   * Revision 1.4  2000/02/06 07:47:29  rahulj
   * Year 2K copyright swat.
   *
   * Revision 1.3  2000/01/05 01:16:07  andyh
   * DOM Level 2 core, namespace support added.
   *
   * Revision 1.2  1999/12/21 07:47:06  robweir
   * Patches to support Xalan, where we need to create a
   * "special" DOM with subclassed Nodes.
   *
   * 1. Export the NodeImpl-derived classes
   * 2. Ensure that their constructors have at least protected access
   *
   * Revision 1.1.1.1  1999/11/09 01:08:57  twl
   * Initial checkin
   *
   * Revision 1.3  1999/11/08 20:44:17  rahul
   * Swat for adding in Product name and CVS comment log variable.
   *
   */
  
  //#ifndef DOM_Element_HEADER_GUARD_
  //#define DOM_Element_HEADER_GUARD_
  
  //#include <util/XercesDefs.hpp>
  //#include <dom/DOM_Node.hpp>
  
  //class DOM_Attr;
  //class DOM_NodeList;
  //class ElementImpl;
  
  /**
   * By far the vast majority of objects (apart from text) that authors 
   * encounter when traversing a document are <code>DOM_Element</code> nodes.  
   *
   * Assume the following XML document:&lt;elementExample id="demo"&gt; 
   * &lt;subelement1/&gt; 
   * &lt;subelement2&gt;&lt;subsubelement/&gt;&lt;/subelement2&gt;
   * &lt;/elementExample&gt;  
   * <p>When represented using DOM, the top node is an <code>DOM_Element</code> node 
   * for "elementExample", which contains two child <code>DOM_Element</code> nodes, 
   * one for "subelement1" and one for "subelement2". "subelement1" contains no 
   * child nodes.
   * <p>Elements may have attributes associated with them; since the 
   * <code>DOM_Element</code> interface inherits from <code>DOM_Node</code>, the generic
   *  <code>DOM_Node</code> interface method <code>getAttributes</code> may be used 
   * to retrieve the set of all attributes for an element.  There are methods on
   *  the <code>DOM_Element</code> interface to retrieve either an <code>DOM_Attr</code>
   *  object by name or an attribute value by name. In XML, where an attribute 
   * value may contain entity references, an <code>DOM_Attr</code> object should be 
   * retrieved to examine the possibly fairly complex sub-tree representing the 
   * attribute value. On the other hand, in HTML, where all attributes have 
   * simple string values, methods to directly access an attribute value can 
   * safely be used as a convenience.
   */
  
  class /*CDOM_EXPORT*/ DOM_Element: public DOM_Node {
  //private:
  
  public:
      /** @name Constructors and assignment operator */
      //@{
      /**
      * Default constructor for DOM_Element.  The resulting object does not
      * refer to an actual Element node; it will compare == to 0, and is similar
      * to a null object reference variable in Java.  It may subsequently be
      * assigned to refer to an actual Element node.
      * <p>
      * New comment nodes are created by DOM_Document::createElement().
        *
        */
  //    DOM_Element();
  
      /**
        * Copy constructor.  Creates a new <code>DOM_Element</code> that refers to the
        * same underlying actual element as the original.
        *
        * @param other The object to be copied
        */
  //    DOM_Element(const DOM_Element &other);
  
      /**
        * Assignment operator.
        *
        * @param other The object to be copied.
        */
  //    DOM_Element & operator = (const DOM_Element &other);
      DOM_Element & assignment(const DOM_Element &other);
  
      /**
        * Assignment operator.  This overloaded variant is provided for
        *   the sole purpose of setting a DOM_Node reference variable to
        *   zero.  Nulling out a reference variable in this way will decrement
        *   the reference count on the underlying Node object that the variable
        *   formerly referenced.  This effect is normally obtained when reference
        *   variable goes out of scope, but zeroing them can be useful for
        *   global instances, or for local instances that will remain in scope
        *   for an extended time,  when the storage belonging to the underlying
        *   node needs to be reclaimed.
        *
        * @param val.  Only a value of 0, or null, is allowed.
        */
  //    DOM_Element & operator = (const DOM_NullPtr *val);
  
      //@}
      /** @name Destructor. */
      //@{
  	 /**
        * Destructor.  The object being destroyed is the reference
        * object, not the underlying Element itself.
  	  *
  	  */
  //    ~DOM_Element();
      //@}
      /** @name Getter functions. */
      //@{
  
    /**
     * The name of the element. 
     *
     * For example, in: &lt;elementExample 
     * id="demo"&gt;  ... &lt;/elementExample&gt; , <code>tagName</code> has 
     * the value <code>"elementExample"</code>. Note that this is 
     * case-preserving in XML, as are all of the operations of the DOM. 
     */
    DOMString         getTagName() const;
  
    /**
     * Retrieves an attribute value by name.
     *
     * @param name The name of the attribute to retrieve.
     * @return The <code>DOM_Attr</code> value as a string, or the empty  string if 
     *   that attribute does not have a specified or default value.
     */
    DOMString         getAttribute(const DOMString &name) const;
  
    /**
     * Retrieves an <code>DOM_Attr</code> node by name.
     *
     * @param name The name (<CODE>nodeName</CODE>) of the attribute to retrieve.
     * @return The <code>DOM_Attr</code> node with the specified name (<CODE>nodeName</CODE>) or 
     *   <code>null</code> if there is no such attribute.
     */
    DOM_Attr        getAttributeNode(const DOMString &name) const;
  
    /**
     * Returns a <code>NodeList</code> of all descendant elements with a given 
     * tag name, in the order in which they would be encountered in a preorder 
     * traversal of the <code>DOM_Element</code> tree.
     *
     * @param name The name of the tag to match on. The special value "*" 
     *   matches all tags.
     * @return A list of matching <code>DOM_Element</code> nodes.
     */
    DOM_NodeList    getElementsByTagName(const DOMString &name) const;
  
    //@}
    /** @name Set functions. */
    //@{
  
    /**
     * Adds a new attribute. 
     * 
     * If an attribute with that name is already present 
     * in the element, its value is changed to be that of the value parameter. 
     * This value is a simple string, it is not parsed as it is being set. So 
     * any markup (such as syntax to be recognized as an entity reference) is 
     * treated as literal text, and needs to be appropriately escaped by the 
     * implementation when it is written out. In order to assign an attribute 
     * value that contains entity references, the user must create an 
     * <code>DOM_Attr</code> node plus any <code>Text</code> and 
     * <code>EntityReference</code> nodes, build the appropriate subtree, and 
     * use <code>setAttributeNode</code> to assign it as the value of an 
     * attribute.
     * @param name The name of the attribute to create or alter.
     * @param value Value to set in string form.
     * @exception DOMException
     *   INVALID_CHARACTER_ERR: Raised if the specified name contains an 
     *   illegal character.
     *   <br>NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly.
     */
     void             setAttribute(const DOMString &name, 
                                   const DOMString &value);
     /**
      * Adds a new attribute. 
      * 
      * If an attribute with that name (<CODE>nodeName</CODE>) is already present 
      * in the element, it is replaced by the new one.
      * @param newAttr The <code>DOM_Attr</code> node to add to the attribute list.
      * @return If the <code>newAttr</code> attribute replaces an existing 
      *   attribute, the replaced
      *   <code>DOM_Attr</code> node is returned, otherwise <code>null</code> is 
      *   returned.
      * @exception DOMException
      *   WRONG_DOCUMENT_ERR: Raised if <code>newAttr</code> was created from a 
      *   different document than the one that created the element.
      *   <br>NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly.
      *   <br>INUSE_ATTRIBUTE_ERR: Raised if <code>newAttr</code> is already an 
      *   attribute of another <code>DOM_Element</code> object. The DOM user must 
      *   explicitly clone <code>DOM_Attr</code> nodes to re-use them in other 
      *   elements.
      */
     DOM_Attr        setAttributeNode(DOM_Attr newAttr);
  
     //@}
     /** @name Functions which modify the Element. */
     //@{
    /**
     * Removes the specified attribute node.
     * If the removed <CODE>DOM_Attr</CODE>
     *   has a default value it is immediately replaced. The replacing attribute 
     *   has the same namespace URI and local name, as well as the original prefix, 
     *   when applicable.
     *
     * @param oldAttr The <code>DOM_Attr</code> node to remove from the attribute 
     *   list.
     * @return The <code>DOM_Attr</code> node that was removed.
     * @exception DOMException
     *   NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly.
     *   <br>NOT_FOUND_ERR: Raised if <code>oldAttr</code> is not an attribute 
     *   of the element.
     */
    DOM_Attr        removeAttributeNode(DOM_Attr oldAttr);
  
    /**
     * Removes an attribute by name. 
     *
     * If the removed attribute 
     *   is known to have a default value, an attribute immediately appears 
     *   containing the default value as well as the corresponding namespace URI, 
     *   local name, and prefix when applicable.<BR>To remove an attribute by local 
     *   name and namespace URI, use the <CODE>removeAttributeNS</CODE> method.
     * @param name The name of the attribute to remove.
     * @exception DOMException
     *   NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly.
     */
    void              removeAttribute(const DOMString &name);
  
    //@}
    /** @name Functions introduced in DOM Level 2. */
    //@{
  
    /**
     * Retrieves an attribute value by local name and namespace URI.
     *
     * <p><b>"Experimental - subject to change"</b></p>
     *
     * @param namespaceURI The <em>namespace URI</em> of
     *    the attribute to retrieve.
     * @param localName The <em>local name</em> of the
     *    attribute to retrieve.
     * @return The <code>DOM_Attr</code> value as a string, or an <CODE>null</CODE> if
     *    that attribute does not have a specified or default value.
     */
    DOMString         getAttributeNS(const DOMString &namespaceURI,
  	const DOMString &localName) const;
  
    /**
     * Adds a new attribute. If an attribute with the same 
     * local name and namespace URI is already present on the element, its prefix 
     * is changed to be the prefix part of the <CODE>qualifiedName</CODE>, and 
     * its value is changed to be the <CODE>value</CODE> parameter. This value is 
     * a simple string, it is not parsed as it is being set. So any markup (such 
     * as syntax to be recognized as an entity reference) is treated as literal 
     * text, and needs to be appropriately escaped by the implementation when it 
     * is written out. In order to assign an attribute value that contains entity 
     * references, the user must create an <CODE>DOM_Attr</CODE>
     * node plus any <CODE>DOM_Text</CODE> and <CODE>DOM_EntityReference</CODE>
     * nodes, build the appropriate subtree, and use 
     * <CODE>setAttributeNodeNS</CODE> or <CODE>setAttributeNode</CODE> to assign 
     * it as the value of an attribute.
     *
     * <p><b>"Experimental - subject to change"</b></p>
     *
     * @param namespaceURI The <em>namespace URI</em> of
     *    the attribute to create or alter.
     * @param qualifiedName The <em>qualified name</em> of the
     *    attribute to create or alter.
     * @param value The value to set in string form.
     * @exception DOMException
     *   INVALID_CHARACTER_ERR: Raised if the specified qualified name contains an 
     *   illegal character.
     *   <br>NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly.
     * <br>
     *   NAMESPACE_ERR: Raised if the <CODE>qualifiedName</CODE> is 
     *        malformed, if the <CODE>qualifiedName</CODE> has a prefix and the 
     *        <CODE>namespaceURI</CODE> is <CODE>null</CODE> or an empty string, 
     *        if the <CODE>qualifiedName</CODE> has a prefix that is "xml" and the 
     *        <CODE>namespaceURI</CODE> is different from 
     *        "http://www.w3.org/XML/1998/namespace", if the 
     *        <CODE>qualifiedName</CODE> has a prefix that is "xmlns" and the 
     *        <CODE>namespaceURI</CODE> is different from 
     *        "http://www.w3.org/2000/xmlns/", or if the 
     *        <CODE>qualifiedName</CODE> is "xmlns" and the 
     *        <CODE>namespaceURI</CODE> is different from 
     *        "http://www.w3.org/2000/xmlns/".
     */
     void             setAttributeNS(const DOMString &namespaceURI,
  	const DOMString &qualifiedName, const DOMString &value);
  
    /**
     * Removes an attribute by local name and namespace URI. If the
     * removed attribute has a default value it is immediately replaced.
     * The replacing attribute has the same namespace URI and local name, as well as 
     * the original prefix.
     *
     * <p><b>"Experimental - subject to change"</b></p>
     *
     * @param namespaceURI The <em>namespace URI</em> of
     *    the attribute to remove.
     * @param localName The <em>local name</em> of the
     *    attribute to remove.
     * @exception DOMException
     *   NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly.
     */
    void              removeAttributeNS(const DOMString &namespaceURI,
  	const DOMString &localName);
  
    /**
     * Retrieves an <code>DOM_Attr</code> node by local name and namespace URI.
     *
     * <p><b>"Experimental - subject to change"</b></p>
     *
     * @param namespaceURI The <em>namespace URI</em> of
     *    the attribute to retrieve.
     * @param localName The <em>local name</em> of the
     *    attribute to retrieve.
     * @return The <code>DOM_Attr</code> node with the specified attribute local
     *    name and namespace URI or <code>null</code> if there is no such attribute.
     */
    DOM_Attr        getAttributeNodeNS(const DOMString &namespaceURI,
  	const DOMString &localName) const;
  
     /**
      * Adds a new attribute. 
      * 
      * If an attribute with that local name and namespace URI is already present 
      * in the element, it is replaced by the new one.
      *
      * <p><b>"Experimental - subject to change"</b></p>
      *
      * @param newAttr The <code>DOM_Attr</code> node to add to the attribute list.
      * @return If the <code>newAttr</code> attribute replaces an existing
      *    attribute with the same <em>local name</em> and <em>namespace URI</em>,
      *    the replaced <code>DOM_Attr</code> node is
      *    returned, otherwise <code>null</code> is returned.
      * @exception DOMException
      *   WRONG_DOCUMENT_ERR: Raised if <code>newAttr</code> was created from a 
      *   different document than the one that created the element.
      *   <br>NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly.
      *   <br>INUSE_ATTRIBUTE_ERR: Raised if <code>newAttr</code> is already an 
      *   attribute of another <code>DOM_Element</code> object. The DOM user must 
      *   explicitly clone <code>DOM_Attr</code> nodes to re-use them in other 
      *   elements.
      */
     DOM_Attr        setAttributeNodeNS(DOM_Attr newAttr);
  
    /**
     * Returns a <code>DOM_NodeList</code> of all the <code>DOM_Element</code>s
     * with a given local name and namespace URI in the order in which they
     * would be encountered in a preorder traversal of the
     * <code>DOM_Document</code> tree, starting from this node.
     *
     * <p><b>"Experimental - subject to change"</b></p>
     *
     * @param namespaceURI The <em>namespace URI</em> of
     *    the elements to match on. The special value "*" matches all
     *    namespaces.
     * @param localName The <em>local name</em> of the
     *    elements to match on. The special value "*" matches all local names.
     * @return A new <code>DOM_NodeList</code> object containing all the matched
     *    <code>DOM_Element</code>s.
     */
    DOM_NodeList    getElementsByTagNameNS(const DOMString &namespaceURI,
  	const DOMString &localName) const;
  
    //@}
  
  //  protected:
  //     DOM_Element(ElementImpl *impl);
  
  //     friend class DOM_Document;
  //     friend class DOM_Attr;
  
  };
  
  //#endif
  
  
  
  
  
  1.1                  xml-xerces/perl/Xerces_headers/dom/DOM_Entity.hpp
  
  Index: DOM_Entity.hpp
  ===================================================================
  /*
   * The Apache Software License, Version 1.1
   * 
   * Copyright (c) 1999-2000 The Apache Software Foundation.  All rights
   * reserved.
   * 
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions
   * are met:
   * 
   * 1. Redistributions of source code must retain the above copyright
   *    notice, this list of conditions and the following disclaimer. 
   * 
   * 2. Redistributions in binary form must reproduce the above copyright
   *    notice, this list of conditions and the following disclaimer in
   *    the documentation and/or other materials provided with the
   *    distribution.
   * 
   * 3. The end-user documentation included with the redistribution,
   *    if any, must include the following acknowledgment:  
   *       "This product includes software developed by the
   *        Apache Software Foundation (http://www.apache.org/)."
   *    Alternately, this acknowledgment may appear in the software itself,
   *    if and wherever such third-party acknowledgments normally appear.
   * 
   * 4. The names "Xerces" and "Apache Software Foundation" must
   *    not be used to endorse or promote products derived from this
   *    software without prior written permission. For written 
   *    permission, please contact apache\@apache.org.
   * 
   * 5. Products derived from this software may not be called "Apache",
   *    nor may "Apache" appear in their name, without prior written
   *    permission of the Apache Software Foundation.
   * 
   * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
   * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
   * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
   * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
   * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
   * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
   * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   * SUCH DAMAGE.
   * ====================================================================
   * 
   * This software consists of voluntary contributions made by many
   * individuals on behalf of the Apache Software Foundation, and was
   * originally based on software copyright (c) 1999, International
   * Business Machines, Inc., http://www.ibm.com .  For more information
   * on the Apache Software Foundation, please see
   * <http://www.apache.org/>.
   */
  
  /*
   * $Log: DOM_Entity.hpp,v $
   * Revision 1.1  2001/03/07 16:04:00  jasons
   * PR:
   * Submitted by:	jason@openinformatics.com
   *
   * Added new files from Harmon's 1.3 port
   *
   * Revision 1.8  2000/09/09 00:11:46  andyh
   * Virtual Destructor Patch, submitted by Kirk Wylie
   *
   * Revision 1.7  2000/04/19 02:26:16  aruna1
   * Full support for DOM_EntityReference, DOM_Entity and DOM_DocumentType introduced
   *
   * Revision 1.6  2000/03/11 02:58:38  chchou
   * Fix bug # 18, remove set method of readonly attributes
   *
   * Revision 1.5  2000/03/02 19:53:55  roddey
   * This checkin includes many changes done while waiting for the
   * 1.1.0 code to be finished. I can't list them all here, but a list is
   * available elsewhere.
   *
   * Revision 1.4  2000/02/24 20:11:28  abagchi
   * Swat for removing Log from API docs
   *
   * Revision 1.3  2000/02/06 07:47:30  rahulj
   * Year 2K copyright swat.
   *
   * Revision 1.2  2000/01/05 01:16:07  andyh
   * DOM Level 2 core, namespace support added.
   *
   * Revision 1.1.1.1  1999/11/09 01:08:58  twl
   * Initial checkin
   *
   * Revision 1.2  1999/11/08 20:44:17  rahul
   * Swat for adding in Product name and CVS comment log variable.
   *
   */
  
  //#ifndef DOM_Entity_HEADER_GUARD_
  //#define DOM_Entity_HEADER_GUARD_
  
  //#include <util/XercesDefs.hpp>
  //#include <dom/DOM_Node.hpp>
  
  //class EntityImpl;
  
  /**
   * This interface represents an entity, either parsed or unparsed, in an XML 
   * document. 
   *
   * Note that this models the entity itself not the entity 
   * declaration. <code>Entity</code> declaration modeling has been left for a 
   * later Level of the DOM specification.
   * <p>The <code>nodeName</code> attribute that is inherited from 
   * <code>Node</code> contains the name of the entity.
   * <p>An XML processor may choose to completely expand entities before  the 
   * structure model is passed to the DOM; in this case there will be no 
   * <code>EntityReference</code> nodes in the document tree.
   *
   * <p>Note: the first release of this parser does not create entity
   *    nodes when reading an XML document.  Entities may be
   *    programatically created using DOM_Document::createEntity().
   */
  class /*CDOM_EXPORT*/ DOM_Entity: public DOM_Node {
  public:
      /** @name Constructors and assignment operator */
      //@{
      /**
        * Default constructor for DOM_Entity.
        *
        */
  //    DOM_Entity();
  
      /**
        * Copy constructor.
        *
        * @param other The object to be copied.
        */
  //    DOM_Entity(const DOM_Entity &other);
  
      /**
        * Assignment operator.
        *
        * @param other The object to be copied.
        */
  //    DOM_Entity & operator = (const DOM_Entity &other);
      DOM_Entity & assignment(const DOM_Entity &other);
  
      /**
        * Assignment operator.  This overloaded variant is provided for
        *   the sole purpose of setting a DOM_Node reference variable to
        *   zero.  Nulling out a reference variable in this way will decrement
        *   the reference count on the underlying Node object that the variable
        *   formerly referenced.  This effect is normally obtained when reference
        *   variable goes out of scope, but zeroing them can be useful for
        *   global instances, or for local instances that will remain in scope
        *   for an extended time,  when the storage belonging to the underlying
        *   node needs to be reclaimed.
        *
        * @param val.  Only a value of 0, or null, is allowed.
        */
  //    DOM_Entity & operator = (const DOM_NullPtr *val);
  
      //@}
      /** @name Destructor. */
      //@{
  	 /**
  	  * Destructor for DOM_Entity.
  	  *
  	  */
  //    ~DOM_Entity();
  
      //@}
      /** @name Get functions. */
      //@{
    /**
     * The public identifier associated with the entity, if specified. 
     *
     * If the public identifier was not specified, this is <code>null</code>.
     */
    DOMString        getPublicId() const;
  
    /**
     * The system identifier associated with the entity, if specified. 
     *
     * If the system identifier was not specified, this is <code>null</code>.
     */
    DOMString        getSystemId() const;
  
    /**
     * For unparsed entities, the name of the notation for the entity. 
     *
     * For parsed entities, this is <code>null</code>. 
     */
    DOMString        getNotationName() const;
  
    DOM_Node		getFirstChild() const;
    DOM_Node      getLastChild() const;
    DOM_NodeList  getChildNodes() const;
    bool          hasChildNodes() const;
    DOM_Node		getPreviousSibling() const;
    DOM_Node		getNextSibling() const;
    //@}
  
  //protected:
  //    DOM_Entity(EntityImpl *impl);
  
  //    friend class DOM_Document;
  };
  
  //#endif
  
  
  
  
  1.1                  xml-xerces/perl/Xerces_headers/dom/DOM_EntityReference.hpp
  
  Index: DOM_EntityReference.hpp
  ===================================================================
  /*
   * The Apache Software License, Version 1.1
   * 
   * Copyright (c) 1999-2000 The Apache Software Foundation.  All rights
   * reserved.
   * 
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions
   * are met:
   * 
   * 1. Redistributions of source code must retain the above copyright
   *    notice, this list of conditions and the following disclaimer. 
   * 
   * 2. Redistributions in binary form must reproduce the above copyright
   *    notice, this list of conditions and the following disclaimer in
   *    the documentation and/or other materials provided with the
   *    distribution.
   * 
   * 3. The end-user documentation included with the redistribution,
   *    if any, must include the following acknowledgment:  
   *       "This product includes software developed by the
   *        Apache Software Foundation (http://www.apache.org/)."
   *    Alternately, this acknowledgment may appear in the software itself,
   *    if and wherever such third-party acknowledgments normally appear.
   * 
   * 4. The names "Xerces" and "Apache Software Foundation" must
   *    not be used to endorse or promote products derived from this
   *    software without prior written permission. For written 
   *    permission, please contact apache\@apache.org.
   * 
   * 5. Products derived from this software may not be called "Apache",
   *    nor may "Apache" appear in their name, without prior written
   *    permission of the Apache Software Foundation.
   * 
   * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
   * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
   * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
   * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
   * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
   * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
   * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   * SUCH DAMAGE.
   * ====================================================================
   * 
   * This software consists of voluntary contributions made by many
   * individuals on behalf of the Apache Software Foundation, and was
   * originally based on software copyright (c) 1999, International
   * Business Machines, Inc., http://www.ibm.com .  For more information
   * on the Apache Software Foundation, please see
   * <http://www.apache.org/>.
   */
  
  /*
   * $Log: DOM_EntityReference.hpp,v $
   * Revision 1.1  2001/03/07 16:04:00  jasons
   * PR:
   * Submitted by:	jason@openinformatics.com
   *
   * Added new files from Harmon's 1.3 port
   *
   * Revision 1.5  2000/03/02 19:53:56  roddey
   * This checkin includes many changes done while waiting for the
   * 1.1.0 code to be finished. I can't list them all here, but a list is
   * available elsewhere.
   *
   * Revision 1.4  2000/02/24 20:11:28  abagchi
   * Swat for removing Log from API docs
   *
   * Revision 1.3  2000/02/06 07:47:30  rahulj
   * Year 2K copyright swat.
   *
   * Revision 1.2  2000/01/05 01:16:07  andyh
   * DOM Level 2 core, namespace support added.
   *
   * Revision 1.1.1.1  1999/11/09 01:08:58  twl
   * Initial checkin
   *
   * Revision 1.2  1999/11/08 20:44:18  rahul
   * Swat for adding in Product name and CVS comment log variable.
   *
   */
  
  //#ifndef DOM_EntityReference_HEADER_GUARD_
  //#define DOM_EntityReference_HEADER_GUARD_
  
  //#include <util/XercesDefs.hpp>
  //#include <dom/DOM_Node.hpp>
  
  //class EntityReferenceImpl;
  
  /**
   * <code>EntityReference</code> nodes will appear in the structure 
   * model when an entity reference is in the source document, or when the user 
   * wishes to insert an entity reference. 
   *
   * The expansion of the entity will appear as child nodes of the entity
   * reference node.  The expansion may be just simple text, or it may
   * be more complex, containing additional entity refs.
   *
  */
  
  class /*CDOM_EXPORT*/ DOM_EntityReference: public DOM_Node {
  public:
      /** @name Constructors and assignment operator */
      //@{
      /**
        * Default constructor for DOM_EntityReference.  The resulting object does not
      * refer to an actual Entity Reference node; it will compare == to 0, and is similar
      * to a null object reference variable in Java.  It may subsequently be
      * assigned to refer to an actual entity reference node.
      * <p>
      * New entity reference nodes are created by DOM_Document::createEntityReference().
        *
        */
  //    DOM_EntityReference();
  
      /**
        * Copy constructor.  Creates a new <code>DOM_EntityReference</code> that refers to the
      * same underlying node as the original.  
        *
        * @param other The object to be copied.
        */
  //    DOM_EntityReference(const DOM_EntityReference &other);
  
      /**
        * Assignment operator.
        *
        * @param other The object to be copied.
        */
  //    DOM_EntityReference & operator = (const DOM_EntityReference &other);
      DOM_EntityReference & assignment(const DOM_EntityReference &other);
  
      /**
        * Assignment operator.  This overloaded variant is provided for
        *   the sole purpose of setting a DOM_Node reference variable to
        *   zero.  Nulling out a reference variable in this way will decrement
        *   the reference count on the underlying Node object that the variable
        *   formerly referenced.  This effect is normally obtained when reference
        *   variable goes out of scope, but zeroing them can be useful for
        *   global instances, or for local instances that will remain in scope
        *   for an extended time,  when the storage belonging to the underlying
        *   node needs to be reclaimed.
        *
        * @param val.  Only a value of 0, or null, is allowed.
        */
  //    DOM_EntityReference & operator = (const DOM_NullPtr *val);
  
      //@}
      /** @name Destructor. */
      //@{
  	 /**
  	  * Destructor for DOM_EntityReference.  The object being destroyed is the reference
        * object, not the underlying entity reference node itself.
  	  *
  	  */
  //    ~DOM_EntityReference();
      //@}
  
  //protected:
  //    DOM_EntityReference(EntityReferenceImpl *impl);
  
  //    friend class DOM_Document;
  };
  
  //#endif
  
  
  
  
  
  1.1                  xml-xerces/perl/Xerces_headers/dom/DOM_NamedNodeMap.hpp
  
  Index: DOM_NamedNodeMap.hpp
  ===================================================================
  /*
   * The Apache Software License, Version 1.1
   * 
   * Copyright (c) 1999-2000 The Apache Software Foundation.  All rights
   * reserved.
   * 
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions
   * are met:
   * 
   * 1. Redistributions of source code must retain the above copyright
   *    notice, this list of conditions and the following disclaimer. 
   * 
   * 2. Redistributions in binary form must reproduce the above copyright
   *    notice, this list of conditions and the following disclaimer in
   *    the documentation and/or other materials provided with the
   *    distribution.
   * 
   * 3. The end-user documentation included with the redistribution,
   *    if any, must include the following acknowledgment:  
   *       "This product includes software developed by the
   *        Apache Software Foundation (http://www.apache.org/)."
   *    Alternately, this acknowledgment may appear in the software itself,
   *    if and wherever such third-party acknowledgments normally appear.
   * 
   * 4. The names "Xerces" and "Apache Software Foundation" must
   *    not be used to endorse or promote products derived from this
   *    software without prior written permission. For written 
   *    permission, please contact apache\@apache.org.
   * 
   * 5. Products derived from this software may not be called "Apache",
   *    nor may "Apache" appear in their name, without prior written
   *    permission of the Apache Software Foundation.
   * 
   * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
   * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
   * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
   * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
   * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
   * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
   * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   * SUCH DAMAGE.
   * ====================================================================
   * 
   * This software consists of voluntary contributions made by many
   * individuals on behalf of the Apache Software Foundation, and was
   * originally based on software copyright (c) 1999, International
   * Business Machines, Inc., http://www.ibm.com .  For more information
   * on the Apache Software Foundation, please see
   * <http://www.apache.org/>.
   */
  
  /*
   * $Log: DOM_NamedNodeMap.hpp,v $
   * Revision 1.1  2001/03/07 16:04:01  jasons
   * PR:
   * Submitted by:	jason@openinformatics.com
   *
   * Added new files from Harmon's 1.3 port
   *
   * Revision 1.13  2000/06/07 22:49:40  andyh
   * Memory usage reduction:  DOM NamedNodeMaps for attributes are allocated
   * only for elements that actually have attributes.  By Joe Polastre.
   *
   * Revision 1.12  2000/03/11 03:19:13  chchou
   * Fix bug # 19, add const keyword to API
   *
   * Revision 1.11  2000/03/02 19:53:56  roddey
   * This checkin includes many changes done while waiting for the
   * 1.1.0 code to be finished. I can't list them all here, but a list is
   * available elsewhere.
   *
   * Revision 1.10  2000/02/24 20:11:28  abagchi
   * Swat for removing Log from API docs
   *
   * Revision 1.9  2000/02/17 17:47:24  andyh
   * Update Doc++ API comments
   * NameSpace update to track W3C
   * Changes were made by Chih Hsiang Chou
   *
   * Revision 1.8  2000/02/15 23:17:36  andyh
   * Update Doc++ API comments
   * NameSpace bugfix and update to track W3C
   * Chih Hsiang Chou
   *
   * Revision 1.7  2000/02/10 20:20:42  abagchi
   * Added docs for assignment operators
   *
   * Revision 1.6  2000/02/10 20:19:24  abagchi
   * Added docs for equality operators
   *
   * Revision 1.5  2000/02/06 07:47:30  rahulj
   * Year 2K copyright swat.
   *
   * Revision 1.4  2000/02/04 01:49:28  aruna1
   * TreeWalker and NodeIterator changes
   *
   * Revision 1.3  2000/01/22 01:38:29  andyh
   * Remove compiler warnings in DOM impl classes
   *
   * Revision 1.2  2000/01/05 01:16:07  andyh
   * DOM Level 2 core, namespace support added.
   *
   * Revision 1.1.1.1  1999/11/09 01:08:59  twl
   * Initial checkin
   *
   * Revision 1.3  1999/11/08 20:44:18  rahul
   * Swat for adding in Product name and CVS comment log variable.
   *
   */
  
  //#ifndef DOM_NamedNodeMap_HEADER_GUARD_
  //#define DOM_NamedNodeMap_HEADER_GUARD_
  
  //#include <util/XercesDefs.hpp>
  
  //#include <dom/DOM_Node.hpp>
  //class NamedNodeMapImpl;
  
  /**
  *  <code>NamedNodeMap</code>s  are used to 
  * represent collections of nodes that can be accessed by name.
  *
  * Note that <code>NamedNodeMap</code> does not inherit from <code>NodeList</code>; 
  * <code>NamedNodeMap</code>s are not maintained in any particular order. 
  * Nodes contained in a <code>NamedNodeMap</code> may 
  * also be accessed by an ordinal index, but this is simply to allow 
  * convenient enumeration of the contents, and 
  * does not imply that the DOM specifies an order to these Nodes. 
  */
  class /*CDOM_EXPORT*/ DOM_NamedNodeMap {
  //private:
  //    void     *fImpl;
  //	short    flagElem;
  
  //	static const unsigned short NNM_ELEMENT;
  //	static const unsigned short NNM_OTHER;	
      
  public:
      /** @name Constructors and assignment operator */
      //@{
      /**
        * Default constructor for DOM_NamedNodeMap.  The resulting object does not
        * refer to an actual DOM_NamedNodeMap node; it will compare == to 0, and is similar
        * to a null object reference variable in Java. NamedNopes are instantiated
        * by these methods:  DOM_Node::getAttributes, DOM_DocumentType::getEntities
        * andDOM_DocumentType::getNotations
        *
        */
  //    DOM_NamedNodeMap();
  
      /**
        * Copy constructor.  Creates a new <code>DOM_NamedNodeMap</code> reference object 
        * that refers to the same underlying NamedNodeMap as the original.  
        *
        * @param other The object to be copied.
        */
  //    DOM_NamedNodeMap(const DOM_NamedNodeMap &other);
  
      /**
        * Assignment operator.
        *
        * @param other The object to be copied.
        */
  //    DOM_NamedNodeMap & operator = (const DOM_NamedNodeMap &other);
      DOM_NamedNodeMap & assignment(const DOM_NamedNodeMap &other);
  
      /**
        * Assignment operator.
        *
        * @param other The object to be copied.
        */
  //    DOM_NamedNodeMap & operator = (const DOM_NullPtr *other);
  
      //@}
      /** @name Destructor. */
      //@{
      /**
        * Destructor for DOM_NamedNodeMap.  The object being destroyed is the reference
        * object, not the underlying NamedNodeMap itself.
        *
        * <p>Like most other DOM types in this implementation, memory management
        * of named node maps is automatic.  Instances of DOM_NamedNodeMap function
        * as references to an underlying heap based implementation object,
        * and should never be explicitly new-ed or deleted in application code, but
        * should appear only as local variables or function parameters.
  	  *
  	  */
  //    ~DOM_NamedNodeMap();
      
      //@}
  
      /** @Comparisons. */
      //@{
      /**
       *  Test whether this NamedNodeMap reference refers to the same underlying
       *  named node map as the other reference object.  This does not
       *  compare the contents of two different objects.
       *
       *  @param arg p The value to be compared
       *  @return Returns true if the underlying named node map is same
       */
  //    bool operator == (const DOM_NamedNodeMap &other) const;
      bool equal_to(const DOM_NamedNodeMap &other) const;
  
      /**
       *  Test whether this NamedNodeMap reference refers to a different underlying
       *  named node map as the other reference object.  This does not
       *  compare the contents of two different objects.
       *
       *  @param arg p The value to be compared
       *  @return Returns true if the underlying named node map is different
       */
  //    bool operator != (const DOM_NamedNodeMap &other) const;
      bool not_equal_to(const DOM_NamedNodeMap &other) const;
  
  
      /**
       *  Use this comparison operator to test whether a Named Node Map reference
       *  is null.
       *
       *  @param arg p The value to be compared, which must be 0 or null.
       *  @return Returns true if the named node map is null
       */
  //    bool operator == (const DOM_NullPtr *p) const;
  
      /**
       *  Use this comparison operator to test whether a Named Node Map reference
       *  is not null.
       *
       *  @param arg p The value to be compared, which must not be 0 or null.
       *  @return Returns true if the named node map is not null
       */
  //    bool operator != (const DOM_NullPtr *p) const;
  
      //@}
  
      /** @name Set functions. */
      //@{
  
      /**
      * Adds a node using its <code>nodeName</code> attribute. 
      *
      * <br>As the <code>nodeName</code> attribute is used to derive the name 
      * which the node must be stored under, multiple nodes of certain types 
      * (those that have a "special" string value) cannot be stored as the names 
      * would clash. This is seen as preferable to allowing nodes to be aliased.
      * @param arg A node to store in a named node map. The node will later be 
      *   accessible using the value of the <code>nodeName</code> attribute of 
      *   the node. If a node with that name is already present in the map, it 
      *   is replaced by the new one.
      * @return If the new <code>Node</code> replaces an existing node the
      *   replaced <code>Node</code> is returned, 
      *   otherwise <code>null</code> is returned.
      * @exception DOMException
      *   WRONG_DOCUMENT_ERR: Raised if <code>arg</code> was created from a 
      *   different document than the one that created the 
      *   <code>NamedNodeMap</code>.
      *   <br>NO_MODIFICATION_ALLOWED_ERR: Raised if this 
      *   <code>NamedNodeMap</code> is readonly.
      *   <br>INUSE_ATTRIBUTE_ERR: Raised if <code>arg</code> is an 
      *   <code>Attr</code> that is already an attribute of another 
      *   <code>Element</code> object. The DOM user must explicitly clone 
      *   <code>Attr</code> nodes to re-use them in other elements.
      */
      DOM_Node               setNamedItem(DOM_Node arg);
  
      //@}
      /** @name Get functions. */
      //@{
  
      /**
      * Returns the <code>index</code>th item in the map. 
      *
      * If <code>index</code> 
      * is greater than or equal to the number of nodes in the map, this returns 
      * <code>null</code>.
      * @param index Index into the map.
      * @return The node at the <code>index</code>th position in the 
      *   <code>NamedNodeMap</code>, or <code>null</code> if that is not a valid 
      *   index.
      */
      DOM_Node               item(unsigned int index) const;
  
      /**
      * Retrieves a node specified by name.
      *
      * @param name The <code>nodeName</code> of a node to retrieve.
      * @return A <code>DOM_Node</code> (of any type) with the specified <code>nodeName</code>, or 
      *   <code>null</code> if it does not identify any node in 
      *   the map. 
      */
      DOM_Node               getNamedItem(const DOMString &name) const;
  
      /**
      * The number of nodes in the map. 
      *
      * The range of valid child node indices is 
      * 0 to <code>length-1</code> inclusive. 
      */
      unsigned int           getLength() const;
  
      //@}
      /** @name Functions to change the node collection. */
      //@{
  
      /**
      * Removes a node specified by name.
      *
      * If the removed node is an 
      * <code>Attr</code> with a default value it is immediately replaced.
      * @param name The <code>nodeName</code> of a node to remove.
      * @return The node removed from the map or <code>null</code> if no node 
      *   with such a name exists.
      * @exception DOMException
      *   NOT_FOUND_ERR: Raised if there is no node named <code>name</code> in 
      *   the map.
      * <br>
      *   NO_MODIFICATION_ALLOWED_ERR: Raised if this <code>NamedNodeMap</code>
      *   is readonly.
      */
      DOM_Node               removeNamedItem(const DOMString &name);
  
      //@}
      /** @name Functions introduced in DOM Level 2. */
      //@{
  
      /**
       * Retrieves a node specified by local name and namespace URI.
       *
       * <p><b>"Experimental - subject to change"</b></p>
       *
       * @param namespaceURI The <em>namespace URI</em> of
       *    the node to retrieve.
       * @param localName The <em>local name</em> of the node to retrieve.
       * @return A <code>DOM_Node</code> (of any type) with the specified
       *    local name and namespace URI, or <code>null</code> if they do not
       *    identify any node in the map.
       */
      DOM_Node               getNamedItemNS(const DOMString &namespaceURI,
  	const DOMString &localName);
  
      /**
       * Adds a node using its <CODE>namespaceURI</CODE> and <CODE>localName</CODE>.
       *
       * <p><b>"Experimental - subject to change"</b></p>
       *
       * @param arg A node to store in a named node map. The node will later be 
       *       accessible using the value of the <CODE>namespaceURI</CODE> and 
       *       <CODE>localName</CODE> attribute of the node. If a node with those 
       *       namespace URI and local name is already present in the map, it is 
       *       replaced by the new one.
       * @return If the new <code>DOM_Node</code> replaces an existing node the
       *   replaced <code>DOM_Node</code> is returned, 
       *   otherwise <code>null</code> is returned.
       * @exception DOMException
       *   WRONG_DOCUMENT_ERR: Raised if <code>arg</code> was created from a 
       *   different document than the one that created the 
       *   <code>DOM_NamedNodeMap</code>.
       *   <br>NO_MODIFICATION_ALLOWED_ERR: Raised if this 
       *   <code>vNamedNodeMap</code> is readonly.
       *   <br>INUSE_ATTRIBUTE_ERR: Raised if <code>arg</code> is an 
       *   <code>DOM_Attr</code> that is already an attribute of another 
       *   <code>DOM_Element</code> object. The DOM user must explicitly clone 
       *   <code>DOM_Attr</code> nodes to re-use them in other elements.
       */
      DOM_Node               setNamedItemNS(DOM_Node arg);
  
      /**
       * Removes a node specified by local name and namespace URI.
       *
       * <p><b>"Experimental - subject to change"</b></p>
       *
       * @param namespaceURI The <em>namespace URI</em> of
       *    the node to remove.
       * @param localName The <em>local name</em> of the
       *    node to remove. When this <code>DOM_NamedNodeMap</code> contains the
       *    attributes attached to an element, as returned by the attributes
       *    attribute of the <code>DOM_Node</code> interface, if the removed
       *    attribute is known to have a default value, an attribute
       *    immediately appears containing the default value
       *    as well as the corresponding namespace URI, local name, and prefix.
       * @return The node removed from the map if a node with such a local name
       *    and namespace URI exists.
       * @exception DOMException
       *   NOT_FOUND_ERR: Raised if there is no node named <code>name</code> in 
       *   the map.
       * <br>
       *   NO_MODIFICATION_ALLOWED_ERR: Raised if this <code>DOM_NamedNodeMap</code>
       *   is readonly.
       */
      DOM_Node               removeNamedItemNS(const DOMString &namespaceURI,
  	const DOMString &localName);
  
      //@}
  
  // protected:
  
  //    DOM_NamedNodeMap(NamedNodeMapImpl *impl);
  //	DOM_NamedNodeMap(NodeImpl *impl);
  
  //    friend class DOM_DocumentType;
  //    friend class DOM_Node;
  
  
  };
  
  //#endif
  
  
  
  
  1.1                  xml-xerces/perl/Xerces_headers/dom/DOM_Node.hpp
  
  Index: DOM_Node.hpp
  ===================================================================
  /*
   * The Apache Software License, Version 1.1
   *
   * Copyright (c) 1999-2000 The Apache Software Foundation.  All rights
   * reserved.
   *
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions
   * are met:
   *
   * 1. Redistributions of source code must retain the above copyright
   *    notice, this list of conditions and the following disclaimer.
   *
   * 2. Redistributions in binary form must reproduce the above copyright
   *    notice, this list of conditions and the following disclaimer in
   *    the documentation and/or other materials provided with the
   *    distribution.
   *
   * 3. The end-user documentation included with the redistribution,
   *    if any, must include the following acknowledgment:
   *       "This product includes software developed by the
   *        Apache Software Foundation (http://www.apache.org/)."
   *    Alternately, this acknowledgment may appear in the software itself,
   *    if and wherever such third-party acknowledgments normally appear.
   *
   * 4. The names "Xerces" and "Apache Software Foundation" must
   *    not be used to endorse or promote products derived from this
   *    software without prior written permission. For written
   *    permission, please contact apache\@apache.org.
   *
   * 5. Products derived from this software may not be called "Apache",
   *    nor may "Apache" appear in their name, without prior written
   *    permission of the Apache Software Foundation.
   *
   * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
   * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
   * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
   * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
   * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
   * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
   * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   * SUCH DAMAGE.
   * ====================================================================
   *
   * This software consists of voluntary contributions made by many
   * individuals on behalf of the Apache Software Foundation, and was
   * originally based on software copyright (c) 1999, International
   * Business Machines, Inc., http://www.ibm.com .  For more information
   * on the Apache Software Foundation, please see
   * <http://www.apache.org/>.
   */
  
  /*
   * $Id: DOM_Node.hpp,v 1.1 2001/03/07 16:04:01 jasons Exp $
   */
  
  //#ifndef DOM_Node_HEADER_GUARD_
  //#define DOM_Node_HEADER_GUARD_
  
  //#include <util/XercesDefs.hpp>
  //#include <dom/DOMString.hpp>
  
  //class DOM_NodeList;
  //class DOM_NamedNodeMap;
  //class DOM_Document;
  //class NodeImpl;
  
  //class DOM_NullPtr;  // A dummy class, with no implementation, that is
                      //  used as in overloaded functions as a way to
                      //  pass 0 or null.
  
  /**
   * The <code>Node</code> interface is the primary datatype for the entire
   * Document Object Model.
   *
   * It represents a single node in the document tree.
   * While all objects implementing the <code>Node</code> interface expose
   * methods for dealing with children, not all objects implementing the
   * <code>Node</code> interface may have children. For example,
   * <code>Text</code> nodes may not have children, and adding children to such
   * nodes results in a <code>DOMException</code> being raised.
   * <p>The attributes <code>nodeName</code>, <code>nodeValue</code>  and
   * <code>attributes</code> are  included as a mechanism to get at node
   * information without  casting down to the specific derived interface. In
   * cases where  there is no obvious mapping of these attributes for a specific
   *  <code>nodeType</code> (e.g., <code>nodeValue</code> for an Element  or
   * <code>attributes</code>  for a Comment), this returns <code>null</code>.
   * Note that the  specialized interfaces may contain additional and more
   * convenient mechanisms to get and set the relevant information.
   */
  class  /*CDOM_EXPORT*/ DOM_Node {
  
      public:
      /** @name Constructors and assignment operators */
      //@{
      /**
        * Default constructor for DOM_Node.  The resulting object does not
        * refer to an actual  node; it will compare == to 0, and is similar
        * to a null object reference variable in Java.  It may subsequently be
        * assigned to refer to an actual node.  "Acutal Nodes" will always
        * be of some derived type, such as Element or Attr.
        *
        */
  //    DOM_Node();
  
      /**
        * Copy constructor.
        *
        * @param other The object to be copied.
        */
  //    DOM_Node(const DOM_Node &other);
  
      /**
        * Assignment operator.
        *
        * @param other The source to be assigned.
        */
  //    DOM_Node & operator = (const DOM_Node &other);
      DOM_Node & assignment(const DOM_Node &other);
  
       /**
        * Assignment operator.  This overloaded variant is provided for
        *   the sole purpose of setting a DOM_Node reference variable to
        *   zero.  Nulling out a reference variable in this way will decrement
        *   the reference count on the underlying Node object that the variable
        *   formerly referenced.  This effect is normally obtained when reference
        *   variable goes out of scope, but zeroing them can be useful for
        *   global instances, or for local instances that will remain in scope
        *   for an extended time,  when the storage belonging to the underlying
        *   node needs to be reclaimed.
        *
        * @param val.  Only a value of 0, or null, is allowed.
        */
  //    DOM_Node & operator = (const DOM_NullPtr *val);
  
     //@}
      /** @name Destructor. */
      //@{
  	 /**
  	  * Destructor for DOM_Node.  The object being destroyed is the reference
        * object, not the underlying node itself.
  	  *
  	  */
  //    ~DOM_Node();
  
      //@}
      /** @name Equality and Inequality operators. */
      //@{
      /**
       * The equality operator.  This compares to references to nodes, and
       * returns true if they both refer to the same underlying node.  It
       * is exactly analogous to Java's operator ==  on object reference
       * variables.  This operator can not be used to compare the values
       * of two different nodes in the document tree.
       *
       * @param other The object reference with which <code>this</code> object is compared
       * @returns True if both <code>DOM_Node</code>s refer to the same
       *  actual node, or are both null; return false otherwise.
       */
  //    bool operator == (const DOM_Node & other)const;
      bool equal_to(const DOM_Node & other)const;
  
      /**
        *  Compare with a pointer.  Intended only to allow a convenient
        *    comparison with null.
        *
        */
  //    bool operator == (const DOM_NullPtr *other) const;
  
      /**
       * The inequality operator.  See operator ==.
       *
       */
  //    bool operator != (const DOM_Node & other) const;
      bool not_equal_to(const DOM_Node & other) const;
  
       /**
        *  Compare with a pointer.  Intended only to allow a convenient
        *    comparison with null.
        *
        */
  //   bool operator != (const DOM_NullPtr * other) const;
  
  
      enum NodeType {
          ELEMENT_NODE                = 1,
          ATTRIBUTE_NODE              = 2,
          TEXT_NODE                   = 3,
          CDATA_SECTION_NODE          = 4,
          ENTITY_REFERENCE_NODE       = 5,
          ENTITY_NODE                 = 6,
          PROCESSING_INSTRUCTION_NODE = 7,
          COMMENT_NODE                = 8,
          DOCUMENT_NODE               = 9,
          DOCUMENT_TYPE_NODE          = 10,
          DOCUMENT_FRAGMENT_NODE      = 11,
          NOTATION_NODE               = 12,
          XML_DECL_NODE               = 13
      };
  
      //@}
      /** @name Get functions. */
      //@{
  
      /**
       * The name of this node, depending on its type; see the table above.
       */
      DOMString       getNodeName() const;
  
      /**
       * Gets the value of this node, depending on its type.
       *
       * @exception DOMException
       *   NO_MODIFICATION_ALLOWED_ERR: Raised when the node is readonly.
       * @exception DOMException
       *   DOMSTRING_SIZE_ERR: Raised when it would return more characters than
       *   fit in a <code>DOMString</code> variable on the implementation
       *   platform.
       */
      DOMString       getNodeValue() const;
  
      /**
       * An enum value representing the type of the underlying object.
       */
      short           getNodeType() const;
  
      /**
       * Gets the parent of this node.
       *
       * All nodes, except <code>Document</code>,
       * <code>DocumentFragment</code>, and <code>Attr</code> may have a parent.
       * However, if a node has just been created and not yet added to the tree,
       * or if it has been removed from the tree, a <code>null</code> DOM_Node
       * is returned.
       */
      DOM_Node        getParentNode() const;
  
      /**
       * Gets a <code>NodeList</code> that contains all children of this node.
       *
       * If there
       * are no children, this is a <code>NodeList</code> containing no nodes.
       * The content of the returned <code>NodeList</code> is "live" in the sense
       * that, for instance, changes to the children of the node object that
       * it was created from are immediately reflected in the nodes returned by
       * the <code>NodeList</code> accessors; it is not a static snapshot of the
       * content of the node. This is true for every <code>NodeList</code>,
       * including the ones returned by the <code>getElementsByTagName</code>
       * method.
       */
      DOM_NodeList    getChildNodes() const;
      /**
       * Gets the first child of this node.
       *
       * If there is no such node, this returns <code>null</code>.
       */
      DOM_Node        getFirstChild() const;
  
      /**
       * Gets the last child of this node.
       *
       * If there is no such node, this returns <code>null</code>.
       */
      DOM_Node        getLastChild() const;
  
      /**
       * Gets the node immediately preceding this node.
       *
       * If there is no such node, this returns <code>null</code>.
       */
      DOM_Node        getPreviousSibling() const;
  
      /**
       * Gets the node immediately following this node.
       *
       * If there is no such node, this returns <code>null</code>.
       */
      DOM_Node        getNextSibling() const;
  
      /**
       * Gets a <code>NamedNodeMap</code> containing the attributes of this node (if it
       * is an <code>Element</code>) or <code>null</code> otherwise.
       */
      DOM_NamedNodeMap  getAttributes() const;
  
      /**
       * Gets the <code>DOM_Document</code> object associated with this node.
       *
       * This is also
       * the <code>DOM_Document</code> object used to create new nodes. When this
       * node is a <code>DOM_Document</code> or a <code>DOM_DocumentType</code>
       * which is not used with any <code>DOM_Document</code> yet, this is
       * <code>null</code>.
       *
       * <p><b>"Experimental - subject to change"</b></p>
       *
       */
      DOM_Document      getOwnerDocument() const;
  
      /**
        * Return the user data pointer.
        *
        * User data allows application programs
        * to attach extra data to DOM nodes, and can be set using the
        * function <code>DOM_Node::setUserData(p)</code>.
        * @return The user data pointer.
        */
      void              *getUserData() const;
  
      //@}
      /** @name Cloning function. */
      //@{
  
      /**
       * Returns a duplicate of this node.
       *
       * This function serves as a generic copy constructor for nodes.
       *
       * The duplicate node has no parent (
       * <code>parentNode</code> returns <code>null</code>.).
       * <br>Cloning an <code>Element</code> copies all attributes and their
       * values, including those generated by the  XML processor to represent
       * defaulted attributes, but this method does not copy any text it contains
       * unless it is a deep clone, since the text is contained in a child
       * <code>Text</code> node. Cloning any other type of node simply returns a
       * copy of this node.
       * @param deep If <code>true</code>, recursively clone the subtree under the
       *   specified node; if <code>false</code>, clone only the node itself (and
       *   its attributes, if it is an <code>Element</code>).
       * @return The duplicate node.
       */
      DOM_Node         cloneNode(bool deep) const;
  
      //@}
      /** @name Functions to modify the DOM Node. */
      //@{
  
      /**
       * Inserts the node <code>newChild</code> before the existing child node
       * <code>refChild</code>.
       *
       * If <code>refChild</code> is <code>null</code>,
       * insert <code>newChild</code> at the end of the list of children.
       * <br>If <code>newChild</code> is a <code>DocumentFragment</code> object,
       * all of its children are inserted, in the same order, before
       * <code>refChild</code>. If the <code>newChild</code> is already in the
       * tree, it is first removed.  Note that a <code>DOM_Node</code> that
       * has never been assigned to refer to an actual node is == null.
       * @param newChild The node to insert.
       * @param refChild The reference node, i.e., the node before which the new
       *   node must be inserted.
       * @return The node being inserted.
       * @exception DOMException
       *   HIERARCHY_REQUEST_ERR: Raised if this node is of a type that does not
       *   allow children of the type of the <code>newChild</code> node, or if
       *   the node to insert is one of this node's ancestors.
       *   <br>WRONG_DOCUMENT_ERR: Raised if <code>newChild</code> was created
       *   from a different document than the one that created this node.
       *   <br>NO_MODIFICATION_ALLOWED_ERR: Raised if this node or the node being
       *   inserted is readonly.
       *   <br>NOT_FOUND_ERR: Raised if <code>refChild</code> is not a child of
       *   this node.
       */
      DOM_Node               insertBefore(const DOM_Node &newChild,
                                          const DOM_Node &refChild);
  
  
      /**
       * Replaces the child node <code>oldChild</code> with <code>newChild</code>
       * in the list of children, and returns the <code>oldChild</code> node.
       *
       * If <CODE>newChild</CODE> is a <CODE>DOM_DocumentFragment</CODE> object,
       * <CODE>oldChild</CODE> is replaced by all of the <CODE>DOM_DocumentFragment</CODE>
       * children, which are inserted in the same order.
       *
       * If the <code>newChild</code> is already in the tree, it is first removed.
       * @param newChild The new node to put in the child list.
       * @param oldChild The node being replaced in the list.
       * @return The node replaced.
       * @exception DOMException
       *   HIERARCHY_REQUEST_ERR: Raised if this node is of a type that does not
       *   allow children of the type of the <code>newChild</code> node, or it
       *   the node to put in is one of this node's ancestors.
       *   <br>WRONG_DOCUMENT_ERR: Raised if <code>newChild</code> was created
       *   from a different document than the one that created this node.
       *   <br>NO_MODIFICATION_ALLOWED_ERR: Raised if this node or the new node is readonly.
       *   <br>NOT_FOUND_ERR: Raised if <code>oldChild</code> is not a child of
       *   this node.
       */
      DOM_Node       replaceChild(const DOM_Node &newChild,
                                  const DOM_Node &oldChild);
      /**
       * Removes the child node indicated by <code>oldChild</code> from the list
       * of children, and returns it.
       *
       * @param oldChild The node being removed.
       * @return The node removed.
       * @exception DOMException
       *   NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly.
       *   <br>NOT_FOUND_ERR: Raised if <code>oldChild</code> is not a child of
       *   this node.
       */
      DOM_Node        removeChild(const DOM_Node &oldChild);
  
      /**
       * Adds the node <code>newChild</code> to the end of the list of children of
       * this node.
       *
       * If the <code>newChild</code> is already in the tree, it is
       * first removed.
       * @param newChild The node to add.If it is a  <code>DocumentFragment</code>
       *   object, the entire contents of the document fragment are moved into
       *   the child list of this node
       * @return The node added.
       * @exception DOMException
       *   HIERARCHY_REQUEST_ERR: Raised if this node is of a type that does not
       *   allow children of the type of the <code>newChild</code> node, or if
       *   the node to append is one of this node's ancestors.
       *   <br>WRONG_DOCUMENT_ERR: Raised if <code>newChild</code> was created
       *   from a different document than the one that created this node.
       *   <br>NO_MODIFICATION_ALLOWED_ERR: Raised if this node or the node being
       *   appended is readonly.
       */
      DOM_Node        appendChild(const DOM_Node &newChild);
  
      //@}
      /** @name Query functions. */
      //@{
  
      /**
       *  This is a convenience method to allow easy determination of whether a
       * node has any children.
       *
       * @return  <code>true</code> if the node has any children,
       *   <code>false</code> if the node has no children.
       */
      bool             hasChildNodes() const;
  
  
      /**
       * Test whether this node is null.
       *
       * This C++ class, <code>DOM_Node<code>
       * functions much like an object reference to an underlying Node, and
       * this function tests for that reference being null.  Several DOM
       * APIs, <code>Node.getNextSibling()</code> for example, can return null, and
       * this function is used to test for that condition.
       *
       * <p>Operator == provides another way to perform this null test on a
       * DOM_Node.
       */
      bool                    isNull() const;
  
      //@}
      /** @name Set functions. */
      //@{
  
  
      /**
      * Sets the value of the node.
      *
      * Any node which can have a nodeValue (@see getNodeValue) will
      * also accept requests to set it to a string. The exact response to
      * this varies from node to node -- Attribute, for example, stores
      * its values in its children and has to replace them with a new Text
      * holding the replacement value.
      *
      * For most types of Node, value is null and attempting to set it
      * will throw DOMException(NO_MODIFICATION_ALLOWED_ERR). This will
      * also be thrown if the node is read-only.
      */
      void              setNodeValue(const DOMString &nodeValue);
  
      /**
        * Set the user data for a node.
        *
        * User data allows application programs
        * to attach extra data to DOM nodes, and can be retrieved using the
        * function <code>DOM_Node::getUserData(p)</code>.
        * <p>
        * Deletion of the user data remains the responsibility of the
        * application program; it will not be automatically deleted when
        * the nodes themselves are reclaimed.
        *
        * <p> Because DOM_Node is not designed to be subclassed, userdata
        * provides an alternative means for extending the the information
        * kept with nodes by an application program.
        *
        * @param p The pointer to be kept with the node.
        */
      void              setUserData(void *p);
  
      //@}
      /** @name Functions introduced in DOM Level 2. */
      //@{
  
      /**
       * Puts all <CODE>DOM_Text</CODE> 
       * nodes in the full depth of the sub-tree underneath this <CODE>DOM_Node</CODE>, 
       * including attribute nodes, into a "normal" form where only markup (e.g., 
       * tags, comments, processing instructions, CDATA sections, and entity 
       * references) separates <CODE>DOM_Text</CODE>
       * nodes, i.e., there are neither adjacent <CODE>DOM_Text</CODE>
       * nodes nor empty <CODE>DOM_Text</CODE>
       * nodes. This can be used to ensure that the DOM view of a document is the 
       * same as if it were saved and re-loaded, and is useful when operations 
       * (such as XPointer lookups) that depend on a particular document tree 
       * structure are to be used.
       * <P><B>Note:</B> In cases where the document contains <CODE>DOM_CDATASections</CODE>, 
       * the normalize operation alone may not be sufficient, since XPointers do 
       * not differentiate between <CODE>DOM_Text</CODE>
       * nodes and <CODE>DOM_CDATASection</CODE>
       * nodes.</P>
       *
       * <p><b>"Experimental - subject to change"</b></p>
       *
       */
      void              normalize();
  
      /**
       * Tests whether the DOM implementation implements a specific
       * feature and that feature is supported by this node.
       *
       * <p><b>"Experimental - subject to change"</b></p>
       *
       * @param feature The string of the feature to test. This is the same
       * name as what can be passed to the method <code>hasFeature</code> on
       * <code>DOM_DOMImplementation</code>.
       * @param version This is the version number of the feature to test. In
       * Level 2, version 1, this is the string "2.0". If the version is not
       * specified, supporting any version of the feature will cause the
       * method to return <code>true</code>.
       * @return Returns <code>true</code> if the specified feature is supported
       * on this node, <code>false</code> otherwise.
       */
      bool              supports(const DOMString &feature,
  	                       const DOMString &version) const;
  
      /**
       * Get the <em>namespace URI</em> of
       * this node, or <code>null</code> if it is unspecified.
       * <p>
       * This is not a computed value that is the result of a namespace lookup
       * based on an examination of the namespace declarations in scope. It is
       * merely the namespace URI given at creation time.
       * <p>
       * For nodes of any type other than <CODE>ELEMENT_NODE</CODE> and 
       * <CODE>ATTRIBUTE_NODE</CODE> and nodes created with a DOM Level 1 method, 
       * such as <CODE>createElement</CODE> from the <CODE>DOM_Document</CODE>
       * interface, this is always <CODE>null</CODE>.
       *
       * <p><b>"Experimental - subject to change"</b></p>
       *
       */
      DOMString         getNamespaceURI() const;
  
      /**
       * Get the <em>namespace prefix</em>
       * of this node, or <code>null</code> if it is unspecified.
       *
       * <p><b>"Experimental - subject to change"</b></p>
       *
       */
      DOMString         getPrefix() const;
  
      /**
       * Returns the local part of the <em>qualified name</em> of this node.
       * <p>
       * For nodes created with a DOM Level 1 method, such as
       * <code>createElement</code> from the <code>DOM_Document</code> interface,
       * it is null.
       *
       * <p><b>"Experimental - subject to change"</b></p>
       *
       */
      DOMString         getLocalName() const;
  
      /**
       * Set the <em>namespace prefix</em> of this node.
       * <p>
       * Note that setting this attribute, when permitted, changes 
       * the <CODE>nodeName</CODE> attribute, which holds the <EM>qualified 
       * name</EM>, as well as the <CODE>tagName</CODE> and <CODE>name</CODE> 
       * attributes of the <CODE>DOM_Element</CODE> and <CODE>DOM_Attr</CODE>
       * interfaces, when applicable.
       * <p>
       * Note also that changing the prefix of an 
       * attribute, that is known to have a default value, does not make a new 
       * attribute with the default value and the original prefix appear, since the 
       * <CODE>namespaceURI</CODE> and <CODE>localName</CODE> do not change.
       *
       * <p><b>"Experimental - subject to change"</b></p>
       *
       * @param prefix The prefix of this node.
       * @exception DOMException
       *   INVALID_CHARACTER_ERR: Raised if the specified prefix contains
       *                          an illegal character.
       * <br>
       *   NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly.
       * <br>
       *   NAMESPACE_ERR: Raised if the specified <CODE>prefix</CODE> is 
       *      malformed, if the <CODE>namespaceURI</CODE> of this node is 
       *      <CODE>null</CODE>, if the specified prefix is "xml" and the 
       *      <CODE>namespaceURI</CODE> of this node is different from 
       *      "http://www.w3.org/XML/1998/namespace", if this node is an attribute 
       *      and the specified prefix is "xmlns" and the 
       *      <CODE>namespaceURI</CODE> of this node is different from 
       *      "http://www.w3.org/2000/xmlns/", or if this node is an attribute and 
       *      the <CODE>qualifiedName</CODE> of this node is "xmlns".
       */
      void              setPrefix(const DOMString &prefix);
  
      //@}
  
  //protected:
  //    NodeImpl   *fImpl;
  
  //    DOM_Node(NodeImpl *);
  
  //    friend class DOM_Document;
  //    friend class DocumentImpl;
  //    friend class TreeWalkerImpl;
  //    friend class NodeIteratorImpl;
  //    friend class DOM_NamedNodeMap;
  //    friend class DOM_NodeList;
  //    friend class DOMParser;
  //    friend class DOM_Entity;
  //    friend class RangeImpl;
  //    friend class CharacterDataImpl;
  
  };
  
  
  //#endif
  
  
  
  
  1.1                  xml-xerces/perl/Xerces_headers/dom/DOM_NodeFilter.hpp
  
  Index: DOM_NodeFilter.hpp
  ===================================================================
  /*
   * The Apache Software License, Version 1.1
   *
   * Copyright (c) 1999-2000 The Apache Software Foundation.  All rights
   * reserved.
   *
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions
   * are met:
   *
   * 1. Redistributions of source code must retain the above copyright
   *    notice, this list of conditions and the following disclaimer.
   *
   * 2. Redistributions in binary form must reproduce the above copyright
   *    notice, this list of conditions and the following disclaimer in
   *    the documentation and/or other materials provided with the
   *    distribution.
   *
   * 3. The end-user documentation included with the redistribution,
   *    if any, must include the following acknowledgment:
   *       "This product includes software developed by the
   *        Apache Software Foundation (http://www.apache.org/)."
   *    Alternately, this acknowledgment may appear in the software itself,
   *    if and wherever such third-party acknowledgments normally appear.
   *
   * 4. The names "Xerces" and "Apache Software Foundation" must
   *    not be used to endorse or promote products derived from this
   *    software without prior written permission. For written
   *    permission, please contact apache\@apache.org.
   *
   * 5. Products derived from this software may not be called "Apache",
   *    nor may "Apache" appear in their name, without prior written
   *    permission of the Apache Software Foundation.
   *
   * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
   * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
   * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
   * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
   * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
   * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
   * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   * SUCH DAMAGE.
   * ====================================================================
   *
   * This software consists of voluntary contributions made by many
   * individuals on behalf of the Apache Software Foundation, and was
   * originally based on software copyright (c) 1999, International
   * Business Machines, Inc., http://www.ibm.com .  For more information
   * on the Apache Software Foundation, please see
   * <http://www.apache.org/>.
   */
  
  /*
   * $Log: DOM_NodeFilter.hpp,v $
   * Revision 1.1  2001/03/07 16:04:01  jasons
   * PR:
   * Submitted by:	jason@openinformatics.com
   *
   * Added new files from Harmon's 1.3 port
   *
   * Revision 1.9  2000/05/11 00:07:38  abagchi
   * Removed tables. It was confusing doxygen
   *
   * Revision 1.8  2000/03/11 03:19:13  chchou
   * Fix bug # 19, add const keyword to API
   *
   * Revision 1.7  2000/02/24 20:11:28  abagchi
   * Swat for removing Log from API docs
   *
   * Revision 1.6  2000/02/17 17:47:25  andyh
   * Update Doc++ API comments
   * NameSpace update to track W3C
   * Changes were made by Chih Hsiang Chou
   *
   * Revision 1.5  2000/02/15 23:17:37  andyh
   * Update Doc++ API comments
   * NameSpace bugfix and update to track W3C
   * Chih Hsiang Chou
   *
   * Revision 1.4  2000/02/10 21:47:12  abagchi
   * Added API docs
   *
   * Revision 1.3  2000/02/06 07:47:30  rahulj
   * Year 2K copyright swat.
   *
   * Revision 1.2  2000/02/04 01:49:28  aruna1
   * TreeWalker and NodeIterator changes
   *
   * Revision 1.1.1.1  1999/11/09 01:09:00  twl
   * Initial checkin
   *
   * Revision 1.2  1999/11/08 20:44:19  rahul
   * Swat for adding in Product name and CVS comment log variable.
   *
   */
  
  // DOM_NodeFilter.h: interface for the DOM_NodeFilter class.
  //
  //////////////////////////////////////////////////////////////////////
  
  //#ifndef DOM_NodeFilter_HEADER_GUARD_
  //#define DOM_NodeFilter_HEADER_GUARD_
  
  //#include "DOM_Node.hpp"
  
  //class NodeFilterImpl;
  
  
  /**
   * Filters are objects that know how to "filter out" nodes. If a
   * <code>DOM_NodeIterator</code> or <code>DOM_TreeWalker</code> is given a
   * filter, it applies the filter before it returns the next node.
   *
   * If the filter says to accept the node, the iterator returns it; otherwise, the
   * iterator looks for the next node and pretends that the node that was rejected
   * was not there.
   *
   *  The DOM does not provide any filters. Filter is just an interface that users can
   *  implement to provide their own filters.
   *
   *  Filters do not need to know how to iterate, nor do they need to know anything
   *  about the data structure that is being iterated. This makes it very easy to write
   *  filters, since the only thing they have to know how to do is evaluate a single node.
   *  One filter may be used with a number of different kinds of iterators, encouraging
   *  code reuse.
   *
   * <p><b>"Experimental - subject to change"</b></p>
   *
   */
  class /*CDOM_EXPORT*/ DOM_NodeFilter
  {
      public:
  	/** @name Enumerators for Node Filter */
          //@{
  	/*
  	  *		<table><tr><td>FILTER_ACCEPT</td>
        *            <td>Accept the node. Navigation methods defined for
        *                NodeIterator or TreeWalker will return this node.</td>
  	  *			</tr>
  	  *			<tr><td>
        *               FILTER_REJECT</td>
        *               <td>Reject the node. Navigation methods defined for
        *               NodeIterator or TreeWalker will not return this
        *               node. For TreeWalker, the children of this node will
        *               also be rejected. Iterators treat this as a synonym
        *               for FILTER_SKIP.</td>
  	  *			</tr>
  	  *			<tr><td>FILTER_SKIP</td>
        *              <td>Reject the node. Navigation methods defined for
        *                  NodeIterator or TreeWalker will not return this
        *                  node. For both NodeIterator and Treewalker, the
        *                  children of this node will still be considered.</td>
   	  *			</tr>
  	  *		</table>
        *
  	  */
          enum FilterAction {FILTER_ACCEPT, FILTER_REJECT, FILTER_SKIP};
          enum ShowType {
              SHOW_ALL                       = 0x0000FFFF,
              SHOW_ELEMENT                   = 0x00000001,
              SHOW_ATTRIBUTE                 = 0x00000002,
              SHOW_TEXT                      = 0x00000004,
              SHOW_CDATA_SECTION             = 0x00000008,
              SHOW_ENTITY_REFERENCE          = 0x00000010,
              SHOW_ENTITY                    = 0x00000020,
              SHOW_PROCESSING_INSTRUCTION    = 0x00000040,
              SHOW_COMMENT                   = 0x00000080,
              SHOW_DOCUMENT                  = 0x00000100,
              SHOW_DOCUMENT_TYPE             = 0x00000200,
              SHOW_DOCUMENT_FRAGMENT         = 0x00000400,
              SHOW_NOTATION                  = 0x00000800
          };
  	//@}
  
          /** @name Constructors */
          //@{
          /**
            * Default constructor for DOM_NodeFilter.
            */
  //        DOM_NodeFilter();
          //@}
  
          /** @name Destructor. */
          //@{
  	/**
  	  * Destructor for DOM_NodeFilter.
  	  */
  //        virtual ~DOM_NodeFilter();
          //@}
  
          /** @name Test function. */
          //@{
  	/**
  	  * Test whether a specified node is visible in the logical view of a DOM_TreeWalker
  	  * or DOM_NodeIterator. This function will be called by the implementation of
  	  * DOM_TreeWalker and DOM_NodeIterator; it is not intended to be called directly from user
  	  * code.
            *
            * <p><b>"Experimental - subject to change"</b></p>
            *
            * @param node The node to check to see if it passes the filter or not.
            * @return A constant to determine whether the node is accepted, rejected, or skipped.
  	  */
          virtual short acceptNode (const DOM_Node &node) const =0;
          //@}
  
  //    private:
  //        DOM_NodeFilter(const DOM_NodeFilter &other);
  //        DOM_NodeFilter & operator = (const DOM_NodeFilter &other);
  //        bool operator == (const DOM_NodeFilter &other) const;
  //        bool operator != (const DOM_NodeFilter &other) const;
  };
  
  //#endif
  
  
  
  1.1                  xml-xerces/perl/Xerces_headers/dom/DOM_NodeIterator.hpp
  
  Index: DOM_NodeIterator.hpp
  ===================================================================
  /*
   * The Apache Software License, Version 1.1
   *
   * Copyright (c) 1999-2000 The Apache Software Foundation.  All rights
   * reserved.
   *
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions
   * are met:
   *
   * 1. Redistributions of source code must retain the above copyright
   *    notice, this list of conditions and the following disclaimer.
   *
   * 2. Redistributions in binary form must reproduce the above copyright
   *    notice, this list of conditions and the following disclaimer in
   *    the documentation and/or other materials provided with the
   *    distribution.
   *
   * 3. The end-user documentation included with the redistribution,
   *    if any, must include the following acknowledgment:
   *       "This product includes software developed by the
   *        Apache Software Foundation (http://www.apache.org/)."
   *    Alternately, this acknowledgment may appear in the software itself,
   *    if and wherever such third-party acknowledgments normally appear.
   *
   * 4. The names "Xerces" and "Apache Software Foundation" must
   *    not be used to endorse or promote products derived from this
   *    software without prior written permission. For written
   *    permission, please contact apache\@apache.org.
   *
   * 5. Products derived from this software may not be called "Apache",
   *    nor may "Apache" appear in their name, without prior written
   *    permission of the Apache Software Foundation.
   *
   * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
   * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
   * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
   * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
   * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
   * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
   * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   * SUCH DAMAGE.
   * ====================================================================
   *
   * This software consists of voluntary contributions made by many
   * individuals on behalf of the Apache Software Foundation, and was
   * originally based on software copyright (c) 1999, International
   * Business Machines, Inc., http://www.ibm.com .  For more information
   * on the Apache Software Foundation, please see
   * <http://www.apache.org/>.
   */
  
  /*
   * $Log: DOM_NodeIterator.hpp,v $
   * Revision 1.1  2001/03/07 16:04:01  jasons
   * PR:
   * Submitted by:	jason@openinformatics.com
   *
   * Added new files from Harmon's 1.3 port
   *
   * Revision 1.9  2000/02/17 17:47:25  andyh
   * Update Doc++ API comments
   * NameSpace update to track W3C
   * Changes were made by Chih Hsiang Chou
   *
   * Revision 1.8  2000/02/16 19:39:38  aruna1
   * API Doc++ changes in
   *
   * Revision 1.7  2000/02/15 23:17:37  andyh
   * Update Doc++ API comments
   * NameSpace bugfix and update to track W3C
   * Chih Hsiang Chou
   *
   * Revision 1.6  2000/02/11 18:14:11  abagchi
   * Fixed doc++ bugs
   *
   * Revision 1.5  2000/02/11 03:01:04  abagchi
   * Made protected method public to compile, must be fixed later
   *
   * Revision 1.4  2000/02/10 23:38:05  abagchi
   * Added API docs
   *
   * Revision 1.3  2000/02/06 07:47:30  rahulj
   * Year 2K copyright swat.
   *
   * Revision 1.2  2000/02/04 01:49:28  aruna1
   * TreeWalker and NodeIterator changes
   *
   * Revision 1.3  1999/11/08 20:44:20  rahul
   * Swat for adding in Product name and CVS comment log variable.
   *
   * Revision 1.1.1.1  1999/11/09 01:09:01  twl
   * Initial checkin
   *
   */
  
  //#ifndef DOM_NodeIterator_HEADER_GUARD_
  //#define DOM_NodeIterator_HEADER_GUARD_
  
  //#include "DOM_NodeFilter.hpp"
  //#include "DOM_Node.hpp"
  
  //class NodeIteratorImpl;
  
  /**
   * NodeIterators are used to step through a set of nodes
   * e.g. the set of nodes in a NodeList, the document subtree governed by
   * a particular node, the results of a query, or any other set of nodes.
   * The set of nodes to be iterated is determined by the implementation
   * of the NodeIterator. DOM Level 2 specifies a single NodeIterator
   * implementation for document-order traversal of a document
   * subtree. Instances of these iterators are created by calling
   * <code>DocumentTraversal.createNodeIterator()</code>.
   *
   * <p><b>"Experimental - subject to change"</b></p>
   *
   */
  class /*CDOM_EXPORT*/ DOM_NodeIterator
  {
      public:
          /** @name Constructors and assignment operator */
          //@{
          /**
            * Default constructor.
            */
  //        DOM_NodeIterator ();
  
          /**
            * Copy constructor.
            *
            * @param other The object to be copied.
            */
  //        DOM_NodeIterator(const DOM_NodeIterator &other);
  
          /**
            * Assignment operator.
            *
            * @param other The object to be copied.
            */
  //        DOM_NodeIterator & operator = (const DOM_NodeIterator &other);
          DOM_NodeIterator & assignment(const DOM_NodeIterator &other);
  
          /**
            * Assignment operator.  This overloaded variant is provided for
            *   the sole purpose of setting a DOM_NodeIterator to null.
            *
            * @param val.  Only a value of 0, or null, is allowed.
            */
  //        DOM_NodeIterator & operator = (const DOM_NullPtr *val);
          //@}
  
          /** @name Destructor. */
          //@{
  	/**
  	  * Destructor for DOM_NodeIterator.
  	  */
  //        ~DOM_NodeIterator();
          //@}
  
          /** @name Equality and Inequality operators. */
          //@{
          /**
           * The equality operator.
           *
           * @param other The object reference with which <code>this</code> object is compared
           * @returns True if both <code>DOM_NodeIterator</code>s refer to the same
           *  actual node, or are both null; return false otherwise.
           */
  //        bool operator == (const DOM_NodeIterator & other)const;
          bool equal_to(const DOM_NodeIterator & other)const;
  
          /**
            *  Compare with a pointer.  Intended only to allow a convenient
            *    comparison with null.
            */
  //        bool operator == (const DOM_NullPtr *other) const;
  
          /**
           * The inequality operator.  See operator ==.
           */
  //        bool operator != (const DOM_NodeIterator & other) const;
          bool not_equal_to(const DOM_NodeIterator & other) const;
  
           /**
            *  Compare with a pointer.  Intended only to allow a convenient
            *    comparison with null.
            *
            */
  //        bool operator != (const DOM_NullPtr * other) const;
          //@}
  
          /** @name Get functions. */
          //@{
          /**
            * Return which node types are presented via the iterator.
            * The available set of constants is defined in the DOM_NodeFilter interface.
            *
            * <p><b>"Experimental - subject to change"</b></p>
            *
            */
          unsigned long       getWhatToShow();
  
          /**
            * Return The filter used to screen nodes.
            *
            * <p><b>"Experimental - subject to change"</b></p>
            *
            */
          DOM_NodeFilter*     getFilter();
  
          /**
            * Return the expandEntityReferences flag.
            * The value of this flag determines whether the children of entity reference
            * nodes are visible to the DOM_NodeFilter. If false, they will be skipped over.
            *
            * <p><b>"Experimental - subject to change"</b></p>
            *
            */
          bool getExpandEntityReferences();
  
          /**
            * Returns the next node in the set and advances the position of the iterator
            * in the set. After a DOM_NodeIterator is created, the first call to nextNode()
            * returns the first node in the set.
            *
            * <p><b>"Experimental - subject to change"</b></p>
            *
            * @exception DOMException
            *   INVALID_STATE_ERR: Raised if this method is called after the
            *   <code>detach</code> method was invoked.
            */
          DOM_Node            nextNode();
  
          /**
            * Returns the previous node in the set and moves the position of the iterator
            * backwards in the set.
            *
            * <p><b>"Experimental - subject to change"</b></p>
            *
            * @exception DOMException
            *   INVALID_STATE_ERR: Raised if this method is called after the
            *   <code>detach</code> method was invoked.
            */
          DOM_Node            previousNode();
          //@}
  
          /** @name Detaching functions. */
          //@{
          /**
            * Detaches the iterator from the set which it iterated over, releasing any
            * computational resources and placing the iterator in the INVALID state. After
            * <code>detach</code> has been invoked, calls to <code>nextNode</code> or
            * <code>previousNode</code> will raise the exception INVALID_STATE_ERR.
            *
            * <p><b>"Experimental - subject to change"</b></p>
            *
            */
  	void				detach();
          //@}
  
  //    protected:
  //        DOM_NodeIterator (NodeIteratorImpl* impl);
  
  //        friend class DOM_Document;
  
  //    private:
  //        NodeIteratorImpl*                 fImpl;
  };
  
  //#endif
  
  
  
  1.1                  xml-xerces/perl/Xerces_headers/dom/DOM_NodeList.hpp
  
  Index: DOM_NodeList.hpp
  ===================================================================
  /*
   * The Apache Software License, Version 1.1
   * 
   * Copyright (c) 1999-2000 The Apache Software Foundation.  All rights
   * reserved.
   * 
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions
   * are met:
   * 
   * 1. Redistributions of source code must retain the above copyright
   *    notice, this list of conditions and the following disclaimer. 
   * 
   * 2. Redistributions in binary form must reproduce the above copyright
   *    notice, this list of conditions and the following disclaimer in
   *    the documentation and/or other materials provided with the
   *    distribution.
   * 
   * 3. The end-user documentation included with the redistribution,
   *    if any, must include the following acknowledgment:  
   *       "This product includes software developed by the
   *        Apache Software Foundation (http://www.apache.org/)."
   *    Alternately, this acknowledgment may appear in the software itself,
   *    if and wherever such third-party acknowledgments normally appear.
   * 
   * 4. The names "Xerces" and "Apache Software Foundation" must
   *    not be used to endorse or promote products derived from this
   *    software without prior written permission. For written 
   *    permission, please contact apache\@apache.org.
   * 
   * 5. Products derived from this software may not be called "Apache",
   *    nor may "Apache" appear in their name, without prior written
   *    permission of the Apache Software Foundation.
   * 
   * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
   * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
   * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
   * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
   * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
   * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
   * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   * SUCH DAMAGE.
   * ====================================================================
   * 
   * This software consists of voluntary contributions made by many
   * individuals on behalf of the Apache Software Foundation, and was
   * originally based on software copyright (c) 1999, International
   * Business Machines, Inc., http://www.ibm.com .  For more information
   * on the Apache Software Foundation, please see
   * <http://www.apache.org/>.
   */
  
  /*
   * $Log: DOM_NodeList.hpp,v $
   * Revision 1.1  2001/03/07 16:04:01  jasons
   * PR:
   * Submitted by:	jason@openinformatics.com
   *
   * Added new files from Harmon's 1.3 port
   *
   * Revision 1.9  2000/04/19 02:26:16  aruna1
   * Full support for DOM_EntityReference, DOM_Entity and DOM_DocumentType introduced
   *
   * Revision 1.8  2000/03/02 19:53:56  roddey
   * This checkin includes many changes done while waiting for the
   * 1.1.0 code to be finished. I can't list them all here, but a list is
   * available elsewhere.
   *
   * Revision 1.7  2000/02/24 20:11:28  abagchi
   * Swat for removing Log from API docs
   *
   * Revision 1.6  2000/02/10 20:38:46  abagchi
   * Added docs for equality operators
   *
   * Revision 1.5  2000/02/06 07:47:30  rahulj
   * Year 2K copyright swat.
   *
   * Revision 1.4  2000/02/04 01:49:27  aruna1
   * TreeWalker and NodeIterator changes
   *
   * Revision 1.3  2000/01/22 01:38:29  andyh
   * Remove compiler warnings in DOM impl classes
   *
   * Revision 1.2  2000/01/05 01:16:08  andyh
   * DOM Level 2 core, namespace support added.
   *
   * Revision 1.1.1.1  1999/11/09 01:09:02  twl
   * Initial checkin
   *
   * Revision 1.2  1999/11/08 20:44:20  rahul
   * Swat for adding in Product name and CVS comment log variable.
   *
   */
  
  //#ifndef DOM_NodeList_HEADER_GUARD_
  //#define DOM_NodeList_HEADER_GUARD_
  
  //#include <util/XercesDefs.hpp>
  //#include <dom/DOM_Node.hpp>
  
  //class NodeListImpl;
  
  /**
   * The <code>NodeList</code> interface provides the abstraction of an ordered 
   * collection of nodes.  NodeLists are created by DOM_Document::getElementsByTagName(), 
   * DOM_Node::getChildNodes(), 
   *
   * <p>The items in the <code>NodeList</code> are accessible via an integral 
   * index, starting from 0. 
   *
   * NodeLists are "live", in that any changes to the document tree are immediately
   * reflected in any NodeLists that may have been created for that tree.
   */
  
  class  /*CDOM_EXPORT*/ DOM_NodeList {
  //private:
  //    NodeListImpl *fImpl;
  
  public:
      /** @name Constructors and assignment operator */
      //@{
      /**
        * Default constructor for DOM_NodeList.  The resulting object does not
        * refer to an actual NodeList; it will compare == to 0, and is similar
        * to a null object reference variable in Java.  It may subsequently be
        * assigned to refer to an actual NodeList.
        *
        */
  //    DOM_NodeList();
  
      /**
        * Copy constructor.
        *
        * @param other The object to be copied.
        */
  //    DOM_NodeList(const DOM_NodeList &other);
  
      /**
        * Assignment operator.
        *
        * @param other The object to be copied.
        */
  //    DOM_NodeList & operator = (const DOM_NodeList &other);
      DOM_NodeList & assignment(const DOM_NodeList &other);
  
      /**
        * Assignment operator.  This overloaded variant is provided for
        *   the sole purpose of setting a DOM_Node reference variable to
        *   zero.  Nulling out a reference variable in this way will decrement
        *   the reference count on the underlying Node object that the variable
        *   formerly referenced.  This effect is normally obtained when reference
        *   variable goes out of scope, but zeroing them can be useful for
        *   global instances, or for local instances that will remain in scope
        *   for an extended time,  when the storage belonging to the underlying
        *   node needs to be reclaimed.
        *
        * @param val.  Only a value of 0, or null, is allowed.
        */
  //    DOM_NodeList & operator = (const DOM_NullPtr *val);
  
      //@}
      /** @name Destructor. */
      //@{
  	 /**
  	  * Destructor for DOM_NodeList.  The object being destroyed is the reference
        * object, not the underlying NodeList node itself.
  	  *
        * <p>Like most other DOM types in this implementation, memory management
        * of Node Lists is automatic.  Instances of DOM_NodeList function
        * as references to an underlying heap based implementation object,
        * and should never be explicitly new-ed or deleted in application code, but
        * should appear only as local variables or function parameters.
  	  */
  //    ~DOM_NodeList();
      //@}
  
      /** @name Comparison operators. */
      //@{
  
      /**
        *  Equality operator.
        *  Compares whether two node list
        *  variables refer to the same underlying node list.  It does
        *  not compare the contents of the node lists themselves.
        *
        *  @param other The value to be compared
        *  @return Returns true if node list refers to same underlying node list
        */
  //    bool operator == (const DOM_NodeList &other) const;
      bool equal_to(const DOM_NodeList &other) const;
  
      /**
       *  Use this comparison operator to test whether a Node List reference
       *  is null.
       *
       *  @param nullPtr The value to be compared, which must be 0 or null.
       *  @return Returns true if node list reference is null
       */
  //    bool operator == (const DOM_NullPtr *nullPtr) const;
  
       /**
        *  Inequality operator.
        *  Compares whether two node list
        *  variables refer to the same underlying node list.  It does
        *  not compare the contents of the node lists themselves.
        *
        *  @param other The value to be compared
        *  @return Returns true if node list refers to a different underlying node list
        */
  //    bool operator != (const DOM_NodeList &other) const;
      bool not_equal_to(const DOM_NodeList &other) const;
  
      /**
       *  Use this comparison operator to test whether a Node List reference
       *  is not null.
       *
       *  @param nullPtr The value to be compared, which must be 0 or null.
       *  @return Returns true if node list reference is not null
       */
  //    bool operator != (const DOM_NullPtr *nullPtr) const; 
      //@}
  
  
      /** @name Get functions. */
      //@{
      /**
       * Returns the <code>index</code>th item in the collection. 
       *
       * If <code>index</code> is greater than or equal to the number of nodes in 
       * the list, this returns <code>null</code>.
       *
       * @param index Index into the collection.
       * @return The node at the <code>index</code>th position in the 
       *   <code>NodeList</code>, or <code>null</code> if that is not a valid 
       *   index.
       */
      DOM_Node  item(unsigned int index) const;
  
      /**
       * Returns the number of nodes in the list. 
       *
       * The range of valid child node indices is 0 to <code>length-1</code> inclusive. 
       */
      unsigned int getLength() const;
      //@}
  
  //protected:
  //    DOM_NodeList(NodeListImpl *impl);
  
  //    friend class DOM_Document;
  //    friend class DOM_Element;
  //    friend class DOM_Node;
  //    friend class DOM_Entity;
  
  };
  
  //#endif
  
  
  
  
  
  1.1                  xml-xerces/perl/Xerces_headers/dom/DOM_Notation.hpp
  
  Index: DOM_Notation.hpp
  ===================================================================
  /*
   * The Apache Software License, Version 1.1
   * 
   * Copyright (c) 1999-2000 The Apache Software Foundation.  All rights
   * reserved.
   * 
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions
   * are met:
   * 
   * 1. Redistributions of source code must retain the above copyright
   *    notice, this list of conditions and the following disclaimer. 
   * 
   * 2. Redistributions in binary form must reproduce the above copyright
   *    notice, this list of conditions and the following disclaimer in
   *    the documentation and/or other materials provided with the
   *    distribution.
   * 
   * 3. The end-user documentation included with the redistribution,
   *    if any, must include the following acknowledgment:  
   *       "This product includes software developed by the
   *        Apache Software Foundation (http://www.apache.org/)."
   *    Alternately, this acknowledgment may appear in the software itself,
   *    if and wherever such third-party acknowledgments normally appear.
   * 
   * 4. The names "Xerces" and "Apache Software Foundation" must
   *    not be used to endorse or promote products derived from this
   *    software without prior written permission. For written 
   *    permission, please contact apache\@apache.org.
   * 
   * 5. Products derived from this software may not be called "Apache",
   *    nor may "Apache" appear in their name, without prior written
   *    permission of the Apache Software Foundation.
   * 
   * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
   * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
   * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
   * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
   * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
   * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
   * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   * SUCH DAMAGE.
   * ====================================================================
   * 
   * This software consists of voluntary contributions made by many
   * individuals on behalf of the Apache Software Foundation, and was
   * originally based on software copyright (c) 1999, International
   * Business Machines, Inc., http://www.ibm.com .  For more information
   * on the Apache Software Foundation, please see
   * <http://www.apache.org/>.
   */
  
  /*
   * $Log: DOM_Notation.hpp,v $
   * Revision 1.1  2001/03/07 16:04:01  jasons
   * PR:
   * Submitted by:	jason@openinformatics.com
   *
   * Added new files from Harmon's 1.3 port
   *
   * Revision 1.6  2000/03/11 02:58:39  chchou
   * Fix bug # 18, remove set method of readonly attributes
   *
   * Revision 1.5  2000/03/02 19:53:57  roddey
   * This checkin includes many changes done while waiting for the
   * 1.1.0 code to be finished. I can't list them all here, but a list is
   * available elsewhere.
   *
   * Revision 1.4  2000/02/24 20:11:28  abagchi
   * Swat for removing Log from API docs
   *
   * Revision 1.3  2000/02/06 07:47:31  rahulj
   * Year 2K copyright swat.
   *
   * Revision 1.2  2000/01/05 01:16:08  andyh
   * DOM Level 2 core, namespace support added.
   *
   * Revision 1.1.1.1  1999/11/09 01:09:03  twl
   * Initial checkin
   *
   * Revision 1.2  1999/11/08 20:44:21  rahul
   * Swat for adding in Product name and CVS comment log variable.
   *
   */
  
  //#ifndef DOM_Notation_HEADER_GUARD_
  //#define DOM_Notation_HEADER_GUARD_
  
  //#include <util/XercesDefs.hpp>
  //#include <dom/DOM_Node.hpp>
  
  //class NotationImpl;
  
  /**
   * This interface represents a notation declared in the DTD. A notation either 
   * declares, by name, the format of an unparsed entity (see section 4.7 of 
   * the XML 1.0 specification), or is used for formal declaration of 
   * Processing Instruction targets (see section 2.6 of the XML 1.0 
   * specification). The <code>nodeName</code> attribute inherited from 
   * <code>Node</code> is set to the declared name of the notation.
   * <p>The DOM Level 1 does not support editing <code>Notation</code> nodes; 
   * they are therefore readonly.
   * <p>A <code>Notation</code> node does not have any parent.
   */
  class /*CDOM_EXPORT*/ DOM_Notation: public DOM_Node {
  public:
      /** @name Constructors and assignment operator */
      //@{
      /**
        * Default constructor for DOM_Notation.  The resulting object does not
      * refer to an actual Notation node; it will compare == to 0, and is similar
      * to a null object reference variable in Java.  It may subsequently be
      * assigned to refer to an actual Notation node.
      * <p>
      * New notation nodes are created by DOM_Document::createNotation().
      *
        *
        */
  //    DOM_Notation();
  
      /**
        * Copy constructor.  Creates a new <code>DOM_Notation</code> that refers to the
        * same underlying node as the original.  See also DOM_Node::clone(),
        * which will copy the actual notation node, rather than just creating a new
        * reference to the original node.
        *
        * @param other The object to be copied.
        */
  //    DOM_Notation(const DOM_Notation &other);
  
      /**
        * Assignment operator.
        *
        * @param other The object to be copied.
        */
  //    DOM_Notation & operator = (const DOM_Notation &other);
      DOM_Notation & assignment(const DOM_Notation &other);
  
       /**
        * Assignment operator.  This overloaded variant is provided for
        *   the sole purpose of setting a DOM_Node reference variable to
        *   zero.  Nulling out a reference variable in this way will decrement
        *   the reference count on the underlying Node object that the variable
        *   formerly referenced.  This effect is normally obtained when reference
        *   variable goes out of scope, but zeroing them can be useful for
        *   global instances, or for local instances that will remain in scope
        *   for an extended time,  when the storage belonging to the underlying
        *   node needs to be reclaimed.
        *
        * @param val.  Only a value of 0, or null, is allowed.
        */
  //    DOM_Notation & operator = (const DOM_NullPtr *val);
  
  
      //@}
      /** @name Destructor. */
      //@{
  	 /**
  	  * Destructor for DOM_Notation.  The object being destroyed is the reference
        * object, not the underlying Notation node itself.
        * 
  	  */
  //    ~DOM_Notation();
  
      //@}
      /** @name Get functions. */
      //@{
  
      /**
       * Get the public identifier of this notation. 
       * 
       * If the  public identifier was not 
       * specified, this is <code>null</code>.
       * @return Returns the public identifier of the notation
       */
      DOMString        getPublicId() const;
      /**
       * Get the system identifier of this notation. 
       *
       * If the  system identifier was not 
       * specified, this is <code>null</code>.
       * @return Returns the system identifier of the notation
       */
      DOMString        getSystemId() const;
  
  
      //@}
  
  //protected:
  //    DOM_Notation(NotationImpl *impl);
  
  //    friend class DOM_Document;
  
  };
  
  //#endif
  
  
  
  
  
  1.1                  xml-xerces/perl/Xerces_headers/dom/DOM_ProcessingInstruction.hpp
  
  Index: DOM_ProcessingInstruction.hpp
  ===================================================================
  /*
   * The Apache Software License, Version 1.1
   * 
   * Copyright (c) 1999-2000 The Apache Software Foundation.  All rights
   * reserved.
   * 
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions
   * are met:
   * 
   * 1. Redistributions of source code must retain the above copyright
   *    notice, this list of conditions and the following disclaimer. 
   * 
   * 2. Redistributions in binary form must reproduce the above copyright
   *    notice, this list of conditions and the following disclaimer in
   *    the documentation and/or other materials provided with the
   *    distribution.
   * 
   * 3. The end-user documentation included with the redistribution,
   *    if any, must include the following acknowledgment:  
   *       "This product includes software developed by the
   *        Apache Software Foundation (http://www.apache.org/)."
   *    Alternately, this acknowledgment may appear in the software itself,
   *    if and wherever such third-party acknowledgments normally appear.
   * 
   * 4. The names "Xerces" and "Apache Software Foundation" must
   *    not be used to endorse or promote products derived from this
   *    software without prior written permission. For written 
   *    permission, please contact apache\@apache.org.
   * 
   * 5. Products derived from this software may not be called "Apache",
   *    nor may "Apache" appear in their name, without prior written
   *    permission of the Apache Software Foundation.
   * 
   * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
   * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
   * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
   * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
   * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
   * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
   * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   * SUCH DAMAGE.
   * ====================================================================
   * 
   * This software consists of voluntary contributions made by many
   * individuals on behalf of the Apache Software Foundation, and was
   * originally based on software copyright (c) 1999, International
   * Business Machines, Inc., http://www.ibm.com .  For more information
   * on the Apache Software Foundation, please see
   * <http://www.apache.org/>.
   */
  
  /*
   * $Log: DOM_ProcessingInstruction.hpp,v $
   * Revision 1.1  2001/03/07 16:04:01  jasons
   * PR:
   * Submitted by:	jason@openinformatics.com
   *
   * Added new files from Harmon's 1.3 port
   *
   * Revision 1.5  2000/03/02 19:53:57  roddey
   * This checkin includes many changes done while waiting for the
   * 1.1.0 code to be finished. I can't list them all here, but a list is
   * available elsewhere.
   *
   * Revision 1.4  2000/02/24 20:11:28  abagchi
   * Swat for removing Log from API docs
   *
   * Revision 1.3  2000/02/06 07:47:31  rahulj
   * Year 2K copyright swat.
   *
   * Revision 1.2  2000/01/05 01:16:08  andyh
   * DOM Level 2 core, namespace support added.
   *
   * Revision 1.1.1.1  1999/11/09 01:09:03  twl
   * Initial checkin
   *
   * Revision 1.2  1999/11/08 20:44:21  rahul
   * Swat for adding in Product name and CVS comment log variable.
   *
   */
  
  //#ifndef DOM_ProcessingInstruction_HEADER_GUARD_
  //#define DOM_ProcessingInstruction_HEADER_GUARD_
  
  //#include <util/XercesDefs.hpp>
  //#include <dom/DOM_Node.hpp>
  
  //class ProcessingInstructionImpl;
  
  /**
   * The <code>ProcessingInstruction</code> interface represents a  "processing 
   * instruction", used in XML as a way to keep processor-specific information 
   * in the text of the document.
   */
  class  /*CDOM_EXPORT*/ DOM_ProcessingInstruction: public DOM_Node {
  public:
      /** @name Constructors and assignment operator */
      //@{
      /**
        * Default constructor for DOM_ProcessingInstruction.  The resulting object
        *  does not refer to an actual PI node; it will compare == to 0, and is similar
        * to a null object reference variable in Java.  It may subsequently be
        * assigned to refer to an actual PI node.
        * <p>
        * New Processing Instruction nodes are created by DOM_Document::createProcessingInstruction().
        *
        *
        */
  //    DOM_ProcessingInstruction();
  
      /**
        * Copy constructor.  Creates a new <code>DOM_ProcessingInstruction</code> that refers to the
        * same underlying node as the original.  See also DOM_Node::clone(),
        * which will copy the actual PI node, rather than just creating a new
        * reference to the original node.
        *
        * @param other The object to be copied.
        */
  //    DOM_ProcessingInstruction(const DOM_ProcessingInstruction &other);
  
      /**
        * Assignment operator.
        *
        * @param other The object to be copied.
        */
  //    DOM_ProcessingInstruction & operator = (const DOM_ProcessingInstruction &other);
      DOM_ProcessingInstruction & assignment(const DOM_ProcessingInstruction &other);
  
      /**
        * Assignment operator.  This overloaded variant is provided for
        *   the sole purpose of setting a DOM_Node reference variable to
        *   zero.  Nulling out a reference variable in this way will decrement
        *   the reference count on the underlying Node object that the variable
        *   formerly referenced.  This effect is normally obtained when reference
        *   variable goes out of scope, but zeroing them can be useful for
        *   global instances, or for local instances that will remain in scope
        *   for an extended time,  when the storage belonging to the underlying
        *   node needs to be reclaimed.
        *
        * @param val.  Only a value of 0, or null, is allowed.
        */
  //    DOM_ProcessingInstruction & operator = (const DOM_NullPtr *val);
  
      //@}
      /** @name Destructor. */
      //@{
  	 /**
  	  * Destructor for DOM_processingInstruction.  The object being destroyed is the reference
        * object, not the underlying PI node itself.
  	  *
  	  */
  //    ~DOM_ProcessingInstruction();
  
      //@}
      /** @name Get functions. */
      //@{
      /**
       * The target of this processing instruction. 
       *
       * XML defines this as being the 
       * first token following the markup that begins the processing instruction.
       */
      DOMString        getTarget() const;
  
      /**
       * The content of this processing instruction. 
       *
       * This is from the first non 
       * white space character after the target to the character immediately 
       * preceding the <code>?&gt;</code>.
       * @exception DOMException
       *   NO_MODIFICATION_ALLOWED_ERR: Raised when the node is readonly.
       */
      DOMString        getData() const;
  
      //@}
      /** @name Set functions. */
      //@{
      /**
      * Sets the content of this processing instruction. 
      *
      * This is from the first non 
      * white space character after the target to the character immediately 
      * preceding the <code>?&gt;</code>.
      * @param data The string containing the processing instruction
      */
      void             setData(const DOMString &data);
      //@}
  
  //protected:
  //    DOM_ProcessingInstruction(ProcessingInstructionImpl *impl);
  
  //    friend class DOM_Document;
  
  };
  
  //#endif
  
  
  
  
  1.1                  xml-xerces/perl/Xerces_headers/dom/DOM_Range.hpp
  
  Index: DOM_Range.hpp
  ===================================================================
  /*
   * The Apache Software License, Version 1.1
   *
   * Copyright (c) 1999-2000 The Apache Software Foundation.  All rights
   * reserved.
   *
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions
   * are met:
   *
   * 1. Redistributions of source code must retain the above copyright
   *    notice, this list of conditions and the following disclaimer.
   *
   * 2. Redistributions in binary form must reproduce the above copyright
   *    notice, this list of conditions and the following disclaimer in
   *    the documentation and/or other materials provided with the
   *    distribution.
   *
   * 3. The end-user documentation included with the redistribution,
   *    if any, must include the following acknowledgment:
   *       "This product includes software developed by the
   *        Apache Software Foundation (http://www.apache.org/)."
   *    Alternately, this acknowledgment may appear in the software itself,
   *    if and wherever such third-party acknowledgments normally appear.
   *
   * 4. The names "Xerces" and "Apache Software Foundation" must
   *    not be used to endorse or promote products derived from this
   *    software without prior written permission. For written
   *    permission, please contact apache\@apache.org.
   *
   * 5. Products derived from this software may not be called "Apache",
   *    nor may "Apache" appear in their name, without prior written
   *    permission of the Apache Software Foundation.
   *
   * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
   * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
   * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
   * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
   * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
   * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
   * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   * SUCH DAMAGE.
   * ====================================================================
   *
   * This software consists of voluntary contributions made by many
   * individuals on behalf of the Apache Software Foundation, and was
   * originally based on software copyright (c) 1999, International
   * Business Machines, Inc., http://www.ibm.com .  For more information
   * on the Apache Software Foundation, please see
   * <http://www.apache.org/>.
   */
  
  /*
   * $Id: DOM_Range.hpp,v 1.1 2001/03/07 16:04:02 jasons Exp $
   */
  
  //#ifndef DOM_Range_HEADER_GUARD_
  //#define DOM_Range_HEADER_GUARD_
  
  //#include <util/XercesDefs.hpp>
  //#include <dom/DOM_Node.hpp>
  //#include <dom/DOMString.hpp>
  //#include <dom/DOM_DocumentFragment.hpp>
  
  //class RangeImpl;
  
  //class RangeImpl;
  
  class /*CDOM_EXPORT*/ DOM_Range {
  public:
  
      enum CompareHow {
          START_TO_START  = 0,
          START_TO_END    = 1,
          END_TO_END      = 2,
          END_TO_START    = 3
      };
  
      //c'tor & d'tor
  //    DOM_Range();
  //    ~DOM_Range();
  
      
  //    DOM_Range & operator = (const DOM_Range &other);
      DOM_Range & assignment(const DOM_Range &other);
  //    DOM_Range & operator = (const DOM_NullPtr *other);
  //    bool operator != (const DOM_Range & other) const;
      bool not_equal_to(const DOM_Range & other) const;
  //    bool operator == (const DOM_Range & other) const;
      bool equal_to(const DOM_Range & other) const;
  //    bool operator != (const DOM_NullPtr * other) const;
  //    bool operator == (const DOM_NullPtr * other) const;
  
      //getter functions
      DOM_Node getStartContainer() const;
      unsigned int getStartOffset() const;
      DOM_Node getEndContainer() const;
      unsigned int getEndOffset() const;
      bool getCollapsed() const;
      const DOM_Node getCommonAncestorContainer() const;
  
      //setter functions
      void setStart(const DOM_Node &parent, unsigned int offset);
      void setEnd(const DOM_Node &parent, unsigned int offset);
  
      void setStartBefore(const DOM_Node &refNode);
      void setStartAfter(const DOM_Node &refNode);
      void setEndBefore(const DOM_Node &refNode);
      void setEndAfter(const DOM_Node &refNode);
     
      //misc functions
      void collapse(bool toStart);
      void selectNode(const DOM_Node &node);
      void selectNodeContents(const DOM_Node &node);
  
      //Functions related to comparing range Boundrary-Points
      short compareBoundaryPoints(CompareHow how, const DOM_Range& range) const;
      void deleteContents();
      DOM_DocumentFragment extractContents();
      DOM_DocumentFragment cloneContents() const;
      void insertNode(DOM_Node& node);
      //Misc functions
      void surroundContents(DOM_Node &node);
      DOM_Range cloneRange() const;
      DOMString toString() const;
      void detach();
  
      
       
  
  //protected:
  
  //    DOM_Range(RangeImpl *);
  //    RangeImpl   *fImpl;
  
  //    friend class DOM_Document;
  };
  
  
  
  
  //#endif
  
  
  
  1.1                  xml-xerces/perl/Xerces_headers/dom/DOM_Text.hpp
  
  Index: DOM_Text.hpp
  ===================================================================
  /*
   * The Apache Software License, Version 1.1
   * 
   * Copyright (c) 1999-2000 The Apache Software Foundation.  All rights
   * reserved.
   * 
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions
   * are met:
   * 
   * 1. Redistributions of source code must retain the above copyright
   *    notice, this list of conditions and the following disclaimer. 
   * 
   * 2. Redistributions in binary form must reproduce the above copyright
   *    notice, this list of conditions and the following disclaimer in
   *    the documentation and/or other materials provided with the
   *    distribution.
   * 
   * 3. The end-user documentation included with the redistribution,
   *    if any, must include the following acknowledgment:  
   *       "This product includes software developed by the
   *        Apache Software Foundation (http://www.apache.org/)."
   *    Alternately, this acknowledgment may appear in the software itself,
   *    if and wherever such third-party acknowledgments normally appear.
   * 
   * 4. The names "Xerces" and "Apache Software Foundation" must
   *    not be used to endorse or promote products derived from this
   *    software without prior written permission. For written 
   *    permission, please contact apache\@apache.org.
   * 
   * 5. Products derived from this software may not be called "Apache",
   *    nor may "Apache" appear in their name, without prior written
   *    permission of the Apache Software Foundation.
   * 
   * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
   * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
   * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
   * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
   * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
   * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
   * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   * SUCH DAMAGE.
   * ====================================================================
   * 
   * This software consists of voluntary contributions made by many
   * individuals on behalf of the Apache Software Foundation, and was
   * originally based on software copyright (c) 1999, International
   * Business Machines, Inc., http://www.ibm.com .  For more information
   * on the Apache Software Foundation, please see
   * <http://www.apache.org/>.
   */
  
  /*
   * $Log: DOM_Text.hpp,v $
   * Revision 1.1  2001/03/07 16:04:02  jasons
   * PR:
   * Submitted by:	jason@openinformatics.com
   *
   * Added new files from Harmon's 1.3 port
   *
   * Revision 1.8  2000/07/28 01:33:31  aruna1
   * DOM Level 2 Range feature introduced
   *
   * Revision 1.7  2000/03/24 01:30:50  chchou
   * Fix bug #8 to support ignorable whitespace text nodes
   *
   * Revision 1.6  2000/03/02 19:53:57  roddey
   * This checkin includes many changes done while waiting for the
   * 1.1.0 code to be finished. I can't list them all here, but a list is
   * available elsewhere.
   *
   * Revision 1.5  2000/02/24 20:11:28  abagchi
   * Swat for removing Log from API docs
   *
   * Revision 1.4  2000/02/06 07:47:31  rahulj
   * Year 2K copyright swat.
   *
   * Revision 1.3  2000/02/04 01:49:27  aruna1
   * TreeWalker and NodeIterator changes
   *
   * Revision 1.2  2000/01/05 01:16:08  andyh
   * DOM Level 2 core, namespace support added.
   *
   * Revision 1.1.1.1  1999/11/09 01:09:04  twl
   * Initial checkin
   *
   * Revision 1.2  1999/11/08 20:44:22  rahul
   * Swat for adding in Product name and CVS comment log variable.
   *
   */
  
  //#ifndef DOM_Text_HEADER_GUARD_
  //#define DOM_Text_HEADER_GUARD_
  
  //#include <util/XercesDefs.hpp>
  //#include <dom/DOM_CharacterData.hpp>
  
  //class TextImpl;
  
  
  /**
   * The <code>Text</code> interface represents the textual content (termed 
   * character  data in XML) of an <code>Element</code> or <code>Attr</code>.  
   * If there is no markup inside an element's content, the text is contained 
   * in a single object implementing the <code>Text</code> interface that is 
   * the only child of the element. If there is markup, it is parsed into a 
   * list of elements and <code>Text</code> nodes that form the list of 
   * children of the element.
   * <p>When a document is first made available via the DOM, there is  only one 
   * <code>Text</code> node for each block of text. Users may create  adjacent 
   * <code>Text</code> nodes that represent the  contents of a given element 
   * without any intervening markup, but should be aware that there is no way 
   * to represent the separations between these nodes in XML, so they 
   * will not (in general) persist between DOM editing sessions. The 
   * <code>normalize()</code> method on <code>Element</code> merges any such 
   * adjacent <code>Text</code> objects into a single node for each block of 
   * text; this is  recommended before employing operations that depend on a 
   * particular document structure, such as navigation with 
   * <code>XPointers.</code> 
   */
  class /*CDOM_EXPORT*/ DOM_Text: public DOM_CharacterData {
  
      public:
      /** @name Constructors and assignment operator */
      //@{
      /**
        * Default constructor for DOM_Text.  The resulting object does not
        * refer to an actual Text node; it will compare == to 0, and is similar
        * to a null object reference variable in Java.  It may subsequently be
        * assigned to refer to an actual comment node.
        *
        */
  //    DOM_Text();
  
      /**
        * Copy constructor.  Creates a new <code>DOM_Text</code> that refers to the
        * same underlying node as the original.  See also DOM_Node::clone(),
        * which will copy the actual Text node, rather than just creating a new
        * reference to the original node.
        *
        * @param other The object to be copied.
        */
  //    DOM_Text(const DOM_Text &other);
  
      /**
        * Assignment operator.
        *
        * @param other The object to be copied.
        */
  //    DOM_Text & operator = (const DOM_Text &other);
      DOM_Text & assignment(const DOM_Text &other);
  
      /**
        * Assignment operator.  This overloaded variant is provided for
        *   the sole purpose of setting a DOM_Node reference variable to
        *   zero.  Nulling out a reference variable in this way will decrement
        *   the reference count on the underlying Node object that the variable
        *   formerly referenced.  This effect is normally obtained when reference
        *   variable goes out of scope, but zeroing them can be useful for
        *   global instances, or for local instances that will remain in scope
        *   for an extended time,  when the storage belonging to the underlying
        *   node needs to be reclaimed.
        *
        * @param val.  Only a value of 0, or null, is allowed.
        */
  //    DOM_Text & operator = (const DOM_NullPtr *val);
  
      //@}
      /** @name Destructor. */
      //@{
  	 /**
  	  * Destructor for DOM_Text. The object being destroyed is the reference
        * object, not the underlying Comment node itself.
  	  *
  	  */
  //    ~DOM_Text();
  
      //@}
      /** @name Functions to modify the Text node. */
      //@{
  
      /**
       * Breaks this node into two nodes at the specified 
       * offset, keeping both in the tree as siblings. 
       *
       * This node then only 
       * contains all the content up to the <code>offset</code> point. And a new 
       * node of the same nodeType, which is inserted as the next sibling of this 
       * node, contains all the content at and after the <code>offset</code> 
       * point. When the <code>offset</code> is equal to the lenght of this node,
       * the new node has no data.
       * @param offset The offset at which to split, starting from 0.
       * @return The new <code>Text</code> node.
       * @exception DOMException
       *   INDEX_SIZE_ERR: Raised if the specified offset is negative or greater 
       *   than the number of characters in <code>data</code>.
       *   <br>NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly.
       */
      DOM_Text splitText(unsigned int offset);
  
      //@}
      /** @name Non-standard (not defined by the DOM specification) functions. */
      //@{
  
      /**
       *
       * <p><b>"Experimental - subject to change"</b></p>
       *
       * Return true if this node contains ignorable whitespaces only.
       * @return True if this node contains ignorable whitespaces only.
       */
      bool isIgnorableWhitespace();
  
      //@}
  
  //protected:
  //    DOM_Text(TextImpl *);
  
  //    friend class DOM_Document;
  //    friend class RangeImpl;
  
  
  
  };
  
  //#endif
  
  
  
  
  
  1.1                  xml-xerces/perl/Xerces_headers/dom/DOM_TreeWalker.hpp
  
  Index: DOM_TreeWalker.hpp
  ===================================================================
  /*
   * The Apache Software License, Version 1.1
   *
   * Copyright (c) 1999-2000 The Apache Software Foundation.  All rights
   * reserved.
   *
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions
   * are met:
   *
   * 1. Redistributions of source code must retain the above copyright
   *    notice, this list of conditions and the following disclaimer.
   *
   * 2. Redistributions in binary form must reproduce the above copyright
   *    notice, this list of conditions and the following disclaimer in
   *    the documentation and/or other materials provided with the
   *    distribution.
   *
   * 3. The end-user documentation included with the redistribution,
   *    if any, must include the following acknowledgment:
   *       "This product includes software developed by the
   *        Apache Software Foundation (http://www.apache.org/)."
   *    Alternately, this acknowledgment may appear in the software itself,
   *    if and wherever such third-party acknowledgments normally appear.
   *
   * 4. The names "Xerces" and "Apache Software Foundation" must
   *    not be used to endorse or promote products derived from this
   *    software without prior written permission. For written
   *    permission, please contact apache\@apache.org.
   *
   * 5. Products derived from this software may not be called "Apache",
   *    nor may "Apache" appear in their name, without prior written
   *    permission of the Apache Software Foundation.
   *
   * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
   * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
   * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
   * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
   * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
   * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
   * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   * SUCH DAMAGE.
   * ====================================================================
   *
   * This software consists of voluntary contributions made by many
   * individuals on behalf of the Apache Software Foundation, and was
   * originally based on software copyright (c) 1999, International
   * Business Machines, Inc., http://www.ibm.com .  For more information
   * on the Apache Software Foundation, please see
   * <http://www.apache.org/>.
   */
  
  /*
   * $Log: DOM_TreeWalker.hpp,v $
   * Revision 1.1  2001/03/07 16:04:02  jasons
   * PR:
   * Submitted by:	jason@openinformatics.com
   *
   * Added new files from Harmon's 1.3 port
   *
   * Revision 1.9  2000/08/08 01:00:36  aruna1
   * detach functionality removed from TreeWalker
   *
   * Revision 1.8  2000/02/24 20:11:29  abagchi
   * Swat for removing Log from API docs
   *
   * Revision 1.7  2000/02/17 17:47:25  andyh
   * Update Doc++ API comments
   * NameSpace update to track W3C
   * Changes were made by Chih Hsiang Chou
   *
   * Revision 1.6  2000/02/15 23:17:37  andyh
   * Update Doc++ API comments
   * NameSpace bugfix and update to track W3C
   * Chih Hsiang Chou
   *
   * Revision 1.5  2000/02/11 03:01:04  abagchi
   * Made protected method public to compile, must be fixed later
   *
   * Revision 1.4  2000/02/11 01:05:11  abagchi
   * Added API docs
   *
   * Revision 1.3  2000/02/06 07:47:31  rahulj
   * Year 2K copyright swat.
   *
   * Revision 1.2  2000/02/04 01:49:27  aruna1
   * TreeWalker and NodeIterator changes
   *
   * Revision 1.1.1.1  1999/11/09 01:09:05  twl
   * Initial checkin
   *
   * Revision 1.3  1999/11/08 20:44:22  rahul
   * Swat for adding in Product name and CVS comment log variable.
   *
   */
  
  //#ifndef DOM_TreeWalker_HEADER_GUARD_
  //#define DOM_TreeWalker_HEADER_GUARD_
  
  //#include "DOM_Node.hpp"
  //#include "DOM_NodeFilter.hpp"
  
  //class TreeWalkerImpl;
  
  
  /**
   * <code>DOM_TreeWalker</code> objects are used to navigate a document tree or
   * subtree using the view of the document defined by its <code>whatToShow</code>
   * flags and any filters that are defined for the <code>DOM_TreeWalker</code>. Any
   * function which performs navigation using a <code>DOM_TreeWalker</code> will
   * automatically support any view defined by a <code>DOM_TreeWalker</code>.
   *
   * Omitting nodes from the logical view of a subtree can result in a structure that is
   * substantially different from the same subtree in the complete, unfiltered document. Nodes
   * that are siblings in the DOM_TreeWalker view may be children of different, widely separated
   * nodes in the original view. For instance, consider a Filter that skips all nodes except for
   * Text nodes and the root node of a document. In the logical view that results, all text
   * nodes will be siblings and appear as direct children of the root node, no matter how
   * deeply nested the structure of the original document.
   *
   * <p><b>"Experimental - subject to change"</b></p>
   *
   */
  class /*CDOM_EXPORT*/ DOM_TreeWalker {
      public:
          /** @name Constructors and assignment operator */
          //@{
          /**
            * Default constructor.
            */
  //        DOM_TreeWalker();
  
          /**
            * Copy constructor.
            *
            * @param other The object to be copied.
            */
  //        DOM_TreeWalker(const DOM_TreeWalker &other);
  
          /**
            * Assignment operator.
            *
            * @param other The object to be copied.
            */
  //        DOM_TreeWalker & operator = (const DOM_TreeWalker &other);
          DOM_TreeWalker & assignment(const DOM_TreeWalker &other);
  
          /**
            * Assignment operator.  This overloaded variant is provided for
            *   the sole purpose of setting a DOM_NodeIterator to null.
            *
            * @param val.  Only a value of 0, or null, is allowed.
            */
  //        DOM_TreeWalker & operator = (const DOM_NullPtr *val);
          //@}
  
          /** @name Destructor. */
          //@{
  	/**
  	  * Destructor for DOM_TreeWalker.
  	  */
  //        ~DOM_TreeWalker();
          //@}
  
          /** @name Equality and Inequality operators. */
          //@{
          /**
           * The equality operator.
           *
           * @param other The object reference with which <code>this</code> object is compared
           * @returns True if both <code>DOM_TreeWalker</code>s refer to the same
           *  actual node, or are both null; return false otherwise.
           */
  //        bool operator == (const DOM_TreeWalker & other)const;
          bool equal_to(const DOM_TreeWalker & other)const;
  
          /**
            *  Compare with a pointer.  Intended only to allow a convenient
            *    comparison with null.
            */
  //        bool operator == (const DOM_NullPtr *other) const;
  
          /**
           * The inequality operator.  See operator ==.
           */
  //        bool operator != (const DOM_TreeWalker & other) const;
          bool not_equal_to(const DOM_TreeWalker & other) const;
  
           /**
            *  Compare with a pointer.  Intended only to allow a convenient
            *    comparison with null.
            *
            */
  //        bool operator != (const DOM_NullPtr * other) const;
          //@}
  
          /** @name Get functions. */
          //@{
          /**
            * Return which node types are presented via the DOM_TreeWalker.
            * These constants are defined in the DOM_NodeFilter interface.
            *
            * <p><b>"Experimental - subject to change"</b></p>
            *
            */
          unsigned long   	getWhatToShow();
  
          /**
            * Return The filter used to screen nodes.
            *
            * <p><b>"Experimental - subject to change"</b></p>
            *
            */
          DOM_NodeFilter*		getFilter();
  
          /**
            * Return the expandEntityReferences flag.
            * The value of this flag determines whether the children of entity reference
            * nodes are visible to the DOM_TreeWalker. If false, they will be skipped over.
            *
            * <p><b>"Experimental - subject to change"</b></p>
            *
            */
  //        bool getExpandEntityReferences();
  
          /**
            * Return the node at which the DOM_TreeWalker is currently positioned.
            *
            * <p><b>"Experimental - subject to change"</b></p>
            *
            */
          DOM_Node		getCurrentNode();
  
          /**
            * Moves to and returns the closest visible ancestor node of the current node.
            * If the search for parentNode attempts to step upward from the DOM_TreeWalker's root
            * node, or if it fails to find a visible ancestor node, this method retains the
            * current position and returns null.
            *
            * <p><b>"Experimental - subject to change"</b></p>
            *
            */
          DOM_Node		parentNode();
  
          /**
            * Moves the <code>DOM_TreeWalker</code> to the first child of the current node,
            * and returns the new node. If the current node has no children, returns
            * <code>null</code>, and retains the current node.
            *
            * <p><b>"Experimental - subject to change"</b></p>
            *
            */
          DOM_Node		firstChild();
  
          /**
            * Moves the <code>DOM_TreeWalker</code> to the last child of the current node, and
            * returns the new node. If the current node has no children, returns
            * <code>null</code>, and retains the current node.
            *
            * <p><b>"Experimental - subject to change"</b></p>
            *
            */
          DOM_Node		lastChild();
  
          /**
            * Moves the <code>DOM_TreeWalker</code> to the previous sibling of the current
            * node, and returns the new node. If the current node has no previous sibling,
            * returns <code>null</code>, and retains the current node.
            *
            * <p><b>"Experimental - subject to change"</b></p>
            *
            */
          DOM_Node		previousSibling();
  
          /**
            * Moves the <code>DOM_TreeWalker</code> to the next sibling of the current node,
            * and returns the new node. If the current node has no next sibling, returns
            * <code>null</code>, and retains the current node.
            *
            * <p><b>"Experimental - subject to change"</b></p>
            *
            */
          DOM_Node		nextSibling();
  
          /**
            * Moves the <code>DOM_TreeWalker</code> to the previous visible node in document
            * order relative to the current node, and returns the new node. If the current
            * node has no previous node, 
            * or if the search for previousNode attempts to step upward from the DOM_TreeWalker's
            * root node, returns <code>null</code>, and retains the current node. 
            *
            * <p><b>"Experimental - subject to change"</b></p>
            *
            */
          DOM_Node		previousNode();
  
          /**
            * Moves the <code>DOM_TreeWalker</code> to the next visible node in document order
            * relative to the current node, and returns the new node. If the current node has
            * no next node, 
            * or if the search for nextNode attempts to step upward from the DOM_TreeWalker's
            * root node, returns <code>null</code>, and retains the current node.
            *
            * <p><b>"Experimental - subject to change"</b></p>
            *
            */
          DOM_Node		nextNode();
          //@}
  
          /** @name Set functions. */
          //@{
          /**
            * Set the node at which the DOM_TreeWalker is currently positioned.
            *
            * <p><b>"Experimental - subject to change"</b></p>
            *
            */
          void			setCurrentNode(DOM_Node currentNode);
          //@}
  
          
  //    protected:
  //        DOM_TreeWalker(TreeWalkerImpl* impl);
  
  //        friend class DOM_Document;
  
  //    private:
  //        TreeWalkerImpl*         fImpl;
  };
  
  //#endif
  
  
  
  1.1                  xml-xerces/perl/Xerces_headers/dom/DOM_XMLDecl.hpp
  
  Index: DOM_XMLDecl.hpp
  ===================================================================
  /*
   * The Apache Software License, Version 1.1
   *
   * Copyright (c) 1999-2000 The Apache Software Foundation.  All rights
   * reserved.
   *
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions
   * are met:
   *
   * 1. Redistributions of source code must retain the above copyright
   *    notice, this list of conditions and the following disclaimer.
   *
   * 2. Redistributions in binary form must reproduce the above copyright
   *    notice, this list of conditions and the following disclaimer in
   *    the documentation and/or other materials provided with the
   *    distribution.
   *
   * 3. The end-user documentation included with the redistribution,
   *    if any, must include the following acknowledgment:
   *       "This product includes software developed by the
   *        Apache Software Foundation (http://www.apache.org/)."
   *    Alternately, this acknowledgment may appear in the software itself,
   *    if and wherever such third-party acknowledgments normally appear.
   *
   * 4. The names "Xerces" and "Apache Software Foundation" must
   *    not be used to endorse or promote products derived from this
   *    software without prior written permission. For written
   *    permission, please contact apache\@apache.org.
   *
   * 5. Products derived from this software may not be called "Apache",
   *    nor may "Apache" appear in their name, without prior written
   *    permission of the Apache Software Foundation.
   *
   * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
   * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
   * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
   * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
   * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
   * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
   * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   * SUCH DAMAGE.
   * ====================================================================
   *
   * This software consists of voluntary contributions made by many
   * individuals on behalf of the Apache Software Foundation, and was
   * originally based on software copyright (c) 1999, International
   * Business Machines, Inc., http://www.ibm.com .  For more information
   * on the Apache Software Foundation, please see
   * <http://www.apache.org/>.
   */
  
  /*
   * $Id: DOM_XMLDecl.hpp,v 1.1 2001/03/07 16:04:02 jasons Exp $
   *
  */
  
  //#ifndef DOM_XMLDecl_HEADER_GUARD_
  //#define DOM_XMLDecl_HEADER_GUARD_
  
  //#include <util/XercesDefs.hpp>
  //#include "dom/DOM_Node.hpp"
  
  //class XMLDeclImpl;
  /**
  * Class to refer to XML Declaration nodes in the DOM.
  *
  */
  class /*CDOM_EXPORT*/ DOM_XMLDecl: public DOM_Node {
  
  public:
      /** @name Constructors and assignment operators */
      //@{
      /**
       * The default constructor for DOM_XMLDecl creates a null
       * DOM_XMLDecl object that refers to a declaration node with 
       * version= 1.0, encoding=utf-8 and standalone=no
       *
       */
  //    DOM_XMLDecl();
  
      /**
        * Copy constructor.  Creates a new <code>DOM_XMLDecl</code> that refers to the
        * same underlying actual xmlDecl node as the original.
        *
        * @param other The object to be copied
        */
  //    DOM_XMLDecl(const DOM_XMLDecl &other);
      /**
        * Assignment operator
        *
        * @param other The object to be copied
        */
  //    DOM_XMLDecl & operator = (const DOM_XMLDecl &other);
      DOM_XMLDecl & assignment(const DOM_XMLDecl &other);
  
      /**
        * Assignment operator.  This overloaded variant is provided for
        *   the sole purpose of setting a DOM_Node reference variable to
        *   zero.  Nulling out a reference variable in this way will decrement
        *   the reference count on the underlying Node object that the variable
        *   formerly referenced.  This effect is normally obtained when reference
        *   variable goes out of scope, but zeroing them can be useful for
        *   global instances, or for local instances that will remain in scope
        *   for an extended time,  when the storage belonging to the underlying
        *   node needs to be reclaimed.
        *
        * @param val.  Only a value of 0, or null, is allowed.
        */
  //    DOM_XMLDecl & operator = (const DOM_NullPtr *val);
  
  
  
  	//@}
    /** @name Destructor */
    //@{
  	
    /**
      * Destructor.  The object being destroyed is the reference
      * object, not the underlying Document itself.
      *
      * <p>The reference counting memory management will
      *  delete the underlying document itself if this
      * DOM_XMLDecl is the last remaining to refer to the Document,
      * and if there are no remaining references to any of the nodes
      * within the document tree.  If other live references do remain,
      * the underlying document itself remains also.
      *
      */
  //    ~DOM_XMLDecl();
  
    //@}
  
      //@{
    
    /**
      * To get the version string of the xmlDeclaration statement
      */
      DOMString getVersion() const;
    
    /**
      * To get the encoding string of the xmlDeclaration statement
      */
      DOMString getEncoding() const;
    
    /**
      * To get the standalone string of the xmlDeclaration statement
      */
      DOMString getStandalone() const;
  
     //@}
      
  //protected:
  //    DOM_XMLDecl( XMLDeclImpl *impl);
  
  //    friend class DOM_Document;
  
  };
  
  
  //#endif
  
  
  
  1.1                  xml-xerces/perl/Xerces_headers/framework/LocalFileInputSource.hpp
  
  Index: LocalFileInputSource.hpp
  ===================================================================
  /*
   * The Apache Software License, Version 1.1
   * 
   * Copyright (c) 1999-2000 The Apache Software Foundation.  All rights
   * reserved.
   * 
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions
   * are met:
   * 
   * 1. Redistributions of source code must retain the above copyright
   *    notice, this list of conditions and the following disclaimer. 
   * 
   * 2. Redistributions in binary form must reproduce the above copyright
   *    notice, this list of conditions and the following disclaimer in
   *    the documentation and/or other materials provided with the
   *    distribution.
   * 
   * 3. The end-user documentation included with the redistribution,
   *    if any, must include the following acknowledgment:  
   *       "This product includes software developed by the
   *        Apache Software Foundation (http://www.apache.org/)."
   *    Alternately, this acknowledgment may appear in the software itself,
   *    if and wherever such third-party acknowledgments normally appear.
   * 
   * 4. The names "Xerces" and "Apache Software Foundation" must
   *    not be used to endorse or promote products derived from this
   *    software without prior written permission. For written 
   *    permission, please contact apache\@apache.org.
   * 
   * 5. Products derived from this software may not be called "Apache",
   *    nor may "Apache" appear in their name, without prior written
   *    permission of the Apache Software Foundation.
   * 
   * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
   * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
   * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
   * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
   * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
   * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
   * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   * SUCH DAMAGE.
   * ====================================================================
   * 
   * This software consists of voluntary contributions made by many
   * individuals on behalf of the Apache Software Foundation, and was
   * originally based on software copyright (c) 1999, International
   * Business Machines, Inc., http://www.ibm.com .  For more information
   * on the Apache Software Foundation, please see
   * <http://www.apache.org/>.
   */
  
  /*
   * $Log: LocalFileInputSource.hpp,v $
   * Revision 1.1  2001/03/07 16:04:04  jasons
   * PR:
   * Submitted by:	jason@openinformatics.com
   *
   * Added new files from Harmon's 1.3 port
   *
   * Revision 1.5  2000/02/24 20:00:22  abagchi
   * Swat for removing Log from API docs
   *
   * Revision 1.4  2000/02/15 23:59:06  roddey
   * More updated documentation of Framework classes.
   *
   * Revision 1.3  2000/02/15 01:21:30  roddey
   * Some initial documentation improvements. More to come...
   *
   * Revision 1.2  2000/02/06 07:47:46  rahulj
   * Year 2K copyright swat.
   *
   * Revision 1.1  2000/01/12 18:58:06  roddey
   * Putting this back with the correct lower case extension.
   *
   * Revision 1.1  2000/01/12 00:13:26  roddey
   * These were moved from internal/ to framework/, which was something that should have
   * happened long ago. They are really framework type of classes.
   *
   * Revision 1.1.1.1  1999/11/09 01:08:10  twl
   * Initial checkin
   *
   * Revision 1.2  1999/11/08 20:44:43  rahul
   * Swat for adding in Product name and CVS comment log variable.
   *
   */
  
  
  //#if !defined(LOCALFILEINPUTSOURCE_HPP)
  //#define LOCALFILEINPUTSOURCE_HPP
  
  //#include <sax/InputSource.hpp>
  
  //class BinInputStream;
  
  /**
   *  This class is a derivative of the standard InputSource class. It provides
   *  for the parser access to data which is referenced via a local file path,
   *  as apposed to remote file or URL. This is the most efficacious mechanism
   *  by which local files can be parsed, since the parse knows that it refers
   *  to a local file and will make no other attempts to interpret the passed
   *  path.
   *
   *  The path provided can either be a fully qualified path or a relative path.
   *  If relative, it will be completed either relative to a passed base path
   *  or relative to the current working directory of the process.
   *
   *  As with all InputSource derivatives. The primary objective of an input
   *  source is to create an input stream via which the parser can spool in
   *  data from the referenced source.
   */
  class /*XMLPARSER_EXPORT*/ LocalFileInputSource : public InputSource
  {
  public :
      // -----------------------------------------------------------------------
      //  Constructors and Destructor
      // -----------------------------------------------------------------------
  
      /** @name Constructors */
      //@{
  
      /**
        * A local file input source requires a path to the file to load. This
        * can be provided either as a fully qualified path, a path relative to
        * the current working directly, or a path relative to a provided base
        * path.
        *
        * The completed path will become the system id of this input source.
        * The constructors don't take any public id for local files, but you
        * still set them via the parent class' setPublicId() method of course.
        *
        * This constructor takes an explicit base path and a possibly relative
        * path. If the relative path is seen to be fully qualified, it is used
        * as is. Otherwise, it is made relative to the passed base path.
        *
        * @param  basePath    The base path from which the passed relative path
        *                     will be based, if the relative part is indeed
        *                     relative.
        *
        * @param  relativePath    The relative part of the path. It can actually
        *                         be fully qualified, in which case it is taken
        *                         as is.
        */
  //    LocalFileInputSource
  //    (
  //        const   XMLCh* const    basePath
  //        , const XMLCh* const    relativePath
  //    );
  
      /**
        * This constructor takes a single parameter which is the fully qualified
        * or relative path. If it is fully qualified, it is taken as is. If it is
        * relative, then it is completed relative to the current working directory
        * (or the equivalent on the local host machine.)
        *
        * The completed path will become the system id of this input source.
        * The constructors don't take any public id for local files, but you
        * still set them via the parent class' setPublicId() method of course.
        *
        * @param  filePath    The relative or fully qualified path.
        */
      LocalFileInputSource
      (
          const   XMLCh* /*const*/    filePath
      );
      //@}
  
      /** @name Destructor */
      //@{
  //    ~LocalFileInputSource();
      //@}
  
  
      // -----------------------------------------------------------------------
      //  Virtual input source interface
      // -----------------------------------------------------------------------
  
      /** @name Virtual methods */
      //{@
  
      /**
      * This method will return a binary input stream derivative that will
      * parse from the local file indicatedby the system id.
      *
      * @return A dynamically allocated binary input stream derivative that
      *         can parse from the file indicated by the system id.
      */
  //    virtual BinInputStream* makeStream() const;
  
      //@}
  };
  
  //#endif
  
  
  
  1.1                  xml-xerces/perl/Xerces_headers/framework/MemBufInputSource.hpp
  
  Index: MemBufInputSource.hpp
  ===================================================================
  /*
   * The Apache Software License, Version 1.1
   * 
   * Copyright (c) 1999-2000 The Apache Software Foundation.  All rights
   * reserved.
   * 
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions
   * are met:
   * 
   * 1. Redistributions of source code must retain the above copyright
   *    notice, this list of conditions and the following disclaimer. 
   * 
   * 2. Redistributions in binary form must reproduce the above copyright
   *    notice, this list of conditions and the following disclaimer in
   *    the documentation and/or other materials provided with the
   *    distribution.
   * 
   * 3. The end-user documentation included with the redistribution,
   *    if any, must include the following acknowledgment:  
   *       "This product includes software developed by the
   *        Apache Software Foundation (http://www.apache.org/)."
   *    Alternately, this acknowledgment may appear in the software itself,
   *    if and wherever such third-party acknowledgments normally appear.
   * 
   * 4. The names "Xerces" and "Apache Software Foundation" must
   *    not be used to endorse or promote products derived from this
   *    software without prior written permission. For written 
   *    permission, please contact apache\@apache.org.
   * 
   * 5. Products derived from this software may not be called "Apache",
   *    nor may "Apache" appear in their name, without prior written
   *    permission of the Apache Software Foundation.
   * 
   * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
   * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
   * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
   * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
   * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
   * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
   * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   * SUCH DAMAGE.
   * ====================================================================
   * 
   * This software consists of voluntary contributions made by many
   * individuals on behalf of the Apache Software Foundation, and was
   * originally based on software copyright (c) 1999, International
   * Business Machines, Inc., http://www.ibm.com .  For more information
   * on the Apache Software Foundation, please see
   * <http://www.apache.org/>.
   */
  
  /*
   * $Log: MemBufInputSource.hpp,v $
   * Revision 1.1  2001/03/07 16:04:04  jasons
   * PR:
   * Submitted by:	jason@openinformatics.com
   *
   * Added new files from Harmon's 1.3 port
   *
   * Revision 1.5  2000/02/24 20:00:22  abagchi
   * Swat for removing Log from API docs
   *
   * Revision 1.4  2000/02/15 23:59:06  roddey
   * More updated documentation of Framework classes.
   *
   * Revision 1.3  2000/02/15 01:21:30  roddey
   * Some initial documentation improvements. More to come...
   *
   * Revision 1.2  2000/02/06 07:47:46  rahulj
   * Year 2K copyright swat.
   *
   * Revision 1.1  2000/01/12 00:13:26  roddey
   * These were moved from internal/ to framework/, which was something that should have
   * happened long ago. They are really framework type of classes.
   *
   * Revision 1.1.1.1  1999/11/09 01:08:10  twl
   * Initial checkin
   *
   * Revision 1.2  1999/11/08 20:44:43  rahul
   * Swat for adding in Product name and CVS comment log variable.
   *
   */
  
  
  //#if !defined(MEMBUFINPUTSOURCE_HPP)
  //#define MEMBUFINPUTSOURCE_HPP
  
  //#include <sax/InputSource.hpp>
  
  //class BinInputStream;
  
  
  /**
   *  This class is a derivative of the standard InputSource class. It provides
   *  for the parser access to data stored in a memory buffer. The type of
   *  buffer and its host specific attributes are of little concern here. The
   *  only real requirement is that the memory be readable by the current
   *  process.
   *
   *  Note that the memory buffer size is expressed in <b>bytes</b>, not in
   *  characters. If you pass it text data, you must account for the bytes
   *  per character when indicating the buffer size.
   *
   *  As with all InputSource derivatives. The primary objective of an input
   *  source is to create an input stream via which the parser can spool in
   *  data from the referenced source. In this case, there are two options
   *  available.
   *
   *  The passed buffer can be adopted or merely referenced. If it is adopted,
   *  then it must be dynamically allocated and will be destroyed when the
   *  input source is destroyed (no reference counting!.) If not adopted, the
   *  caller must insure that it remains valid until the input source object
   *  is destroyed.
   *
   *  The other option indicates whether each stream created for this input
   *  source should get its own copy of the data, or whether it should just
   *  stream the data directly from this object's copy of the data. The same
   *  rules apply here, in that the buffer must either be copied by the
   *  stream or it must remain valid until the stream is destroyed.
   */
  class /*XMLPARSER_EXPORT*/ MemBufInputSource : public InputSource
  {
  public :
      // -----------------------------------------------------------------------
      //  Constructors and Destructor
      // -----------------------------------------------------------------------
  
      /** @name Constructors */
      //@{
  
      /**
        * A memory buffer input source is constructed from a buffer of byte
        * data, and the count of bytes in that buffer. The parser will parse
        * from this memory buffer until it has eaten the indicated number of
        * bytes.
        *
        * Note that the system id provided serves two purposes. Firstly it is
        * going to be displayed in error messages as the source of the error.
        * And secondly, any entities which are refered to from this entity
        * via relative paths/URLs will be relative to this fake system id.
        *
        * @param  srcDocBytes     The actual data buffer to be parsed from.
        * @param  byteCount       The count of bytes (not characters, bytes!)
        *                         in the buffer.
        * @Param  bufId           A fake system id for the buffer.
        * @Param  adoptBuffer     Indicates whether this object should adopt
        *                         the buffer (i.e. make a copy of it) or just
        *                         use it in place.
        */
  //    MemBufInputSource
  //    (
  //        const   XMLByte* const  srcDocBytes
  //        , const unsigned int    byteCount
  //        , const XMLCh* const    bufId
  //        , const bool            adoptBuffer = false
  //    );
  
      /**
        * This constructor is identical to the previous one, except that it takes
        * the fake system id in local code page form and transcodes it internally.
        */
      MemBufInputSource
      (
          const   XMLByte* /*const*/  srcDocBytes
          , const unsigned int    byteCount
          , const char* /*const*/     bufId
          , const bool            adoptBuffer = false
      );
      //@}
  
      /** @name Destructor */
      //@{
      /**
        * If the buffer was adopted, the copy made during construction is deleted
        * at this point.
        */
  //    ~MemBufInputSource();
      //@}
  
  
      // -----------------------------------------------------------------------
      //  Virtual input source interface
      // -----------------------------------------------------------------------
  
      /** @name Virtual methods */
      //{@
  
      /**
        * This method will return a binary input stream derivative that will
        * parse from the memory buffer. If setCopyBufToStream() has been set,
        * then the stream will make its own copy. Otherwise, it will use the
        * buffer as is (in which case it must remain valid until the stream
        * is no longer in use, i.e. the parse completes.)
        *
        * @return A dynamically allocated binary input stream derivative that
        *         can parse from the memory buffer.
        */
  //    BinInputStream* makeStream() const;
  
      //@}
  
  
      // -----------------------------------------------------------------------
      //  Setter methods
      // -----------------------------------------------------------------------
  
      /** @name Setter methods */
  
      //{@
  
      /**
        * By default, for safety's sake, each newly created stream from this
        * input source will make its own copy of the buffer to stream from. This
        * avoids having to deal with aliasing of the buffer for simple work. But,
        * for higher performance applications or for large buffers, this is
        * obviously not optimal.
        *
        * In such cases, you can call this method to turn off that default
        * action. Once turned off, the streams will just get a pointer to the
        * buffer and parse directly from that. In this case, you must insure that
        * the buffer remains valid for as long as any parse events are still
        * using it.
        *
        * @param  newState    The new boolean flag state to set.
        */
      void setCopyBufToStream(const bool newState);
  
      //@}
  
  
  //private :
      // -----------------------------------------------------------------------
      //  Private data members
      //
      //  fAdopted
      //      Indicates whether the buffer is adopted or not. If so, then it
      //      is destroyed when the input source is destroyed.
      //
      //  fByteCount
      //      The size of the source document.
      //
      //  fCopyBufToStream
      //      This defaults to true (the safe option), which causes it to
      //      give a copy of the buffer to any streams it creates. If you set
      //      it to false, it will allow the streams to just reference the
      //      buffer (in which case this input source must stay alive as long
      //      as the buffer is in use by the stream.)
      //
      //  fSrcBytes
      //      The source memory buffer that is being spooled from. Whether it
      //      belongs to the this input source or not is controlled by the
      //      fAdopted flag.
      // -----------------------------------------------------------------------
  //    bool            fAdopted;
  //    unsigned int    fByteCount;
  //    bool            fCopyBufToStream;
  //    const XMLByte*  fSrcBytes;
  };
  
  
  //inline void MemBufInputSource::setCopyBufToStream(const bool newState)
  //{
  //    fCopyBufToStream = newState;
  //}
  
  //#endif
  
  
  
  1.1                  xml-xerces/perl/Xerces_headers/framework/StdInInputSource.hpp
  
  Index: StdInInputSource.hpp
  ===================================================================
  /*
   * The Apache Software License, Version 1.1
   * 
   * Copyright (c) 1999-2000 The Apache Software Foundation.  All rights
   * reserved.
   * 
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions
   * are met:
   * 
   * 1. Redistributions of source code must retain the above copyright
   *    notice, this list of conditions and the following disclaimer. 
   * 
   * 2. Redistributions in binary form must reproduce the above copyright
   *    notice, this list of conditions and the following disclaimer in
   *    the documentation and/or other materials provided with the
   *    distribution.
   * 
   * 3. The end-user documentation included with the redistribution,
   *    if any, must include the following acknowledgment:  
   *       "This product includes software developed by the
   *        Apache Software Foundation (http://www.apache.org/)."
   *    Alternately, this acknowledgment may appear in the software itself,
   *    if and wherever such third-party acknowledgments normally appear.
   * 
   * 4. The names "Xerces" and "Apache Software Foundation" must
   *    not be used to endorse or promote products derived from this
   *    software without prior written permission. For written 
   *    permission, please contact apache\@apache.org.
   * 
   * 5. Products derived from this software may not be called "Apache",
   *    nor may "Apache" appear in their name, without prior written
   *    permission of the Apache Software Foundation.
   * 
   * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
   * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
   * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
   * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
   * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
   * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
   * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   * SUCH DAMAGE.
   * ====================================================================
   * 
   * This software consists of voluntary contributions made by many
   * individuals on behalf of the Apache Software Foundation, and was
   * originally based on software copyright (c) 1999, International
   * Business Machines, Inc., http://www.ibm.com .  For more information
   * on the Apache Software Foundation, please see
   * <http://www.apache.org/>.
   */
  
  /*
   * $Log: StdInInputSource.hpp,v $
   * Revision 1.1  2001/03/07 16:04:04  jasons
   * PR:
   * Submitted by:	jason@openinformatics.com
   *
   * Added new files from Harmon's 1.3 port
   *
   * Revision 1.5  2000/02/24 20:00:22  abagchi
   * Swat for removing Log from API docs
   *
   * Revision 1.4  2000/02/15 23:59:06  roddey
   * More updated documentation of Framework classes.
   *
   * Revision 1.3  2000/02/15 01:21:30  roddey
   * Some initial documentation improvements. More to come...
   *
   * Revision 1.2  2000/02/06 07:47:46  rahulj
   * Year 2K copyright swat.
   *
   * Revision 1.1  2000/01/12 00:13:26  roddey
   * These were moved from internal/ to framework/, which was something that should have
   * happened long ago. They are really framework type of classes.
   *
   * Revision 1.1.1.1  1999/11/09 01:08:17  twl
   * Initial checkin
   *
   * Revision 1.2  1999/11/08 20:44:44  rahul
   * Swat for adding in Product name and CVS comment log variable.
   *
   */
  
  
  //#if !defined(STDININPUTSOURCE_HPP)
  //#define STDININPUTSOURCE_HPP
  
  //#include <sax/InputSource.hpp>
  
  //class BinInputStream;
  
  
  /**
   *  This class is a derivative of the standard InputSource class. It provides
   *  for the parser access to data via the standard input. This input source
   *  is not commonly used, but can be useful when implementing such things
   *  as pipe based tools which exchange XML data.
   *
   *  As with all InputSource derivatives. The primary objective of an input
   *  source is to create an input stream via which the parser can spool in
   *  data from the referenced source.
   */
  class /*XMLPARSER_EXPORT*/ StdInInputSource : public InputSource
  {
  public :
      // -----------------------------------------------------------------------
      //  Constructors and Destructor
      // -----------------------------------------------------------------------
  
      /** @name Constructor */
      //@{
  
      /**
        * Since the standard input is a canned source, the constructor is very
        * simple. It just uses local platform services to open up the standard
        * input source as file, a new handleof which it gives to each new stream
        * it creates.
        */
      StdInInputSource();
      //@}
  
      /** @name Destructor */
      //@{
  //    ~StdInInputSource();
      //@}
  
  
      // -----------------------------------------------------------------------
      //  Virtual input source interface
      // -----------------------------------------------------------------------
  
  
      /** @name Virtual methods */
      //{@
  
      /**
       * This method will return a binary input stream derivative that will
       * parse from the standard input of the local host.
       *
       * @return A dynamically allocated binary input stream derivative that
       *         can parse from the standardinput.
       */
  //    BinInputStream* makeStream() const;
  
      //@}
  };
  
  //inline StdInInputSource::StdInInputSource() :
  
  //    InputSource("stdin")
  //{
  //}
  
  //inline StdInInputSource::~StdInInputSource()
  //{
  //}
  
  //#endif
  
  
  
  1.1                  xml-xerces/perl/Xerces_headers/framework/URLInputSource.hpp
  
  Index: URLInputSource.hpp
  ===================================================================
  /*
   * The Apache Software License, Version 1.1
   * 
   * Copyright (c) 1999-2000 The Apache Software Foundation.  All rights
   * reserved.
   * 
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions
   * are met:
   * 
   * 1. Redistributions of source code must retain the above copyright
   *    notice, this list of conditions and the following disclaimer. 
   * 
   * 2. Redistributions in binary form must reproduce the above copyright
   *    notice, this list of conditions and the following disclaimer in
   *    the documentation and/or other materials provided with the
   *    distribution.
   * 
   * 3. The end-user documentation included with the redistribution,
   *    if any, must include the following acknowledgment:  
   *       "This product includes software developed by the
   *        Apache Software Foundation (http://www.apache.org/)."
   *    Alternately, this acknowledgment may appear in the software itself,
   *    if and wherever such third-party acknowledgments normally appear.
   * 
   * 4. The names "Xerces" and "Apache Software Foundation" must
   *    not be used to endorse or promote products derived from this
   *    software without prior written permission. For written 
   *    permission, please contact apache\@apache.org.
   * 
   * 5. Products derived from this software may not be called "Apache",
   *    nor may "Apache" appear in their name, without prior written
   *    permission of the Apache Software Foundation.
   * 
   * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
   * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
   * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
   * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
   * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
   * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
   * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   * SUCH DAMAGE.
   * ====================================================================
   * 
   * This software consists of voluntary contributions made by many
   * individuals on behalf of the Apache Software Foundation, and was
   * originally based on software copyright (c) 1999, International
   * Business Machines, Inc., http://www.ibm.com .  For more information
   * on the Apache Software Foundation, please see
   * <http://www.apache.org/>.
   */
  
  /*
   * $Log: URLInputSource.hpp,v $
   * Revision 1.1  2001/03/07 16:04:04  jasons
   * PR:
   * Submitted by:	jason@openinformatics.com
   *
   * Added new files from Harmon's 1.3 port
   *
   * Revision 1.7  2000/02/24 20:00:22  abagchi
   * Swat for removing Log from API docs
   *
   * Revision 1.6  2000/02/15 23:59:07  roddey
   * More updated documentation of Framework classes.
   *
   * Revision 1.5  2000/02/15 01:21:30  roddey
   * Some initial documentation improvements. More to come...
   *
   * Revision 1.4  2000/02/06 07:47:46  rahulj
   * Year 2K copyright swat.
   *
   * Revision 1.3  2000/01/26 18:56:02  roddey
   * Needed to include XMLURL.hpp so that it compiles standalone.
   *
   * Revision 1.2  2000/01/15 01:26:16  rahulj
   * Added support for HTTP to the parser using libWWW 5.2.8.
   * Renamed URL.[ch]pp to XMLURL.[ch]pp and like wise for the class name.
   * Only tested under NT 4.0 SP 5.
   * Removed URL.hpp from files where it was not used.
   *
   * Revision 1.1  2000/01/12 00:13:26  roddey
   * These were moved from internal/ to framework/, which was something that should have
   * happened long ago. They are really framework type of classes.
   *
   * Revision 1.1.1.1  1999/11/09 01:08:18  twl
   * Initial checkin
   *
   * Revision 1.2  1999/11/08 20:44:44  rahul
   * Swat for adding in Product name and CVS comment log variable.
   *
   */
  
  
  
  //#if !defined(URLINPUTSOURCE_HPP)
  //#define URLINPUTSOURCE_HPP
  
  //#include <util/XMLURL.hpp>
  //#include <sax/InputSource.hpp>
  
  //class BinInputStream;
  
  /**
   *  This class is a derivative of the standard InputSource class. It provides
   *  for the parser access to data which is referenced via a URL, as apposed to
   *  a local file name. The URL can be provided via an XMLURL class, as a fully
   *  qualified system id, or a base system id and a system id which may be
   *  fully qualified or may be relative to the base.
   *
   *  As with all InputSource derivatives. The primary objective of an input
   *  source is to create an input stream via which the parser can spool in
   *  data from the referenced source.
   *
   *  Note that the parse system does not necessarily support URL based XML
   *  entities out of the box. Support for socket based access is optional and
   *  controlled by the per-platform support.
   */
  class /*XMLPARSER_EXPORT*/ URLInputSource : public InputSource
  {
  public :
      // -----------------------------------------------------------------------
      //  Constructors and Destructor
      // -----------------------------------------------------------------------
  
      /** @name Constructors */
      //@{
  
      /**
        * This constructor accepts an already built URL. It is assumed that
        * it is correct and it will be used as is. In this case, no public id
        * accepted, but it can still be set via the parent class' setPublicId()
        * method.
        *
        * @param  urlId   The URL which holds the system id of the entity
        *                 to parse.
        */
      URLInputSource(const XMLURL& urlId);
  
  
      /**
       *  This constructor takes a base system id URL and a possibly relative
       *  system id. The relative part is parsed and, if it is indeed relative,
       *  it will be made relative to the passed base id. Otherwise, it will be
       *  taken as is.
       *
       *  @param  baseId      The base system id URL which provides the base
       *                      for any relative id part.
       *
       *  @param  systemId    The possibly relative system id URL. If its relative
       *                      its based on baseId, else its taken as is.
       */
  //    URLInputSource
  //    (
  //        const   XMLCh* const    baseId
  //        , const XMLCh* const    systemId
  //    );
  
      /**
       *  This constructor is indentical to the previous one, except that it also
       *  allows you to set a public id if you want to.
       *
       *  @param  baseId      The base system id URL which provides the base
       *                      for any relative id part.
       *
       *  @param  systemId    The possibly relative system id URL. If its relative
       *                      its based on baseId, else its taken as is.
       *
       *  @param  publicId    The optional public id to set. This is just passed
       *                      on to the parent class for storage.
       */
  //    URLInputSource
  //    (
  //        const   XMLCh* const    baseId
  //        , const XMLCh* const    systemId
  //        , const XMLCh* const    publicId
  //    );
  
  
      /**
       *  This constructor is identical to the second constructor above, except that
       *  it accepts the relative system id part as a local code page string and
       *  just transcodes it internally, as a convenience.
       *
       *  @param  baseId      The base system id URL which provides the base
       *                      for any relative id part.
       *
       *  @param  systemId    The possibly relative system id URL. If its relative
       *                      its based on baseId, else its taken as is.
       */
  //    URLInputSource
  //    (
  //        const   XMLCh* const    baseId
  //        , const char* const     systemId
  //    );
  
      /**
       *  This constructor is identical to the third constructor above, except that
       *  it accepts the relative and public ids as local code page strings and just
       *  transcodes them internally, as a convenience.
       *
       *  @param  baseId      The base system id URL which provides the base
       *                      for any relative id part.
       *
       *  @param  systemId    The possibly relative system id URL. If its relative
       *                      its based on baseId, else its taken as is.
       *
       *  @param  publicId    The optional public id to set. This is just passed
       *                      on to the parent class for storage.
       *                      on to the parent class for storage.
       */
  //    URLInputSource
  //    (
  //        const   XMLCh* const    baseId
  //        , const char* const     systemId
  //        , const char* const     publicId
  //    );
  
      //@}
  
      /** @name Destructor */
      //@{
  //    ~URLInputSource();
      //@}
  
  
      // -----------------------------------------------------------------------
      //  Virtual input source interface
      // -----------------------------------------------------------------------
  
      /** @name Virtual methods */
      //{@
  
      /**
       * This method will return a binary input stream derivative that will
       * parse from the source refered to by the URL system id.
       */
  //    BinInputStream* makeStream() const;
  
      //@}
  
  
      // -----------------------------------------------------------------------
      //  Getter methods
      // -----------------------------------------------------------------------
  
      /** @name Getter methods */
      //{@
  
      /**
        * This method will return a const reference to the URL member which
        * contains the system id in pre-parsed URL form. If you just want the
        * string format, call getSystemId() on the parent class.
        *
        * @return A const reference to a URL object that contains the current
        *         system id set for this input source.
        */
      const XMLURL& urlSrc() const;
  
      //@}
  
  
  //private :
      // -----------------------------------------------------------------------
      //  Private data members
      //
      //  fURL
      //      This is the URL created from the passed ids.
      // -----------------------------------------------------------------------
  //    XMLURL fURL;
  };
  
  
  //inline const XMLURL& URLInputSource::urlSrc() const
  //{
  //    return fURL;
  //}
  
  //#endif
  
  
  
  1.1                  xml-xerces/perl/Xerces_headers/parsers/DOMParser.hpp
  
  Index: DOMParser.hpp
  ===================================================================
  /*
   * The Apache Software License, Version 1.1
   *
   * Copyright (c) 1999-2000 The Apache Software Foundation.  All rights
   * reserved.
   *
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions
   * are met:
   *
   * 1. Redistributions of source code must retain the above copyright
   *    notice, this list of conditions and the following disclaimer.
   *
   * 2. Redistributions in binary form must reproduce the above copyright
   *    notice, this list of conditions and the following disclaimer in
   *    the documentation and/or other materials provided with the
   *    distribution.
   *
   * 3. The end-user documentation included with the redistribution,
   *    if any, must include the following acknowledgment:
   *       "This product includes software developed by the
   *        Apache Software Foundation (http://www.apache.org/)."
   *    Alternately, this acknowledgment may appear in the software itself,
   *    if and wherever such third-party acknowledgments normally appear.
   *
   * 4. The names "Xerces" and "Apache Software Foundation" must
   *    not be used to endorse or promote products derived from this
   *    software without prior written permission. For written
   *    permission, please contact apache\@apache.org.
   *
   * 5. Products derived from this software may not be called "Apache",
   *    nor may "Apache" appear in their name, without prior written
   *    permission of the Apache Software Foundation.
   *
   * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
   * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
   * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
   * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
   * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
   * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
   * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   * SUCH DAMAGE.
   * ====================================================================
   *
   * This software consists of voluntary contributions made by many
   * individuals on behalf of the Apache Software Foundation, and was
   * originally based on software copyright (c) 1999, International
   * Business Machines, Inc., http://www.ibm.com .  For more information
   * on the Apache Software Foundation, please see
   * <http://www.apache.org/>.
   */
  
  /*
   * $Id: DOMParser.hpp,v 1.1 2001/03/07 16:04:05 jasons Exp $
   *
   */
  
  //#if !defined(DOMPARSER_HPP)
  //#define DOMPARSER_HPP
  
  
  //#include <dom/DOM_Document.hpp>
  //#include <framework/XMLDocumentHandler.hpp>
  //#include <framework/XMLErrorReporter.hpp>
  //#include <framework/XMLEntityHandler.hpp>
  //#include <util/ValueStackOf.hpp>
  
  //#include <validators/DTD/DocTypeHandler.hpp>
  //#include <dom/DOM_DocumentType.hpp>
  //#include <validators/DTD/DTDElementDecl.hpp>
  //#include <validators/DTD/DTDValidator.hpp>
  
  //class EntityResolver;
  //class ErrorHandler;
  //class XMLPScanToken;
  //class XMLScanner;
  //class XMLValidator;
  
  
  /**
    * This class implements the Document Object Model (DOM) interface.
    * It should be used by applications which choose to parse and
    * process the XML document using the DOM api's. This implementation
    * also allows the applications to install an error and an entitty
    * handler (useful extensions to the DOM specification).
    *
    * <p>It can be used to instantiate a validating or non-validating
    * parser, by setting a member flag.</p>
    */
  class /*PARSERS_EXPORT*/ DOMParser //:
  
  //    public XMLDocumentHandler,
  //    public XMLErrorReporter,
  //    public XMLEntityHandler,
  //    public DocTypeHandler
  {
  public :
      // -----------------------------------------------------------------------
      //  Class types
      // -----------------------------------------------------------------------
      enum ValSchemes
      {
          Val_Never
          , Val_Always
          , Val_Auto
      };
  
  
      // -----------------------------------------------------------------------
      //  Constructors and Detructor
      // -----------------------------------------------------------------------
  
      /** @name Constructors and Destructor */
      //@{
      /** Construct a DOMParser, with an optional validator
        *
        * Constructor with an instance of validator class to use for
        * validation. If you don't provide a validator, a default one will
        * be created for you.
        *
        * @param valToAdopt Pointer to the validator instance to use. The
        *                   parser is responsible for freeing the memory.
        */
      DOMParser(XMLValidator* /*const*/ valToAdopt = 0);
  
      /**
        * Destructor
        */
  //    ~DOMParser();
  
      //@}
  
      /** Reset the parser
        *
        * This method resets the state of the DOM driver and makes
        * it ready for a fresh parse run.
        */
      void reset();
  
  
      // -----------------------------------------------------------------------
      //  Getter methods
      // -----------------------------------------------------------------------
  
      /** @name Getter methods */
      //@{
  
      /** Get the DOM document
        *
        * This method returns the DOM_Document object representing the
        * root of the document tree. This object provides the primary
        * access to the document's data.
        *
        * @return The DOM_Document object which represents the entire
        *         XML document.
        */
      DOM_Document getDocument();
  
      /** Get a pointer to the error handler
        *
        * This method returns the installed error handler. If no handler
        * has been installed, then it will be a zero pointer.
        *
        * @return The pointer to the installed error handler object.
        */
      ErrorHandler* getErrorHandler();
  
      /** Get a const pointer to the error handler
        *
        * This method returns the installed error handler.  If no handler
        * has been installed, then it will be a zero pointer.
        *
        * @return A const pointer to the installed error handler object.
        */
  //    const ErrorHandler* getErrorHandler() const;
  
      /** Get a pointer to the entity resolver
        *
        * This method returns the installed entity resolver.  If no resolver
        * has been installed, then it will be a zero pointer.
        *
        * @return The pointer to the installed entity resolver object.
        */
      EntityResolver* getEntityResolver();
  
      /** Get a const pointer to the entity resolver
        *
        * This method returns the installed entity resolver. If no resolver
        * has been installed, then it will be a zero pointer.
        *
        * @return A const pointer to the installed entity resolver object.
        */
  //    const EntityResolver* getEntityResolver() const;
  
      /** Get a const reference to the underlying scanner
        *
        * This method returns a reference to the underlying scanner object.
        * It allows read only access to data maintained in the scanner.
        *
        * @return A const reference to the underlying scanner object.
        */
      const XMLScanner& getScanner() const;
  
      /** Get a const reference to the validator
        *
        * This method returns a reference to the parser's installed
        * validator.
        *
        * @return A const reference to the installed validator object.
        */
      const XMLValidator& getValidator() const;
  
      /**
        * This method returns an enumerated value that indicates the current
        * validation scheme set on this parser.
        *
        * @return The ValSchemes value current set on this parser.
        */
      ValSchemes getValidationScheme() const;
  
      /** Get the 'do namespaces' flag
        *
        * This method returns the state of the parser's namespace processing
        * flag.
        *
        * @return true, if the parser is currently configured to
        *         understand namespaces, false otherwise.
        *
        * @see #setDoNamespaces
        */
      bool getDoNamespaces() const;
  
      /** Get the 'exit on first error' flag
        *
        * This method returns the state of the parser's
        * exit-on-First-Fatal-Error flag. If this flag is true, then the
        * parse will exit the first time it sees any non-wellformed XML or
        * any validity error. The default state is true.
        *
        * @return true, if the parser is currently configured to
        *         exit on the first fatal error, false otherwise.
        *
        * @see #setExitOnFirstFatalError
        */
      bool getExitOnFirstFatalError() const;
  
      /** Get the 'expand entity references' flag.
        * DEPRECATED Use getCreateEntityReferenceNodes() instead.
        *
        * This method returns the state of the parser's expand entity
        * references flag.
        *
        * @return 'true' if the expand entity reference flag is set on
        *         the parser, 'false' otherwise.
        *
        * @see #setExpandEntityReferences
        */
      bool getExpandEntityReferences() const;
  
      /** Get the 'include entity references' flag
        *
        * This flag  specifies whether the parser is
        * creating entity reference nodes in the DOM tree being produced.
        * When the 'create' flag is
        * true, the DOM tree will contain entity reference nodes. 
        * When the 'create' flag is false, no entity reference nodes
        * are included in the DOM tree.
        * <p>The replacement text
        * of the entity is included in either case, either as a
        * child of the Entity Reference node or in place at the location
        * of the reference.
        *
        * @return  The state of the create entity reference node
        *               flag.
        * @see #setCreateEntityReferenceNodes
        */
      bool  getCreateEntityReferenceNodes()const;
  
     /** Get the 'include ignorable whitespace' flag.
        *
        * This method returns the state of the parser's include ignorable
        * whitespace flag.
        *
        * @return 'true' if the include ignorable whitespace flag is set on
        *         the parser, 'false' otherwise.
        *
        * @see #setIncludeIgnorableWhitespace
        */
      bool getIncludeIgnorableWhitespace() const;
  
      /** Get the 'to create MXLDecl node' flag.
        *
        * This method returns the state of the parser's to create XMLDecl
        * DOM Node flag.
        *
        * @return 'true' if the toCreateXMLDeclTypeNode flag is set on
        *         the parser, 'false' otherwise.
        *
        */
      bool getToCreateXMLDeclTypeNode() const;
  
  
      //@}
  
  
      // -----------------------------------------------------------------------
      //  Setter methods
      // -----------------------------------------------------------------------
  
      /** @name Setter methods */
      //@{
  
      /** Set the error handler
        *
        * This method allows applications to install their own error handler
        * to trap error and warning messages.
        *
        * <i>Any previously set handler is merely dropped, since the parser
        * does not own them.</i>
        *
        * @param handler  A const pointer to the user supplied error
        *                 handler.
        *
        * @see #getErrorHandler
        */
      void setErrorHandler(ErrorHandler* /*const*/ handler);
  
      /** Set the entity resolver
        *
        * This method allows applications to install their own entity
        * resolver. By installing an entity resolver, the applications
        * can trap and potentially redirect references to external
        * entities.
        *
        * <i>Any previously set resolver is merely dropped, since the parser
        * does not own them.</i>
        *
        * @param handler  A const pointer to the user supplied entity
        *                 resolver.
        *
        * @see #getEntityResolver
        */
      void setEntityResolver(EntityResolver* /*const*/ handler);
  
      /** Set the 'do namespaces' flag
        *
        * This method allows users to enable or disable the parser's
        * namespace processing. When set to true, parser starts enforcing
        * all the constraints and rules specified by the NameSpace
        * specification.
        *
        * The parser's default state is: false.
        *
        * This flag is ignored by the underlying scanner if the installed
        * validator indicates that namespace constraints should be
        * enforced.
        *
        * @param newState The value specifying whether NameSpace rules should
        *                 be enforced or not.
        *
        * @see #getDoNamespaces
        */
      void setDoNamespaces(const bool newState);
  
      /** Set the 'exit on first error' flag
        *
        * This method allows users to set the parser's behaviour when it
        * encounters the first fatal error. If set to true, the parser
        * will exit at the first fatal error. If false, then it will
        * report the error and continue processing.
        *
        * The default value is 'true' and the parser exits on the
        * first fatal error.
        *
        * @param newState The value specifying whether the parser should
        *                 continue or exit when it encounters the first
        *                 fatal error.
        *
        * @see #getExitOnFirstFatalError
        */
      void setExitOnFirstFatalError(const bool newState);
  
      /** Set the 'expand entity references' flag
        *
        * DEPRECATED.  USE setCreateEntityReferenceNodes instead.
        * This method allows the user to specify whether the parser should
        * expand all entity reference nodes. When the 'do expansion' flag is
        * true, the DOM tree does not have any entity reference nodes. It is
        * replaced by the sub-tree representing the replacement text of the
        * entity. When the 'do expansion' flag is false, the DOM tree
        * contains an extra entity reference node, whose children is the
        * sub tree of the replacement text.
        *
        * @param expand The new state of the expand entity reference
        *               flag.
        */
      void setExpandEntityReferences(const bool expand);
  
       /** Set the 'include entity references' flag
        *
        * This method allows the user to specify whether the parser should
        * create entity reference nodes in the DOM tree being produced.
        * When the 'create' flag is
        * true, the DOM tree constains entity reference nodes. 
        * When the 'create' flag is false, no entity reference nodes
        * are included in the DOM tree.
        * <p>The replacement text
        * of the entity is included in either case, either as a
        * child of the Entity Reference node or in place at the location
        * of the reference.
        *
        * @param create The new state of the create entity reference nodes
        *               flag.
        */
      void setCreateEntityReferenceNodes(const bool create);
  
     /** Set the 'include ignorable whitespace' flag
        *
        * This method allows the user to specify whether a validating parser
        * should include ignorable whitespaces as text nodes.  It has no effect
        * on non-validating parsers which always include non-markup text.
        * <p>When set to true (also the default), ignorable whitespaces will be
        * added to the DOM tree as text nodes.  The method
        * DOM_Text::isIgnorableWhitespace() will return true for those text
        * nodes only.
        * <p>When set to false, all ignorable whitespace will be discarded and
        * no text node is added to the DOM tree.  Note: applications intended
        * to process the "xml:space" attribute should not set this flag to false.
        *
        * @param include The new state of the include ignorable whitespace
        *                flag.
        *
        * @see #getIncludeIgnorableWhitespace
        */
      void setIncludeIgnorableWhitespace(const bool include);
  
      /**
        * This method allows users to set the validation scheme to be used
        * by this parser. The value is one of the ValSchemes enumerated values
        * defined by this class.
        *
        * <p>The parser's default state is: Val_Auto.</p>
        *
        * @param newState The new validation scheme to use.
        *
        * @see #getValidationScheme
        */
      void setValidationScheme(const ValSchemes newScheme);
  
      /**
        * This method allows users to set the toCreateXMLDeclTypeNode flag
        * by this parser. By setting it to 'true' user can have XMLDecl type
        * nodes attached to the DOM tree.
        *
        * <p>The parser's default state is: false </p>
        *
        * @param newState The new to create XMLDecl type node flag
        *
        */
      void setToCreateXMLDeclTypeNode(const bool create);
  
      //@}
  
  
      // -----------------------------------------------------------------------
      //  Parsing methods
      // -----------------------------------------------------------------------
  
      /** @name Parsing methods */
      //@{
  
      /** Parse via an input source object
        *
        * This method invokes the parsing process on the XML file specified
        * by the InputSource parameter. This API is borrowed from the
        * SAX Parser interface.
        *
        * @param source A const reference to the InputSource object which
        *               points to the XML file to be parsed.
        * @param reuseValidator The flag indicating whether the existing
        *                       validator should be reused or not for this
        *                       parsing run.
        * @see Parser#parse(InputSource)
        */
      void parse(const InputSource& source, const bool reuseValidator = false);
  
      /** Parse via a file path or URL
        *
        * This method invokes the parsing process on the XML file specified by
        * the Unicode string parameter 'systemId'. This method is borrowed
        * from the SAX Parser interface.
        *
        * @param systemId A const XMLCh pointer to the Unicode string which
        *                 contains the path to the XML file to be parsed.
        * @param reuseValidator The flag indicating whether the existing
        *                       validator should be reused or not for this
        *                       parsing run.
        *
        * @see Parser#parse(XMLCh*)
        */
  //    void parse(const XMLCh* const systemId, const bool reuseValidator = false);
  
      /** Parse via a file path or URL (in the local code page)
        *
        * This method invokes the parsing process on the XML file specified by
        * the native char* string parameter 'systemId'.
        *
        * @param systemId A const char pointer to a native string which
        *                 contains the path to the XML file to be parsed.
        * @param reuseValidator The flag indicating whether the existing
        *                       validator should be reused or not for this
        *                       parsing run.
        */
  //    void parse(const char* const systemId, const bool reuseValidator = false);
  
      /** Begin a progressive parse operation
        *
        * This method is used to start a progressive parse on a XML file.
        * To continue parsing, subsequent calls must be to the parseNext
        * method.
        *
        * It scans through the prolog and returns a token to be used on
        * subsequent scanNext() calls. If the return value is true, then the
        * token is legal and ready for further use. If it returns false, then
        * the scan of the prolog failed and the token is not going to work on
        * subsequent scanNext() calls.
        *
        * @param systemId A pointer to a Unicode string represting the path
        *                 to the XML file to be parsed.
        * @param toFill   A token maintaing state information to maintain
        *                 internal consistency between invocation of 'parseNext'
        *                 calls.
        * @param reuseValidator The flag indicating whether the existing
        *                 validator should be reused or not for this parsing
        *                 process.
        * @return 'true', if successful in parsing the prolog. It indicates the
        *         user can go ahead with parsing the rest of the file. It
        *         returns 'false' to indicate that the parser could not parse
        *         the prolog.
        *
        * @see #parseNext
        * @see #parseFirst(char*,...)
        * @see #parseFirst(InputSource&,...)
        */
  //    bool parseFirst
  //    (
  //        const   XMLCh* const    systemId
  //        ,       XMLPScanToken&  toFill
  //        , const bool            reuseValidator = false
  //    );
  
      /** Begin a progressive parse operation
        *
        * This method is used to start a progressive parse on a XML file.
        * To continue parsing, subsequent calls must be to the parseNext
        * method.
        *
        * It scans through the prolog and returns a token to be used on
        * subsequent scanNext() calls. If the return value is true, then the
        * token is legal and ready for further use. If it returns false, then
        * the scan of the prolog failed and the token is not going to work on
        * subsequent scanNext() calls.
        *
        * @param systemId A pointer to a regular native string represting
        *                 the path to the XML file to be parsed.
        * @param toFill   A token maintaing state information to maintain
        *                 internal consistency between invocation of 'parseNext'
        *                 calls.
        * @param reuseValidator The flag indicating whether the existing
        *                 validator should be reused or not for this parsing
        *                 run.
        *
        * @return 'true', if successful in parsing the prolog. It indicates the
        *         user can go ahead with parsing the rest of the file. It
        *         returns 'false' to indicate that the parser could not parse
        *         the prolog.
        *
        * @see #parseNext
        * @see #parseFirst(XMLCh*,...)
        * @see #parseFirst(InputSource&,...)
        */
  //    bool parseFirst
  //    (
  //        const   char* const     systemId
  //        ,       XMLPScanToken&  toFill
  //        , const bool            reuseValidator = false
  //    );
  
      /** Begin a progressive parse operation
        *
        * This method is used to start a progressive parse on a XML file.
        * To continue parsing, subsequent calls must be to the parseNext
        * method.
        *
        * It scans through the prolog and returns a token to be used on
        * subsequent scanNext() calls. If the return value is true, then the
        * token is legal and ready for further use. If it returns false, then
        * the scan of the prolog failed and the token is not going to work on
        * subsequent scanNext() calls.
        *
        * @param source   A const reference to the InputSource object which
        *                 points to the XML file to be parsed.
        * @param toFill   A token maintaing state information to maintain
        *                 internal consistency between invocation of 'parseNext'
        *                 calls.
        * @param reuseValidator The flag indicating whether the existing
        *                 validator should be reused or not for this parsing
        *                 process.
        *
        * @return 'true', if successful in parsing the prolog. It indicates the
        *         user can go ahead with parsing the rest of the file. It
        *         returns 'false' to indicate that the parser could not parse
        *         the prolog.
        *
        * @see #parseNext
        * @see #parseFirst(XMLCh*,...)
        * @see #parseFirst(char*,...)
        */
      bool parseFirst
      (
          const   InputSource&    source
          ,       XMLPScanToken&  toFill
          , const bool            reuseValidator = false
      );
  
      /** Continue a progressive parse operation
        *
        * This method is used to continue with progressive parsing of
        * XML files started by a call to 'parseFirst' method.
        *
        * It parses the XML file and stops as soon as it comes across
        * a XML token (as defined in the XML specification).
        *
        * @param token A token maintaing state information to maintain
        *              internal consistency between invocation of 'parseNext'
        *              calls.
        *
        * @return 'true', if successful in parsing the next XML token.
        *         It indicates the user can go ahead with parsing the rest
        *         of the file. It returns 'false' to indicate that the parser
        *         could not find next token as per the XML specification
        *         production rule.
        *
        * @see #parseFirst(XMLCh*,...)
        * @see #parseFirst(char*,...)
        * @see #parseFirst(InputSource&,...)
        */
      bool parseNext(XMLPScanToken& token);
  
      /** Reset the parser after a progressive parse
        *
        * If a progressive parse loop exits before the end of the document
        * is reached, the parser has no way of knowing this. So it will leave
        * open any files or sockets or memory buffers that were in use at
        * the time that the parse loop exited.
        *
        * The next parse operation will cause these open files and such to
        * be closed, but the next parse operation might occur at some unknown
        * future point. To avoid this problem, you should reset the parser if
        * you exit the loop early.
        *
        * If you exited because of an error, then this cleanup will be done
        * for you. Its only when you exit the file prematurely of your own
        * accord, because you've found what you wanted in the file most
        * likely.
        *
        * @param token A token maintaing state information to maintain
        *              internal consistency between invocation of 'parseNext'
        *              calls.
        *
        * @see #parseFirst(XMLCh*,...)
        * @see #parseFirst(char*,...)
        * @see #parseFirst(InputSource&,...)
        */
      void parseReset(XMLPScanToken& token);
  
      //@}
  
  
  
      // -----------------------------------------------------------------------
      //  Implementation of the XMLErrorReporter interface.
      // -----------------------------------------------------------------------
  
      /** @name Implementation of the XMLErrorReporter interface. */
      //@{
  
      /** Handle errors reported from the parser
        *
        * This method is used to report back errors found while parsing the
        * XML file. This method is also borrowed from the SAX specification.
        * It calls the corresponding user installed Error Handler method:
        * 'fatal', 'error', 'warning' depending on the severity of the error.
        * This classification is defined by the XML specification.
        *
        * @param errCode An integer code for the error.
        * @param msgDomain A const pointer to an Unicode string representing
        *                  the message domain to use.
        * @param errType An enumeration classifying the severity of the error.
        * @param errorText A const pointer to an Unicode string representing
        *                  the text of the error message.
        * @param systemId  A const pointer to an Unicode string representing
        *                  the system id of the XML file where this error
        *                  was discovered.
        * @param publicId  A const pointer to an Unicode string representing
        *                  the public id of the XML file where this error
        *                  was discovered.
        * @param lineNum   The line number where the error occurred.
        * @param colNum    The column number where the error occurred.
        * @see ErrorHandler
        */
      virtual void error
      (
          const   unsigned int                errCode
          , const XMLCh* /*const*/                msgDomain
          , const XMLErrorReporter::ErrTypes  errType
          , const XMLCh* /*const*/                errorText
          , const XMLCh* /*const*/                systemId
          , const XMLCh* /*const*/                publicId
          , const unsigned int                lineNum
          , const unsigned int                colNum
      );
  
      /** Reset any error data before a new parse
       *
        * This method allows the user installed Error Handler callback to
        * 'reset' itself.
        *
        * <b><font color="#FF0000">This method is a no-op for this DOM
        * implementation.</font></b>
        */
      virtual void resetErrors();
      //@}
  
  
      // -----------------------------------------------------------------------
      //  Implementation of the XMLEntityHandler interface.
      // -----------------------------------------------------------------------
  
      /** @name Implementation of the XMLEntityHandler interface. */
      //@{
  
      /** Handle an end of input source event
        *
        * This method is used to indicate the end of parsing of an external
        * entity file.
        *
        * <b><font color="#FF0000">This method is a no-op for this DOM
        * implementation.</font></b>
        *
        * @param inputSource A const reference to the InputSource object
        *                    which points to the XML file being parsed.
        * @see InputSource
        */
      virtual void endInputSource(const InputSource& inputSource);
  
      /** Expand a system id
        *
        * This method allows an installed XMLEntityHandler to further
        * process any system id's of enternal entities encountered in
        * the XML file being parsed, such as redirection etc.
        *
        * <b><font color="#FF0000">This method always returns 'false'
        * for this DOM implementation.</font></b>
        *
        * @param systemId  A const pointer to an Unicode string representing
        *                  the system id scanned by the parser.
        * @param toFill    A pointer to a buffer in which the application
        *                  processed system id is stored.
        * @return 'true', if any processing is done, 'false' otherwise.
        */
      virtual bool expandSystemId
      (
          const   XMLCh* /*const*/    systemId
          ,       XMLBuffer&      toFill
      );
  
      /** Reset any entity handler information
        *
        * This method allows the installed XMLEntityHandler to reset
        * itself.
        *
        * <b><font color="#FF0000">This method is a no-op for this DOM
        * implementation.</font></b>
        */
      virtual void resetEntities();
  
      /** Resolve a public/system id
        *
        * This method allows a user installed entity handler to further
        * process any pointers to external entities. The applications can
        * implement 'redirection' via this callback. This method is also
        * borrowed from the SAX specification.
        *
        * @param publicId A const pointer to a Unicode string representing the
        *                 public id of the entity just parsed.
        * @param systemId A const pointer to a Unicode string representing the
        *                 system id of the entity just parsed.
        * @return The value returned by the user installed resolveEntity
        *         method or NULL otherwise to indicate no processing was done.
        * @see EntityResolver
        */
      virtual InputSource* resolveEntity
      (
          const   XMLCh* /*const*/    publicId
          , const XMLCh* /*const*/    systemId
      );
  
      /** Handle a 'start input source' event
        *
        * This method is used to indicate the start of parsing an external
        * entity file.
        *
        * <b><font color="#FF0000">This method is a no-op for this DOM parse
        * implementation.</font></b>
        *
        * @param inputSource A const reference to the InputSource object
        *                    which points to the external entity
        *                    being parsed.
        */
      virtual void startInputSource(const InputSource& inputSource);
  
      //@}
  
  
  
      // -----------------------------------------------------------------------
      //  Implementation of the XMLDocumentHandler interface.
      // -----------------------------------------------------------------------
  
      /** @name Implementation of the XMLDocumentHandler interface. */
      //@{
  
      /** Handle document character events
        *
        * This method is used to report all the characters scanned by the
        * parser. This DOM implementation stores this data in the appropriate
        * DOM node, creating one if necessary.
        *
        * @param chars   A const pointer to a Unicode string representing the
        *                character data.
        * @param length  The length of the Unicode string returned in 'chars'.
        * @param cdataSection  A flag indicating if the characters represent
        *                      content from the CDATA section.
        */
      virtual void docCharacters
      (
          const   XMLCh* /*const*/    chars
          , const unsigned int    length
          , const bool            cdataSection
      );
  
      /** Handle a document comment event
        *
        * This method is used to report any comments scanned by the parser.
        * A new comment node is created which stores this data.
        *
        * @param comment A const pointer to a null terminated Unicode
        *                string representing the comment text.
        */
      virtual void docComment
      (
          const   XMLCh* /*const*/    comment
      );
  
      /** Handle a document PI event
        *
        * This method is used to report any PI scanned by the parser. A new
        * PI node is created and appended as a child of the current node in
        * the tree.
        *
        * @param target A const pointer to a Unicode string representing the
        *               target of the PI declaration.
        * @param data   A const pointer to a Unicode string representing the
        *               data of the PI declaration. See the PI production rule
        *               in the XML specification for details.
        */
      virtual void docPI
      (
          const   XMLCh* /*const*/    target
          , const XMLCh* /*const*/    data
      );
  
      /** Handle the end of document event
        *
        * This method is used to indicate the end of the current document.
        */
      virtual void endDocument();
  
      /** Handle and end of element event
        *
        * This method is used to indicate the end tag of an element. The
        * DOMParse pops the current element off the top of the element
        * stack, and make it the new current element.
        *
        * @param elemDecl A const reference to the object containing element
        *                 declaration information.
        * @param urlId    An id referring to the namespace prefix, if
        *                 namespaces setting is switched on.
        * @param isRoot   A flag indicating whether this element was the
        *                 root element.
        */
      virtual void endElement
      (
          const   XMLElementDecl& elemDecl
          , const unsigned int    urlId
          , const bool            isRoot
      );
  
      /** Handle and end of entity reference event
        *
        * This method is used to indicate that an end of an entity reference
        * was just scanned.
        *
        * @param entDecl A const reference to the object containing the
        *                entity declaration information.
        */
      virtual void endEntityReference
      (
          const   XMLEntityDecl&  entDecl
      );
  
      /** Handle an ignorable whitespace vent
        *
        * This method is used to report all the whitespace characters, which
        * are determined to be 'ignorable'. This distinction between characters
        * is only made, if validation is enabled.
        *
        * Any whitespace before content is ignored. If the current node is
        * already of type DOM_Node::TEXT_NODE, then these whitespaces are
        * appended, otherwise a new Text node is created which stores this
        * data. Essentially all contiguous ignorable characters are collected
        * in one node.
        *
        * @param chars   A const pointer to a Unicode string representing the
        *                ignorable whitespace character data.
        * @param length  The length of the Unicode string 'chars'.
        * @param cdataSection  A flag indicating if the characters represent
        *                      content from the CDATA section.
        */
      virtual void ignorableWhitespace
      (
          const   XMLCh* /*const*/    chars
          , const unsigned int    length
          , const bool            cdataSection
      );
  
      /** Handle a document reset event
        *
        * This method allows the user installed Document Handler to 'reset'
        * itself, freeing all the memory resources. The scanner calls this
        * method before starting a new parse event.
        */
      virtual void resetDocument();
  
      /** Handle a start document event
        *
        * This method is used to report the start of the parsing process.
        */
      virtual void startDocument();
  
      /** Handle a start element event
        *
        * This method is used to report the start of an element. It is
        * called at the end of the element, by which time all attributes
        * specified are also parsed. A new DOM Element node is created
        * along with as many attribute nodes as required. This new element
        * is added appended as a child of the current node in the tree, and
        * then replaces it as the current node (if the isEmpty flag is false.)
        *
        * @param elemDecl A const reference to the object containing element
        *                 declaration information.
        * @param urlId    An id referring to the namespace prefix, if
        *                 namespaces setting is switched on.
        * @param elemPrefix A const pointer to a Unicode string containing
        *                 the namespace prefix for this element. Applicable
        *                 only when namespace processing is enabled.
        * @param attrList A const reference to the object containing the
        *                 list of attributes just scanned for this element.
        * @param attrCount A count of number of attributes in the list
        *                 specified by the parameter 'attrList'.
        * @param isEmpty  A flag indicating whether this is an empty element
        *                 or not. If empty, then no endElement() call will
        *                 be made.
        * @param isRoot   A flag indicating whether this element was the
        *                 root element.
        * @see DocumentHandler#startElement
        */
      virtual void startElement
      (
          const   XMLElementDecl&         elemDecl
          , const unsigned int            urlId
          , const XMLCh* /*const*/            elemPrefix
          , const RefVectorOf<XMLAttr>&   attrList
          , const unsigned int            attrCount
          , const bool                    isEmpty
          , const bool                    isRoot
      );
  
      /** Handle a start entity reference event
        *
        * This method is used to indicate the start of an entity reference.
        * If the expand entity reference flag is true, then a new
        * DOM Entity reference node is created.
        *
        * @param entDecl A const reference to the object containing the
        *                entity declaration information.
        */
      virtual void startEntityReference
      (
          const   XMLEntityDecl&  entDecl
      );
  
      /** Handle an XMLDecl event
        *
        * This method is used to report the XML decl scanned by the parser.
        * Refer to the XML specification to see the meaning of parameters.
        *
        * <b><font color="#FF0000">This method is a no-op for this DOM
        * implementation.</font></b>
        *
        * @param versionStr A const pointer to a Unicode string representing
        *                   version string value.
        * @param encodingStr A const pointer to a Unicode string representing
        *                    the encoding string value.
        * @param standaloneStr A const pointer to a Unicode string
        *                      representing the standalone string value.
        * @param actualEncodingStr A const pointer to a Unicode string
        *                          representing the actual encoding string
        *                          value.
        */
      virtual void XMLDecl
      (
          const   XMLCh* /*const*/    versionStr
          , const XMLCh* /*const*/    encodingStr
          , const XMLCh* /*const*/    standaloneStr
          , const XMLCh* /*const*/    actualEncStr
      );
      //@}
  
  
      /** @name Deprecated Methods */
      //@{
      /**
        * This method returns the state of the parser's validation
        * handling flag which controls whether validation checks
        * are enforced or not.
        *
        * @return true, if the parser is currently configured to
        *         do validation, false otherwise.
        *
        * @see #setDoValidation
        */
      bool getDoValidation() const;
  
      /**
        * This method allows users to enable or disable the parser's validation
        * checks.
        *
        * <p>By default, the parser does not to any validation. The default
        * value is false.</p>
        *
        * @param newState The value specifying whether the parser should
        *                 do validity checks or not against the DTD in the
        *                 input XML document.
        *
        * @see #getDoValidation
        */
      void setDoValidation(const bool newState);
      //doctypehandler interfaces
  	virtual void attDef
      (
          const   DTDElementDecl&     elemDecl
          , const DTDAttDef&          attDef
          , const bool                ignoring
      );
  
      virtual void doctypeComment
      (
          const   XMLCh* /*const*/    comment
      );
  
      virtual void doctypeDecl
      (
          const   DTDElementDecl& elemDecl
          , const XMLCh* /*const*/    publicId
          , const XMLCh* /*const*/    systemId
          , const bool            hasIntSubset
      );
  
      virtual void doctypePI
      (
          const   XMLCh* /*const*/    target
          , const XMLCh* /*const*/    data
      );
  
      virtual void doctypeWhitespace
      (
          const   XMLCh* /*const*/    chars
          , const unsigned int    length
      );
  
      virtual void elementDecl
      (
          const   DTDElementDecl& decl
          , const bool            isIgnored
      );
  
      virtual void endAttList
      (
          const   DTDElementDecl& elemDecl
      );
  
      virtual void endIntSubset();
  
      virtual void endExtSubset();
  
      virtual void entityDecl
      (
          const   DTDEntityDecl&  entityDecl
          , const bool            isPEDecl
          , const bool            isIgnored
      );
  
      virtual void resetDocType();
  
      virtual void notationDecl
      (
          const   XMLNotationDecl&    notDecl
          , const bool                isIgnored
      );
  
      virtual void startAttList
      (
          const   DTDElementDecl& elemDecl
      );
  
      virtual void startIntSubset();
  
      virtual void startExtSubset();
  
      virtual void TextDecl
      (
          const   XMLCh* /*const*/    versionStr
          , const XMLCh* /*const*/    encodingStr
      );
  
  
      //@}
  
  
  //protected :
      // -----------------------------------------------------------------------
      //  Protected getter methods
      // -----------------------------------------------------------------------
  
      /** @name Protected getter methods */
      //@{
      /** Get the current DOM node
        *
        * This provides derived classes with access to the current node, i.e.
        * the node to which new nodes are being added.
        */
  //    DOM_Node getCurrentNode();
  
      //@}
  
  
      // -----------------------------------------------------------------------
      //  Protected setter methods
      // -----------------------------------------------------------------------
  
      /** @name Protected setter methods */
      //@{
  
      /** Set the current DOM node
        *
        * This method sets the current node maintained inside the parser to
        * the one specified.
        *
        * @param toSet The DOM node which will be the current node.
        */
  //    void setCurrentNode(DOM_Node toSet);
  
      /** Set the document node
        *
        * This method sets the DOM Document node to the one specified.
        *
        * @param toSet The new DOM Document node for this XML document.
        */
  //    void setDocument(DOM_Document toSet);
      //@}
  
  
  //private :
      //local private function to populate the doctype data
  //	virtual void populateDocumentType();
  
      // -----------------------------------------------------------------------
      //  Private data members
      //
      //  fCurrentNode
      //  fCurrentParent
      //      Used to track the current node during nested element events. Since
      //      the tree must be built from a set of disjoint callbacks, we need
      //      these to keep up with where we currently are.
      //
      //  fDocument
      //      The root document object, filled with the document contents.
      //
      //  fEntityResolver
      //      The installed SAX entity resolver, if any. Null if none.
      //
      //  fErrorHandler
      //      The installed SAX error handler, if any. Null if none.
      //
      //  fCreateEntityReferenceNode
      //      Indicates whether entity reference nodes should be created.
      //
      //  fIncludeIgnorableWhitespace
      //      Indicates whether ignorable whiltespace should be added to
      //      the DOM tree for validating parsers.
      //
      //  fNodeStack
      //      Used to track previous parent nodes during nested element events.
      //
      //  fParseInProgress
      //      Used to prevent multiple entrance to the parser while its doing
      //      a parse.
      //
      //  fScanner
      //      The scanner used for this parser. This is created during the
      //      constructor.
      //
      //  fValidator
      //      The validator that is installed. If none is provided, we will
      //      create and install a DTD validator. We install this on the
      //      scanner we create, which it will use to do validation. We set
      //      ourself on it as the error reporter for validity errors.
      //
      //  fWithinElement
      //      A flag to indicate that the parser is within at least one level
      //      of element processing.
      //
      //  fDocumentType
      //      Used to store and update the documentType variable information
      //      in fDocument
      //
      //  fOldDocTypeHandler
      //      Used to chain the old documentType node if the user has set it
      //      from outside
      //
      //  fToCreateXMLDecTypeNode
      //      A flag to create a DOM_XMLDecl node in the ODM tree if it exists
      //      This is an extension to xerces implementation
      //
      // -----------------------------------------------------------------------
  //    DOM_Node                fCurrentParent;
  //    DOM_Node                fCurrentNode;
  //    DOM_Document            fDocument;
  //    EntityResolver*         fEntityResolver;
  //    ErrorHandler*           fErrorHandler;
  //    bool                    fCreateEntityReferenceNodes;
  //    bool                    fIncludeIgnorableWhitespace;
  //    ValueStackOf<DOM_Node>* fNodeStack;
  //    bool                    fParseInProgress;
  //    XMLScanner*             fScanner;
  //    XMLValidator*           fValidator;
  //    bool                    fWithinElement;
  //    DocumentTypeImpl*		fDocumentType;
  //	DocTypeHandler*			fOldDocTypeHandler;
  //    bool                    fToCreateXMLDeclTypeNode;
  };
  
  
  
  // ---------------------------------------------------------------------------
  //  DOMParser: Handlers for the XMLEntityHandler interface
  // ---------------------------------------------------------------------------
  //inline void DOMParser::endInputSource(const InputSource&)
  //{
      // The DOM entity resolver doesn't handle this
  //}
  
  //inline bool DOMParser::expandSystemId(const XMLCh* const, XMLBuffer&)
  //{
      // The DOM entity resolver doesn't handle this
  //    return false;
  //}
  
  //inline void DOMParser::resetEntities()
  //{
      // Nothing to do on this one
  //}
  
  //inline void DOMParser::startInputSource(const InputSource&)
  //{
      // The DOM entity resolver doesn't handle this
  //}
  
  
  // ---------------------------------------------------------------------------
  //  DOMParser: Handlers for the XMLDocumentHandler interface
  // ---------------------------------------------------------------------------
  //inline void DOMParser::endDocument()
  //{
      // Not used in DOM at this time
  //}
  
  
  
  // ---------------------------------------------------------------------------
  //  DOMParser: Getter methods
  // ---------------------------------------------------------------------------
  //inline DOM_Document DOMParser::getDocument()
  //{
  //    return fDocument;
  //}
  
  //inline ErrorHandler* DOMParser::getErrorHandler()
  //{
  //    return fErrorHandler;
  //}
  
  //inline const ErrorHandler* DOMParser::getErrorHandler() const
  //{
  //    return fErrorHandler;
  //}
  
  //inline EntityResolver* DOMParser::getEntityResolver()
  //{
  //    return fEntityResolver;
  //}
  
  //inline const EntityResolver* DOMParser::getEntityResolver() const
  //{
  //    return fEntityResolver;
  //}
  
  //inline bool DOMParser::getExpandEntityReferences() const
  //{
  //    return fCreateEntityReferenceNodes;
  //}
  //inline bool DOMParser::getCreateEntityReferenceNodes() const
  //{
  //    return fCreateEntityReferenceNodes;
  //}
  
  //inline bool DOMParser::getIncludeIgnorableWhitespace() const
  //{
  //    return fIncludeIgnorableWhitespace;
  //}
  
  //inline const XMLScanner& DOMParser::getScanner() const
  //{
  //    return *fScanner;
  //}
  
  //inline bool DOMParser::getToCreateXMLDeclTypeNode() const
  //{
  //    return fToCreateXMLDeclTypeNode;
  //}
  
  
  // ---------------------------------------------------------------------------
  //  DOMParser: Setter methods
  // ---------------------------------------------------------------------------
  //inline void DOMParser::setExpandEntityReferences(const bool expand)
  //{
  //    fCreateEntityReferenceNodes = expand;
  //}
  
  //inline void DOMParser::setCreateEntityReferenceNodes(const bool create)
  //{
  //    fCreateEntityReferenceNodes = create;
  //}
  
  //inline void DOMParser::setIncludeIgnorableWhitespace(const bool include)
  //{
  //    fIncludeIgnorableWhitespace = include;
  //}
  
  //inline void DOMParser::setToCreateXMLDeclTypeNode(const bool create)
  //{
  //    fToCreateXMLDeclTypeNode = create;
  //}
  
  
  // ---------------------------------------------------------------------------
  //  DOMParser: Protected getter methods
  // ---------------------------------------------------------------------------
  //inline DOM_Node DOMParser::getCurrentNode()
  //{
  //    return fCurrentNode;
  //}
  
  
  // ---------------------------------------------------------------------------
  //  DOMParser: Protected setter methods
  // ---------------------------------------------------------------------------
  //inline void DOMParser::setCurrentNode(DOM_Node toSet)
  //{
  //    fCurrentNode = toSet;
  //}
  
  //inline void DOMParser::setDocument(DOM_Document toSet)
  //{
  //    fDocument = toSet;
  //}
  
  //#endif
  
  
  
  1.1                  xml-xerces/perl/Xerces_headers/sax/ErrorHandler.hpp
  
  Index: ErrorHandler.hpp
  ===================================================================
  /*
   * The Apache Software License, Version 1.1
   * 
   * Copyright (c) 1999-2000 The Apache Software Foundation.  All rights
   * reserved.
   * 
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions
   * are met:
   * 
   * 1. Redistributions of source code must retain the above copyright
   *    notice, this list of conditions and the following disclaimer. 
   * 
   * 2. Redistributions in binary form must reproduce the above copyright
   *    notice, this list of conditions and the following disclaimer in
   *    the documentation and/or other materials provided with the
   *    distribution.
   * 
   * 3. The end-user documentation included with the redistribution,
   *    if any, must include the following acknowledgment:  
   *       "This product includes software developed by the
   *        Apache Software Foundation (http://www.apache.org/)."
   *    Alternately, this acknowledgment may appear in the software itself,
   *    if and wherever such third-party acknowledgments normally appear.
   * 
   * 4. The names "Xerces" and "Apache Software Foundation" must
   *    not be used to endorse or promote products derived from this
   *    software without prior written permission. For written 
   *    permission, please contact apache\@apache.org.
   * 
   * 5. Products derived from this software may not be called "Apache",
   *    nor may "Apache" appear in their name, without prior written
   *    permission of the Apache Software Foundation.
   * 
   * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
   * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
   * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
   * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
   * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
   * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
   * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   * SUCH DAMAGE.
   * ====================================================================
   * 
   * This software consists of voluntary contributions made by many
   * individuals on behalf of the Apache Software Foundation, and was
   * originally based on software copyright (c) 1999, International
   * Business Machines, Inc., http://www.ibm.com .  For more information
   * on the Apache Software Foundation, please see
   * <http://www.apache.org/>.
   */
  
  /*
   * $Log: ErrorHandler.hpp,v $
   * Revision 1.1  2001/03/07 16:04:05  jasons
   * PR:
   * Submitted by:	jason@openinformatics.com
   *
   * Added new files from Harmon's 1.3 port
   *
   * Revision 1.6  2000/04/27 19:33:15  rahulj
   * Included <util/XercesDefs.hpp> as suggested by David N Bertoni.
   *
   * Revision 1.5  2000/02/24 20:12:55  abagchi
   * Swat for removing Log from API docs
   *
   * Revision 1.4  2000/02/12 03:31:55  rahulj
   * Removed duplicate CVS Log entries.
   *
   * Revision 1.3  2000/02/12 01:27:19  aruna1
   * Documentation updated
   *
   * Revision 1.2  2000/02/06 07:47:57  rahulj
   * Year 2K copyright swat.
   *
   * Revision 1.1.1.1  1999/11/09 01:07:45  twl
   * Initial checkin
   *
   * Revision 1.2  1999/11/08 20:45:00  rahul
   * Swat for adding in Product name and CVS comment log variable.
   *
   */
  
  
  //#ifndef ERRORHANDLER_HPP
  //#define ERRORHANDLER_HPP
  
  //#include <util/XercesDefs.hpp>
  
  //class SAXParseException;
  
  
  /**
    * Basic interface for SAX error handlers.
    *
    * <p>If a SAX application needs to implement customized error
    * handling, it must implement this interface and then register an
    * instance with the SAX parser using the parser's setErrorHandler
    * method.  The parser will then report all errors and warnings
    * through this interface.</p>
    *
    * <p> The parser shall use this interface instead of throwing an
    * exception: it is up to the application whether to throw an
    * exception for different types of errors and warnings.  Note,
    * however, that there is no requirement that the parser continue to
    * provide useful information after a call to fatalError (in other
    * words, a SAX driver class could catch an exception and report a
    * fatalError).</p>
    *
    * <p>The HandlerBase class provides a default implementation of this
    * interface, ignoring warnings and recoverable errors and throwing a
    * SAXParseException for fatal errors.  An application may extend
    * that class rather than implementing the complete interface
    * itself.</p>
    *
    * @see Parser#setErrorHandler
    * @see SAXParseException#SAXParseException 
    * @see HandlerBase#HandlerBase
    */
  
  class /*SAX_EXPORT*/ ErrorHandler
  {
  public:
      /** @name Constructors and Destructor */
      //@{
      /** Default constructor */
  //    ErrorHandler()
  //    {
  //    }
  
      /** Desctructor */
  //    virtual ~ErrorHandler()
  //    {
  //    }
      //@}
  
      /** @name The error handler interface */
      //@{
     /**
      * Receive notification of a warning.
      *
      * <p>SAX parsers will use this method to report conditions that
      * are not errors or fatal errors as defined by the XML 1.0
      * recommendation.  The default behaviour is to take no action.</p>
      *
      * <p>The SAX parser must continue to provide normal parsing events
      * after invoking this method: it should still be possible for the
      * application to process the document through to the end.</p>
      *
      * @param exception The warning information encapsulated in a
      *                  SAX parse exception.
      * @exception SAXException Any SAX exception, possibly
      *            wrapping another exception.
      * @see SAXParseException#SAXParseException 
      */
  //    virtual void warning(const SAXParseException& exception) = 0;
  
    /**
      * Receive notification of a recoverable error.
      *
      * <p>This corresponds to the definition of "error" in section 1.2
      * of the W3C XML 1.0 Recommendation.  For example, a validating
      * parser would use this callback to report the violation of a
      * validity constraint.  The default behaviour is to take no
      * action.</p>
      *
      * <p>The SAX parser must continue to provide normal parsing events
      * after invoking this method: it should still be possible for the
      * application to process the document through to the end.  If the
      * application cannot do so, then the parser should report a fatal
      * error even if the XML 1.0 recommendation does not require it to
      * do so.</p>
      *
      * @param exception The error information encapsulated in a
      *                  SAX parse exception.
      * @exception SAXException Any SAX exception, possibly
      *            wrapping another exception.
      * @see SAXParseException#SAXParseException 
      */
  //    virtual void error(const SAXParseException& exception) = 0;
  
    /**
      * Receive notification of a non-recoverable error.
      *
      * <p>This corresponds to the definition of "fatal error" in
      * section 1.2 of the W3C XML 1.0 Recommendation.  For example, a
      * parser would use this callback to report the violation of a
      * well-formedness constraint.</p>
      *
      * <p>The application must assume that the document is unusable
      * after the parser has invoked this method, and should continue
      * (if at all) only for the sake of collecting addition error
      * messages: in fact, SAX parsers are free to stop reporting any
      * other events once this method has been invoked.</p>
      *
      * @param exception The error information encapsulated in a
      *                  SAX parse exception.  
      * @exception SAXException Any SAX exception, possibly
      *            wrapping another exception.
      * @see SAXParseException#SAXParseException
      */
  //    virtual void fatalError(const SAXParseException& exception) = 0;
      
      /**
      * Reset the Error handler object on its reuse
      *
      * <p>This method helps in reseting the Error handler object
      * implementational defaults each time the Error handler is begun.</p>
      *
      */
  //    virtual void resetErrors() = 0;
  
  
      //@}
  
  //private :
      /* Unimplemented constructors and operators */
      
      /* Copy constructor */
  //    ErrorHandler(const ErrorHandler&);
  
      /* Assignment operator */
  //    void operator=(const ErrorHandler&);
      
  };
  
  //#endif
  
  
  
  1.1                  xml-xerces/perl/Xerces_headers/sax/InputSource.hpp
  
  Index: InputSource.hpp
  ===================================================================
  /*
   * The Apache Software License, Version 1.1
   * 
   * Copyright (c) 1999-2000 The Apache Software Foundation.  All rights
   * reserved.
   * 
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions
   * are met:
   * 
   * 1. Redistributions of source code must retain the above copyright
   *    notice, this list of conditions and the following disclaimer. 
   * 
   * 2. Redistributions in binary form must reproduce the above copyright
   *    notice, this list of conditions and the following disclaimer in
   *    the documentation and/or other materials provided with the
   *    distribution.
   * 
   * 3. The end-user documentation included with the redistribution,
   *    if any, must include the following acknowledgment:  
   *       "This product includes software developed by the
   *        Apache Software Foundation (http://www.apache.org/)."
   *    Alternately, this acknowledgment may appear in the software itself,
   *    if and wherever such third-party acknowledgments normally appear.
   * 
   * 4. The names "Xerces" and "Apache Software Foundation" must
   *    not be used to endorse or promote products derived from this
   *    software without prior written permission. For written 
   *    permission, please contact apache\@apache.org.
   * 
   * 5. Products derived from this software may not be called "Apache",
   *    nor may "Apache" appear in their name, without prior written
   *    permission of the Apache Software Foundation.
   * 
   * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
   * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
   * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
   * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
   * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
   * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
   * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   * SUCH DAMAGE.
   * ====================================================================
   * 
   * This software consists of voluntary contributions made by many
   * individuals on behalf of the Apache Software Foundation, and was
   * originally based on software copyright (c) 1999, International
   * Business Machines, Inc., http://www.ibm.com .  For more information
   * on the Apache Software Foundation, please see
   * <http://www.apache.org/>.
   */
  
  /*
   * $Log: InputSource.hpp,v $
   * Revision 1.1  2001/03/07 16:04:06  jasons
   * PR:
   * Submitted by:	jason@openinformatics.com
   *
   * Added new files from Harmon's 1.3 port
   *
   * Revision 1.9  2000/03/02 19:54:35  roddey
   * This checkin includes many changes done while waiting for the
   * 1.1.0 code to be finished. I can't list them all here, but a list is
   * available elsewhere.
   *
   * Revision 1.8  2000/02/24 20:12:55  abagchi
   * Swat for removing Log from API docs
   *
   * Revision 1.7  2000/02/12 03:42:21  rahulj
   * Fixed DOC++ documentation formatting errors.
   *
   * Revision 1.6  2000/02/12 03:31:55  rahulj
   * Removed duplicate CVS Log entries.
   *
   * Revision 1.5  2000/02/12 01:27:19  aruna1
   * Documentation updated
   *
   * Revision 1.4  2000/02/09 02:15:28  abagchi
   * Documented destructor
   *
   * Revision 1.3  2000/02/06 07:47:58  rahulj
   * Year 2K copyright swat.
   *
   * Revision 1.2  2000/01/12 00:15:39  roddey
   * Changes to deal with multiply nested, relative pathed, entities and to deal
   * with the new URL class changes.
   *
   * Revision 1.1.1.1  1999/11/09 01:07:46  twl
   * Initial checkin
   *
   * Revision 1.2  1999/11/08 20:45:01  rahul
   * Swat for adding in Product name and CVS comment log variable.
   *
   */
  
  
  //#ifndef INPUTSOURCE_HPP
  //#define INPUTSOURCE_HPP
  
  //#include <util/XercesDefs.hpp>
  
  //class BinInputStream;
  
  
  /**
    * A single input source for an XML entity.
    *
    * <p>This class encapsulates information about an input source in a
    * single object, which may include a public identifier or a system
    * identifier</p>
    *
    * <p>There are two places that the application will deliver this input
    * source to the parser: as the argument to the Parser::parse method, or as
    * the return value of the EntityResolver::resolveEntity method.</p>
    *
    * <p>InputSource is never used directly, but is the base class for a number
    * of derived classes for particular types of input sources. Derivatives are
    * provided (in the internal/ directory) for URL input sources, memory buffer
    * input sources, and so on.</p>
    *
    * <p>When it is time to parse the input described by an input source, it
    * will be asked to create a binary stream for that source. That stream will
    * be used to input the data of the source. The derived class provides the
    * implementation of the makeStream() method, and provides a type of stream
    * of the correct type for the input source it represents.
    *
    * <p>An InputSource object belongs to the application: the parser never
    * modifies them in any way. They are always passed by const reference so
    * the parser will make a copy of any input sources that it must keep 
    * around beyond the call.</p>
    *
    * @see Parser#parse
    * @see EntityResolver#resolveEntity
    */
  class /*SAX_EXPORT*/ InputSource
  {
  public:
      // -----------------------------------------------------------------------
      //  All constructors are hidden, just the destructor is available
      // -----------------------------------------------------------------------
      /** @name Destructor */
      //@{
    /**
      * Destructor
      *
      */
  //    virtual ~InputSource();
      //@}
  
  
      // -----------------------------------------------------------------------
      /** @name Virtual input source interface */
      //@{
    /**
      * Makes the byte stream for this input source.
      *
      * <p>The derived class must create and return a binary input stream of an
      * appropriate type for its kind of data source. The returned stream must
      * be dynamically allocated and becomes the parser's property.
      * </p>
      *
      * @see BinInputStream
      */
  //    virtual BinInputStream* makeStream() const = 0;
  
      //@}
  
  
      // -----------------------------------------------------------------------
      /** @name Getter methods */
      //@{
    /**
      * An input source can be set to force the parser to assume a particular
      * encoding for the data that input source reprsents, via the setEncoding()
      * method. This method returns name of the encoding that is to be forced.
      * If the encoding has never been forced, it returns a null pointer.
      *
      * @return The forced encoding, or null if none was supplied.
      * @see #setEncoding
      */
      const XMLCh* getEncoding() const;
  
  
    /**
      * Get the public identifier for this input source.
      *
      * @return The public identifier, or null if none was supplied.
      * @see #setPublicId
      */
      const XMLCh* getPublicId() const;
  
  
    /**
      * Get the system identifier for this input source.
      *
      * <p>If the system ID is a URL, it will be fully resolved.</p>
      *
      * @return The system identifier.
      * @see #setSystemId
      */
      const XMLCh* getSystemId() const;
  
      //@}
  
  
      // -----------------------------------------------------------------------
      /** @name Setter methods */
      //@{
  
    /**
      * Set the encoding which will be required for use with the XML text read
      * via a stream opened by this input source.
      *
      * <p>This is usually not set, allowing the encoding to be sensed in the
      * usual XML way. However, in some cases, the encoding in the file is known
      * to be incorrect because of intermediate transcoding, for instance
      * encapsulation within a MIME document.
      *
      * @param encodingStr The name of the encoding to force.
      */
      void setEncoding(const XMLCh* /*const*/ encodingStr);
  
  
    /**
      * Set the public identifier for this input source.
      *
      * <p>The public identifier is always optional: if the application writer
      * includes one, it will be provided as part of the location information.</p>
      *
      * @param publicId The public identifier as a string.
      * @see Locator#getPublicId
      * @see SAXParseException#getPublicId
      * @see #getPublicId
      */
      void setPublicId(const XMLCh* /*const*/ publicId);
  
    /**
      * Set the system identifier for this input source.
      *
      * <p>Set the system identifier for this input source.
      *
      * </p>The system id is always required. The public id may be used to map
      * to another system id, but the system id must always be present as a fall
      * back.
      *
      * <p>If the system ID is a URL, it must be fully resolved.</p>
      *
      * @param systemId The system identifier as a string.
      * @see #getSystemId
      * @see Locator#getSystemId
      * @see SAXParseException#getSystemId
      */
      void setSystemId(const XMLCh* /*const*/ systemId);
  
      //@}
  
  
  //protected :
      // -----------------------------------------------------------------------
      //  Hidden constructors
      // -----------------------------------------------------------------------
      /** @name Constructors and Destructor */
      //@{
      /** Default constructor */
  //    InputSource();
  
      /** Constructor with a system identifier as XMLCh type.
        * @param systemId The system identifier (URI).
        */
  //    InputSource(const XMLCh* const systemId);
  
      /** Constructor with a system and public identifiers 
        * @param systemId The system identifier (URI).
        * @param publicId The public identifier as in the entity definition.
        */
  //    InputSource
  //    (
  //        const   XMLCh* const    systemId
  //        , const XMLCh* const    publicId
  //    );
      
      /** Constructor witha system identifier as string 
        * @param systemId The system identifier (URI).
        */
  //    InputSource(const char* const systemId);
      
      /** Constructor witha system and public identifiers. Both as string 
        * @param systemId The system identifier (URI).
        * @param publicId The public identifier as in the entity definition.
        */
  //    InputSource
  //    (
  //        const   char* const systemId
  //        , const char* const publicId
  //    );
      
      //@}
  
  
      
  
  
  //private:
      // -----------------------------------------------------------------------    
      //  Unimplemented constructors and operators
      // -----------------------------------------------------------------------    
  //    InputSource(const InputSource&);
  //    void operator=(const InputSource&);
  
  
      // -----------------------------------------------------------------------    
      //  Private data members
      //
      //  fEncoding
      //      This is the encoding to use. Usually this is null, which means
      //      to use the information found in the file itself. But, if set,
      //      this encoding will be used without question.
      //
      //  fPublicId
      //      This is the optional public id for the input source. It can be
      //      null if none is desired.
      //
      //  fSystemId
      //      This is the system id for the input source. This is what is
      //      actually used to open the source.
      // -----------------------------------------------------------------------    
  //    XMLCh*  fEncoding;
  //    XMLCh*  fPublicId;
  //    XMLCh*  fSystemId;
  };
  
  
  // ---------------------------------------------------------------------------
  //  InputSource: Getter methods
  // ---------------------------------------------------------------------------
  //inline const XMLCh* InputSource::getEncoding() const 
  //{
  //    return fEncoding;
  //}
  
  //inline const XMLCh* InputSource::getPublicId() const 
  //{
  //    return fPublicId;
  //}
  
  //inline const XMLCh* InputSource::getSystemId() const 
  //{
  //    return fSystemId;
  //}
  
  //#endif
  
  
  
  1.1                  xml-xerces/perl/Xerces_headers/sax/SAXException.hpp
  
  Index: SAXException.hpp
  ===================================================================
  /*
   * The Apache Software License, Version 1.1
   * 
   * Copyright (c) 1999-2000 The Apache Software Foundation.  All rights
   * reserved.
   * 
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions
   * are met:
   * 
   * 1. Redistributions of source code must retain the above copyright
   *    notice, this list of conditions and the following disclaimer. 
   * 
   * 2. Redistributions in binary form must reproduce the above copyright
   *    notice, this list of conditions and the following disclaimer in
   *    the documentation and/or other materials provided with the
   *    distribution.
   * 
   * 3. The end-user documentation included with the redistribution,
   *    if any, must include the following acknowledgment:  
   *       "This product includes software developed by the
   *        Apache Software Foundation (http://www.apache.org/)."
   *    Alternately, this acknowledgment may appear in the software itself,
   *    if and wherever such third-party acknowledgments normally appear.
   * 
   * 4. The names "Xerces" and "Apache Software Foundation" must
   *    not be used to endorse or promote products derived from this
   *    software without prior written permission. For written 
   *    permission, please contact apache\@apache.org.
   * 
   * 5. Products derived from this software may not be called "Apache",
   *    nor may "Apache" appear in their name, without prior written
   *    permission of the Apache Software Foundation.
   * 
   * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
   * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
   * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
   * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
   * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
   * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
   * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   * SUCH DAMAGE.
   * ====================================================================
   * 
   * This software consists of voluntary contributions made by many
   * individuals on behalf of the Apache Software Foundation, and was
   * originally based on software copyright (c) 1999, International
   * Business Machines, Inc., http://www.ibm.com .  For more information
   * on the Apache Software Foundation, please see
   * <http://www.apache.org/>.
   */
  
  /*
   * $Log: SAXException.hpp,v $
   * Revision 1.1  2001/03/07 16:04:06  jasons
   * PR:
   * Submitted by:	jason@openinformatics.com
   *
   * Added new files from Harmon's 1.3 port
   *
   * Revision 1.8  2000/09/07 23:55:02  andyh
   * Fix SAXException assignment operator.  Now non-virtual, and
   * SAXParseException invokes base class operator.
   *
   * Revision 1.7  2000/08/09 22:06:04  jpolast
   * more functionality to SAXException and its children.
   * msgs are now functional for SAXNotSupportedEx and
   * SAXNotRecognizedEx
   *
   * Revision 1.6  2000/08/02 18:04:02  jpolast
   * include SAXNotSupportedException and
   * SAXNotRecognizedException needed for sax2
   *
   * Revision 1.5  2000/02/24 20:12:55  abagchi
   * Swat for removing Log from API docs
   *
   * Revision 1.4  2000/02/09 19:15:17  abagchi
   * Inserted documentation for new APIs
   *
   * Revision 1.3  2000/02/06 07:47:58  rahulj
   * Year 2K copyright swat.
   *
   * Revision 1.2  1999/12/18 00:21:23  roddey
   * Fixed a small reported memory leak
   *
   * Revision 1.1.1.1  1999/11/09 01:07:47  twl
   * Initial checkin
   *
   * Revision 1.2  1999/11/08 20:45:02  rahul
   * Swat for adding in Product name and CVS comment log variable.
   *
   */
  
  
  //#ifndef SAXEXCEPTION_HPP
  //#define SAXEXCEPTION_HPP
  
  //#include <util/XMLString.hpp>
  //#include <util/XMLUni.hpp>
  
  
  /**
    * Encapsulate a general SAX error or warning.
    *
    * <p>This class can contain basic error or warning information from
    * either the XML SAX parser or the application: a parser writer or
    * application writer can subclass it to provide additional
    * functionality.  SAX handlers may throw this exception or
    * any exception subclassed from it.</p>
    *
    * <p>If the application needs to pass through other types of
    * exceptions, it must wrap those exceptions in a SAXException
    * or an exception derived from a SAXException.</p>
    *
    * <p>If the parser or application needs to include information
    * about a specific location in an XML document, it should use the
    * SAXParseException subclass.</p>
    *
    * @see SAXParseException#SAXParseException
    */
  class /*SAX_EXPORT*/ SAXException
  {
  public:
      /** @name Constructors and Destructor */
      //@{
      /** Default constructor 
       */
  //    SAXException() :
  
  //        fMsg(XMLString::replicate(XMLUni::fgZeroLenString))
  //    {
  //    }
  
    /**
      * Create a new SAXException.
      *
      * @param msg The error or warning message.
      */
  //    SAXException(const XMLCh* const msg) :
  
  //        fMsg(XMLString::replicate(msg))
  //    {
  //    }
  
    /**
      * Create a new SAXException.
      *
      * @param msg The error or warning message.
      */
  //    SAXException(const char* const msg) :
  
  //        fMsg(XMLString::transcode(msg))
  //    {
  //    }
  
    /**
      * Copy constructor
      *
      * @param toCopy The exception to be copy constructed
      */
  //    SAXException(const SAXException& toCopy) :
  
  //        fMsg(XMLString::replicate(toCopy.fMsg))
  //    {
  //    }
  
      /** Destructor */
  //    virtual ~SAXException()
  //    {
  //        delete [] fMsg;
  //    }
  
      //@}
  
  
      /** @name Public Operators */
      //@{
      /**
        * Assignment operator
        *
        * @param toCopy The object to be copied
        */
  //    SAXException& operator=(const SAXException& toCopy)
      SAXException& assignment(const SAXException& toCopy)
      {
          if (this == &toCopy)
              return *this;
  
          delete [] fMsg;
          fMsg = XMLString::replicate(toCopy.fMsg);
          return *this;
      }
      //@}
  
      /** @name Getter Methods */
      //@{
      /**
        * Get the contents of the message
        *
        */
      virtual const XMLCh* getMessage() const
      {
          return fMsg;
      }
      //@}
  
  
  //protected :
      // -----------------------------------------------------------------------
      //  Protected data members
      //
      //  fMsg
      //      This is the text of the error that is being thrown.
      // -----------------------------------------------------------------------
  //    XMLCh*  fMsg;
  };
  
  class SAXNotSupportedException : public SAXException
  {
  
  public:
  //	SAXNotSupportedException();
  
    /**
      * Create a new SAXException.
      *
      * @param msg The error or warning message.
      */
  //    SAXNotSupportedException(const XMLCh* const msg);
  
    /**
      * Create a new SAXException.
      *
      * @param msg The error or warning message.
      */
  //    SAXNotSupportedException(const char* const msg);
  
    /**
      * Copy constructor
      *
      * @param toCopy The exception to be copy constructed
      */
  //    SAXNotSupportedException(const SAXException& toCopy);
  };
  
  class SAXNotRecognizedException : public SAXException
  {
  public:
  //	SAXNotRecognizedException();
  
    /**
      * Create a new SAXException.
      *
      * @param msg The error or warning message.
      */
  //    SAXNotRecognizedException(const XMLCh* const msg);
  
    /**
      * Create a new SAXException.
      *
      * @param msg The error or warning message.
      */
  //    SAXNotRecognizedException(const char* const msg);
  
    /**
      * Copy constructor
      *
      * @param toCopy The exception to be copy constructed
      */
  //    SAXNotRecognizedException(const SAXException& toCopy);
  };
  
  //#endif
  
  
  
  1.1                  xml-xerces/perl/Xerces_headers/sax/SAXParseException.hpp
  
  Index: SAXParseException.hpp
  ===================================================================
  /*
   * The Apache Software License, Version 1.1
   * 
   * Copyright (c) 1999-2000 The Apache Software Foundation.  All rights
   * reserved.
   * 
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions
   * are met:
   * 
   * 1. Redistributions of source code must retain the above copyright
   *    notice, this list of conditions and the following disclaimer. 
   * 
   * 2. Redistributions in binary form must reproduce the above copyright
   *    notice, this list of conditions and the following disclaimer in
   *    the documentation and/or other materials provided with the
   *    distribution.
   * 
   * 3. The end-user documentation included with the redistribution,
   *    if any, must include the following acknowledgment:  
   *       "This product includes software developed by the
   *        Apache Software Foundation (http://www.apache.org/)."
   *    Alternately, this acknowledgment may appear in the software itself,
   *    if and wherever such third-party acknowledgments normally appear.
   * 
   * 4. The names "Xerces" and "Apache Software Foundation" must
   *    not be used to endorse or promote products derived from this
   *    software without prior written permission. For written 
   *    permission, please contact apache\@apache.org.
   * 
   * 5. Products derived from this software may not be called "Apache",
   *    nor may "Apache" appear in their name, without prior written
   *    permission of the Apache Software Foundation.
   * 
   * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
   * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
   * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
   * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
   * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
   * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
   * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   * SUCH DAMAGE.
   * ====================================================================
   * 
   * This software consists of voluntary contributions made by many
   * individuals on behalf of the Apache Software Foundation, and was
   * originally based on software copyright (c) 1999, International
   * Business Machines, Inc., http://www.ibm.com .  For more information
   * on the Apache Software Foundation, please see
   * <http://www.apache.org/>.
   */
  
  /*
   * $Log: SAXParseException.hpp,v $
   * Revision 1.1  2001/03/07 16:04:06  jasons
   * PR:
   * Submitted by:	jason@openinformatics.com
   *
   * Added new files from Harmon's 1.3 port
   *
   * Revision 1.5  2000/02/24 20:12:55  abagchi
   * Swat for removing Log from API docs
   *
   * Revision 1.4  2000/02/12 01:27:19  aruna1
   * Documentation updated
   *
   * Revision 1.3  2000/02/09 19:24:49  abagchi
   * Inserted documentation for constructors and destructors
   *
   * Revision 1.2  2000/02/06 07:47:58  rahulj
   * Year 2K copyright swat.
   *
   * Revision 1.1.1.1  1999/11/09 01:07:47  twl
   * Initial checkin
   *
   * Revision 1.2  1999/11/08 20:45:02  rahul
   * Swat for adding in Product name and CVS comment log variable.
   *
   */
  
  
  //#ifndef SAXPARSEEXCEPTION_HPP
  //#define SAXPARSEEXCEPTION_HPP
  
  //#include    <sax/SAXException.hpp>
  
  //class Locator;
  
  /**
    * Encapsulate an XML parse error or warning.
    *
    * <p>This exception will include information for locating the error
    * in the original XML document.  Note that although the application
    * will receive a SAXParseException as the argument to the handlers
    * in the ErrorHandler interface, the application is not actually
    * required to throw the exception; instead, it can simply read the
    * information in it and take a different action.</p>
    *
    * <p>Since this exception is a subclass of SAXException, it
    * inherits the ability to wrap another exception.</p>
    *
    * @see SAXException#SAXException
    * @see Locator#Locator
    * @see ErrorHandler#ErrorHandler
    */
  class /*SAX_EXPORT*/ SAXParseException : public SAXException
  {
  public:
      /** @name Constructors and Destructor */
      //@{
    /**
      * Create a new SAXParseException from a message and a Locator.
      *
      * <p>This constructor is especially useful when an application is
      * creating its own exception from within a DocumentHandler
      * callback.</p>
      *
      * @param message The error or warning message.
      * @param locator The locator object for the error or warning.
      * @see Locator#Locator
      * @see Parser#setLocale 
      */
  //    SAXParseException(const XMLCh* const message, const Locator& locator);
  
  
    /**
      * Create a new SAXParseException.
      *
      * <p>This constructor is most useful for parser writers.</p>
      *
      * <p>If the system identifier is a URL, the parser must resolve it
      * fully before creating the exception.</p>
      *
      * @param message The error or warning message.
      * @param publicId The public identifer of the entity that generated
      *                 the error or warning.
      * @param systemId The system identifer of the entity that generated
      *                 the error or warning.
      * @param lineNumber The line number of the end of the text that
      *                   caused the error or warning.
      * @param columnNumber The column number of the end of the text that
      *                     caused the error or warning.
      * @see Parser#setLocale
      */
  //    SAXParseException
  //    (
  //        const   XMLCh* const    message
  //        , const XMLCh* const    publicId
  //        , const XMLCh* const    systemId
  //        , const unsigned int    lineNumber
  //        , const unsigned int    columnNumber
  //    );
  
    /**
      * Copy constructor
      *
      * @param toCopy The object to be copied
      */
  //    SAXParseException(const SAXParseException& toCopy);
  
      /**
        * Destructor
        */
  //    ~SAXParseException();
  
      //@}
  
      /** @name Assignment operator */
      //@{
     /**
      * Assignment operator
      *
      * @param toAssign The object to be copied through assignment
      *
      */
  //    SAXParseException& operator=(const SAXParseException& toAssign);
      SAXParseException& assignment(const SAXParseException& toAssign);
      //@}
  
      /** @name Getter methods */
      //@{
     /**
      * The column number of the end of the text where the exception occurred.
      *
      * <p>The first column in a line is position 1.</p>
      *
      * @return An integer representing the column number, or -1
      *         if none is available.
      * @see Locator#getColumnNumber
      */
      unsigned int getColumnNumber() const;
    /**
      * The line number of the end of the text where the exception occurred.
      *
      * @return An integer representing the line number, or -1
      *         if none is available.
      * @see Locator#getLineNumber
      */
      unsigned int getLineNumber() const;
    /**
      * Get the public identifier of the entity where the exception occurred.
      *
      * @return A string containing the public identifier, or null
      *         if none is available.
      * @see Locator#getPublicId
      */
      const XMLCh* getPublicId() const;
    /**
      * Get the system identifier of the entity where the exception occurred.
      *
      * <p>If the system identifier is a URL, it will be resolved
      * fully.</p>
      *
      * @return A string containing the system identifier, or null
      *         if none is available.
      * @see Locator#getSystemId
      */
      const XMLCh* getSystemId() const;
      //@}
  
  //private:
      /* Data Members */
      
      /* The column in the source text where the error occured. */
  //    unsigned int    fColumnNumber;
      /* The line in the source text where the error occured. */
  //    unsigned int    fLineNumber;
      /* The public id of the file where the error occured. */
  //    XMLCh*          fPublicId;
      /* The system id of the file where the error occured. */
  //    XMLCh*          fSystemId;
      
  
  };
  
  //#endif
  
  
  
  1.1                  xml-xerces/perl/Xerces_headers/util/PlatformUtils.hpp
  
  Index: PlatformUtils.hpp
  ===================================================================
  /*
   * The Apache Software License, Version 1.1
   *
   * Copyright (c) 1999-2000 The Apache Software Foundation.  All rights
   * reserved.
   *
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions
   * are met:
   *
   * 1. Redistributions of source code must retain the above copyright
   *    notice, this list of conditions and the following disclaimer.
   *
   * 2. Redistributions in binary form must reproduce the above copyright
   *    notice, this list of conditions and the following disclaimer in
   *    the documentation and/or other materials provided with the
   *    distribution.
   *
   * 3. The end-user documentation included with the redistribution,
   *    if any, must include the following acknowledgment:
   *       "This product includes software developed by the
   *        Apache Software Foundation (http://www.apache.org/)."
   *    Alternately, this acknowledgment may appear in the software itself,
   *    if and wherever such third-party acknowledgments normally appear.
   *
   * 4. The names "Xerces" and "Apache Software Foundation" must
   *    not be used to endorse or promote products derived from this
   *    software without prior written permission. For written
   *    permission, please contact apache\@apache.org.
   *
   * 5. Products derived from this software may not be called "Apache",
   *    nor may "Apache" appear in their name, without prior written
   *    permission of the Apache Software Foundation.
   *
   * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
   * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
   * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
   * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
   * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
   * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
   * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   * SUCH DAMAGE.
   * ====================================================================
   *
   * This software consists of voluntary contributions made by many
   * individuals on behalf of the Apache Software Foundation, and was
   * originally based on software copyright (c) 1999, International
   * Business Machines, Inc., http://www.ibm.com .  For more information
   * on the Apache Software Foundation, please see
   * <http://www.apache.org/>.
   */
  
  /*
   * $Id: PlatformUtils.hpp,v 1.1 2001/03/07 16:04:07 jasons Exp $
   */
  
  
  //#if !defined(PLATFORMUTILS_HPP)
  //#define PLATFORMUTILS_HPP
  
  //#include <util/XercesDefs.hpp>
  //#include <util/XMLException.hpp>
  
  //class XMLMsgLoader;
  //class XMLNetAccessor;
  //class XMLTransService;
  
  
  //
  //  For internal use only
  //
  //  This class provides a simple abstract API via which lazily evaluated
  //  data can be cleaned up.
  //
  //class XMLUTIL_EXPORT XMLDeleter
  //{
  //public :
  //    virtual ~XMLDeleter();
  
  //protected :
  //    XMLDeleter();
  
  //private :
  //    XMLDeleter(const XMLDeleter&);
  //    void operator=(const XMLDeleter&);
  //};
  
  
  /**
    * Utilities that must be implemented in a platform-specific way.
    *
    * This class contains methods that must be implemented in a platform
    * specific manner. The actual implementations of these methods are
    * available in the per-platform files indide <code>src/util/Platforms
    * </code>.
    */
  class /*XMLUTIL_EXPORT*/ XMLPlatformUtils
  {
  public :
      /** @name Public Types */
      //@{
      enum PanicReasons
      {
          Panic_NoTransService
          , Panic_NoDefTranscoder
          , Panic_CantFindLib
          , Panic_UnknownMsgDomain
          , Panic_CantLoadMsgDomain
          , Panic_SynchronizationErr
          , Panic_SystemInit
  
          , PanicReasons_Count
      };
      //@}
  
      /** @name Public Static Data */
      //@{
  
      /** The network accessor
        *
        * This is provided by the per-platform driver, so each platform can
        * choose what actual implementation it wants to use. The object must
        * be dynamically allocated.
        *
        * <i>Note that you may optionally, if your platform driver does not
        * install a network accessor, set it manually from your client code
        * after calling Initialize(). This works because this object is
        * not required during initialization, and only comes into play during
        * actual XML parsing.</i>
        */
  //    static XMLNetAccessor*      fgNetAccessor;
  
      /** The transcoding service.
        *
        * This is provided by the per platform driver, so each platform can
        * choose what implemenation it wants to use. When the platform
        * independent initialization code needs to get a transcoding service
        * object, it will call <code>makeTransService()</code> to ask the
        * per-platform code to create one. Only one transcoding service
        * object is reqeusted per-process, so it is shared and synchronized
        * among parser instances within that process.
        */
  //    static XMLTransService*     fgTransService;
  
      //@}
  
  
      /** @name Initialization amd Panic methods */
      //@{
  
      /** Perform per-process parser initialization
        *
        * Initialization <b>must</b> be called first in any client code.
        */
      static void Initialize();
  
      /** Perform per-process parser termination
        *
        * The termination call is currently optional, to aid those dynamically
        * loading the parser to clean up before exit, or to avoid spurious
        * reports from leak detectors.
        */
      static void Terminate();
  
      /** The panic mechanism.
        *
        * If, during initialization, we cannot even get far enough along
        * to get transcoding up or get message loading working, we call
        * this method.</p>
        *
        * Each platform can implement it however they want. This method is
        * expected to display something meaningful and end the process. The
        * enum indicates why its being called, to allow the per-platform code
        * to display or log something more specific if desired.</p>
        *
        * @param reason The enumeration that defines the cause of the failure
        */
      static void panic
      (
          const   PanicReasons    reason
      );
      //@}
  
      /** @name File Methods */
      //@{
  
      /** Get the current file position
        *
        * This must be implemented by the per-platform driver, which should
        * use local file services to deterine the current position within
        * the passed file.
        *
        * Since the file API provided here only reads, if the host platform
        * supports separate read/write positions, only the read position is
        * of any interest, and hence should be the one returned.
        *
        * @param theFile The file handle
        */
  //    static unsigned int curFilePos(FileHandle theFile);
  
      /** Closes the file handle
        *
        * This must be implemented by the per-platform driver, which should
        * use local file services to close the passed file handle, and to
        * destroy the passed file handle and any allocated data or system
        * resources it contains.
        *
        * @param theFile The file handle to close
        */
  //    static void closeFile(FileHandle theFile);
  
      /** Returns the file size
        *
        * This must be implemented by the per-platform driver, which should
        * use local file services to determine the current size of the file
        * represented by the passed handle.
        *
        * @param theFile The file handle whose size you want
        *
        * @return Returns the size of the file in bytes
        */
  //    static unsigned int fileSize(FileHandle theFile);
  
      /** Opens the file
        *
        * This must be implemented by the per-platform driver, which should
        * use local file services to open passed file. If it fails, a
        * null handle pointer should be returned.
        *
        * @param fileName The string containing the name of the file
        *
        * @return The file handle of the opened file
        */
  //    static FileHandle openFile(const char* const fileName);
  
      /** Opens a named file
        *
        * This must be implemented by the per-platform driver, which should
        * use local file services to open the passed file. If it fails, a
        * null handle pointer should be returned.
        *
        * @param fileName The string containing the name of the file
        *
        * @return The file handle of the opened file
        */
  //    static FileHandle openFile(const XMLCh* const fileName);
  
      /** Opens the standard input as a file
        *
        * This must be implemented by the per-platform driver, which should
        * use local file services to open a handle to the standard input.
        * It should be a copy of the standard input handle, since it will
        * be closed later!
        *
        * @return The file handle of the standard input stream
        */
  //    static FileHandle openStdInHandle();
  
      /** Reads the file buffer
        *
        * This must be implemented by the per-platform driver, which should
        * use local file services to read up to 'toRead' bytes of data from
        * the passed file, and return those bytes in the 'toFill' buffer. It
        * is not an error not to read the requested number of bytes. When the
        * end of file is reached, zero should be returned.
        *
        * @param theFile The file handle to be read from.
        * @param toRead The maximum number of byte to read from the current
        * position
        * @param toFill The byte buffer to fill
        *
        * @return Returns the number of bytes read from the stream or file
        */
  //    static unsigned int readFileBuffer
  //    (
  //                FileHandle      theFile
  //        , const unsigned int    toRead
  //        ,       XMLByte* const  toFill
  //    );
  
      /** Resets the file handle
        *
        * This must be implemented by the per-platform driver which will use
        * local file services to reset the file position to the start of the
        * the file.
        *
        * @param theFile The file handle that you want to reset
        */
  //    static void resetFile(FileHandle theFile);
  
      //@}
  
  
      /** @name File System Methods */
      //@{
      /** Gets the full path from a relative path
        *
        * This must be implemented by the per-platform driver. It should
        * complete a relative path using the 'current directory', or whatever
        * the local equivalent of a current directory is. If the passed
        * source path is actually fully qualified, then a straight copy of it
        * will be returned.
        *
        * @param srcPath The path of the file for which you want the full path
        *
        * @return Returns the fully qualified path of the file name including
        * the file name. This is dyanmically allocated and must be deleted
        * by the caller when its no longer needed!
        */
  //    static XMLCh* getFullPath(const XMLCh* const srcPath);
  
      /** Determines if a path is relative or absolute
        *
        * This must be implemented by the per-platform driver, which should
        * determine whether the passed path is relative or not. The concept
        * of relative and absolute might be... well relative on different
        * platforms. But, as long as the determination is made consistently
        * and in coordination with the weavePaths() method, it should work
        * for any platform.
        *
        * @param toCheck The file name which you want to check
        *
        * @return Returns true if the filename appears to be relative
        */
  //    static bool isRelative(const XMLCh* const toCheck);
  
      /** Utility to join two paths
        *
        * This must be implemented by the per-platform driver, and should
        * weave the relative path part together with the base part and return
        * a new path that represents this combination.
        *
        * If the relative part turns out to be fully qualified, it will be
        * returned as is. If it is not, then it will be woven onto the
        * passed base path, by removing one path component for each leading
        * "../" (or whatever is the equivalent in the local system) in the
        * relative path.
        *
        * @param basePath The string containing the base path
        * @param relativePath The string containing the relative path
        *
        * @return Returns a string containing the 'woven' path. It should 
        * be dynamically allocated and becomes the responsibility of the
        * caller to delete.
        */
  //    static XMLCh* weavePaths
  //    (
  //        const   XMLCh* const    basePath
  //        , const XMLCh* const    relativePath
  //    );
      //@}
  
      /** @name Timing Methods */
      //@{
  
      /** Gets the system time in milliseconds
        *
        * This must be implemented by the per-platform driver, which should
        * use local services to return the current value of a running
        * millisecond timer. Note that the value returned is only as accurate
        * as the millisecond time of the underyling host system.
        *
        * @return Returns the system time as an unsigned long
        */
  //    static unsigned long getCurrentMillis();
      //@}
  
      /** @name Mutex Methods */
      //@{
  
      /** Closes a mutex handle
        *
        * Each per-platform driver must implement this. Only it knows what
        * the actual content of the passed mutex handle is.
        *
        * @param mtxHandle The mutex handle that you want to close
        */
  //    static void closeMutex(void* const mtxHandle);
  
      /** Locks a mutex handle
        *
        * Each per-platform driver must implement this. Only it knows what
        * the actual content of the passed mutex handle is.
        *
        * @param mtxHandle The mutex handle that you want to lock
        */
  //    static void lockMutex(void* const mtxHandle);
  
      /** Make a new mutex
        *
        * Each per-platform driver must implement this. Only it knows what
        * the actual content of the passed mutex handle is. The returned
        * handle pointer will be eventually passed to closeMutex() which is
        * also implemented by the platform driver.
        */
  //    static void* makeMutex();
  
      /** Unlocks a mutex
        *
        * Each per-platform driver must implement this. Only it knows what
        * the actual content of the passed mutex handle is.
        *
        * Note that, since the underlying system synchronization services
        * are used, Xerces cannot guarantee that lock/unlock operaitons are
        * correctly enforced on a per-thread basis or that incorrect nesting
        * of lock/unlock operations will be caught.
        *
        * @param mtxGandle The mutex handle that you want to unlock
        */
  //    static void unlockMutex(void* const mtxHandle);
  
      //@}
  
  
      /** @name External Message Support */
      //@{
  
      /** Loads the message set from among the available domains
        *
        * The returned object must be dynamically allocated and the caller
        * becomes responsible for cleaning it up.
        *
        * @param msgDomain The message domain which you want to load
        */
  //    static XMLMsgLoader* loadMsgSet(const XMLCh* const msgDomain);
  
      //@}
  
      /** @name Miscellaneous synchronization methods */
      //@{
  
      /** Conditionally updates or returns a single word variable atomically
        *
        * This must be implemented by the per-platform driver. The
        * compareAndSwap subroutine performs an atomic operation which
        * compares the contents of a single word variable with a stored old
        * value. If the values are equal, a new value is stored in the single
        * word variable and TRUE is returned; otherwise, the old value is set
        * to the current value of the single word variable and FALSE is
        * returned.
        *
        * The compareAndSwap subroutine is useful when a word value must be
        * updated only if it has not been changed since it was last read.
        *
        * Note: The word containing the single word variable must be aligned
        * on a full word boundary.
        *
        * @param toFill Specifies the address of the single word variable
        * @param newValue Specifies the new value to be conditionally assigned
        * to the single word variable.
        * @param toCompare Specifies the address of the old value to be checked
        * against (and conditionally updated with) the value of the single word
        * variable.
        *
        * @return Returns the new value assigned to the single word variable
        */
  //    static void* compareAndSwap
  //    (
  //                void**      toFill
  //        , const void* const newValue
  //        , const void* const toCompare
  //    );
  
      //@}
  
  
      /** @name Atomic Increment and Decrement */
      //@{
  
      /** Increments a single word variable atomically.
        *
        * This must be implemented by the per-platform driver. The
        * atomicIncrement subroutine increments one word in a single atomic
        * operation. This operation is useful when a counter variable is shared
        * between several threads or processes. When updating such a counter
        * variable, it is important to make sure that the fetch, update, and
        * store operations occur atomically (are not interruptible).
        *
        * @param location Specifies the address of the word variable to be
        * incremented.
        *
        * @return The function return value is positive if the result of the
        * operation was positive. Zero if the result of the operation was zero.
        * Negative if the result of the operation was negative. Except for the
        * zero case, the value returned may differ from the actual result of
        * the operation - only the sign and zero/nonzero state is guaranteed
        * to be correct.
        */
  //    static int atomicIncrement(int& location);
  
      /** Decrements a single word variable atomically.
        *
        * This must be implemented by the per-platform driver. The
        * atomicDecrement subroutine increments one word in a single atomic
        * operation. This operation is useful when a counter variable is shared
        * between several threads or processes. When updating such a counter
        * variable, it is important to make sure that the fetch, update, and
        * store operations occur atomically (are not interruptible).
        *
        * @param location Specifies the address of the word variable to be
        * decremented.
        *
        * @return The function return value is positive if the result of the
        * operation was positive. Zero if the result of the operation was zero.
        * Negative if the result of the operation was negative. Except for the
        * zero case, the value returned may differ from the actual result of the
        * operation - only the sign and zero/nonzero state is guaranteed to be
        * correct.
        */
  //    static int atomicDecrement(int& location);
  
      //@}
  
  
      //
      //  For internal use only.
      //
      //  The parser creates a good bit of static/global data lazily, to
      //  avoid order of creation issues. Those objects can be registered
      //  here to be cleaned up during the Terminate() call.
      ///
  //    static void registerLazyData(XMLDeleter* const deleter);
  //    static void cleanupLazyData();
  
  
  //private :
      /** @name Private static methods */
      //@{
  
      /** Loads a message set from the available domains
        *
        * @param msgDomain The message domain containing the message to be
        * loaded
        */
  //    static XMLMsgLoader* loadAMsgSet(const XMLCh* const msgDomain);
  
      /** Creates a net accessor object.
        *
        * Each per-platform driver must implement this method. However,
        * having a Net Accessor is optional and this method can return a
        * null pointer if remote access via HTTP and FTP URLs is not required.
        *
        * @return An object derived from XMLNetAccessor. It must be dynamically
        *         allocated, since it will be deleted later.
        */
  //    static XMLNetAccessor* makeNetAccessor();
  
      /** Creates a Transoding service
        *
        * Each per-platform driver must implement this method and return some
        * derivative of the XMLTransService class. This object serves as the
        * transcoder factory for this process. The object must be dynamically
        * allocated and the caller is responsible for cleaning it up.
        *
        * @return A dynamically allocated object of some class derived from
        *         the XMLTransService class.
        */
  //    static XMLTransService* makeTransService();
  
      /** Does initialization for a particular platform
        *
        * Each per-platform driver must implement this to do any low level
        * system initialization required. It <b>cannot</b> use any XML
        * parser or utilities services!
        */
  //    static void platformInit();
  
      /** Does termination for a particular platform
        *
        * Each per-platform driver must implement this to do any low level
        * system resource cleanup required. It <b>cannot</b> use any XML
        * parser or utilities services!
        */
  //    static void platformTerm();
  };
  
  
  //MakeXMLException(XMLPlatformUtilsException, XMLUTIL_EXPORT)
  
  
  
  // ---------------------------------------------------------------------------
  //  XMLDeleter: Public Destructor
  // ---------------------------------------------------------------------------
  //inline XMLDeleter::~XMLDeleter()
  //{
  //}
  
  // ---------------------------------------------------------------------------
  //  XMLDeleter: Hidden constructors and operators
  // ---------------------------------------------------------------------------
  //inline XMLDeleter::XMLDeleter()
  //{
  //}
  
  //#endif
  
  
  
  1.1                  xml-xerces/perl/Xerces_headers/util/XMLURL.hpp
  
  Index: XMLURL.hpp
  ===================================================================
  /*
   * The Apache Software License, Version 1.1
   * 
   * Copyright (c) 1999-2000 The Apache Software Foundation.  All rights
   * reserved.
   * 
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions
   * are met:
   * 
   * 1. Redistributions of source code must retain the above copyright
   *    notice, this list of conditions and the following disclaimer. 
   * 
   * 2. Redistributions in binary form must reproduce the above copyright
   *    notice, this list of conditions and the following disclaimer in
   *    the documentation and/or other materials provided with the
   *    distribution.
   * 
   * 3. The end-user documentation included with the redistribution,
   *    if any, must include the following acknowledgment:  
   *       "This product includes software developed by the
   *        Apache Software Foundation (http://www.apache.org/)."
   *    Alternately, this acknowledgment may appear in the software itself,
   *    if and wherever such third-party acknowledgments normally appear.
   * 
   * 4. The names "Xerces" and "Apache Software Foundation" must
   *    not be used to endorse or promote products derived from this
   *    software without prior written permission. For written 
   *    permission, please contact apache\@apache.org.
   * 
   * 5. Products derived from this software may not be called "Apache",
   *    nor may "Apache" appear in their name, without prior written
   *    permission of the Apache Software Foundation.
   * 
   * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
   * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
   * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
   * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
   * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
   * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
   * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   * SUCH DAMAGE.
   * ====================================================================
   * 
   * This software consists of voluntary contributions made by many
   * individuals on behalf of the Apache Software Foundation, and was
   * originally based on software copyright (c) 1999, International
   * Business Machines, Inc., http://www.ibm.com .  For more information
   * on the Apache Software Foundation, please see
   * <http://www.apache.org/>.
   */
  
  /*
   * $Id: XMLURL.hpp,v 1.1 2001/03/07 16:04:07 jasons Exp $
   */
  
  //#if !defined(XMLURL_HPP)
  //#define XMLURL_HPP
  
  //#include <util/XercesDefs.hpp>
  //#include <util/XMLException.hpp>
  
  //class BinInputStream;
  
  //MakeXMLException(MalformedURLException, XMLUTIL_EXPORT)
  
  
  //
  //  This class supports file, http, and ftp style URLs. All others are
  //  rejected
  //
  class /*XMLUTIL_EXPORT*/ XMLURL
  {
  public:
      // -----------------------------------------------------------------------
      //  Class types
      //
      //  And they must remain in this order because they are indexes into an
      //  array internally!
      // -----------------------------------------------------------------------
      enum Protocols
      {
          File
          , HTTP
          , FTP
  
          , Protocols_Count
          , Unknown
      };
  
  
      // -----------------------------------------------------------------------
      //  Public static methods
      // -----------------------------------------------------------------------
      Protocols lookupByName(const XMLCh* /*const*/ protoName);
  
  
      // -----------------------------------------------------------------------
      //  Constructors and Destructor
      // -----------------------------------------------------------------------
  //    XMLURL();
  //    XMLURL
  //    (
  //        const   XMLCh* const    baseURL
  //        , const XMLCh* const    relativeURL
  //    );
  //    XMLURL
  //    (
  //        const   XMLCh* const    baseURL
  //        , const char* const     relativeURL
  //    );
  //    XMLURL
  //    (
  //        const   XMLURL&         baseURL
  //        , const XMLCh* const    relativeURL
  //    );
  //    XMLURL
  //    (
  //        const   XMLURL&         baseURL
  //        , const char* const     relativeURL
  //    );
  //    XMLURL
  //    (
  //        const   XMLCh* const    urlText
  //    );
      XMLURL
      (
          const   char* /*const*/     urlText
      );
  //    XMLURL(const XMLURL& toCopy);
  //    virtual ~XMLURL();
  
  
      // -----------------------------------------------------------------------
      //  Operators
      // -----------------------------------------------------------------------
  //    XMLURL& operator=(const XMLURL& toAssign);
      XMLURL& assignment(const XMLURL& toAssign);
  //    bool operator==(const XMLURL& toCompare) const;
      bool equal_to(const XMLURL& toCompare) const;
  //    bool operator!=(const XMLURL& toCompare) const;
      bool not_equal_to(const XMLURL& toCompare) const;
  
  
      // -----------------------------------------------------------------------
      //  Getter methods
      // -----------------------------------------------------------------------
      const XMLCh* getFragment() const;
      const XMLCh* getHost() const;
      const XMLCh* getPassword() const;
      const XMLCh* getPath() const;
      unsigned int getPortNum() const;
      Protocols getProtocol() const;
      const XMLCh* getProtocolName() const;
      const XMLCh* getQuery() const;
      const XMLCh* getURLText() const;
      const XMLCh* getUser() const;
  
  
      // -----------------------------------------------------------------------
      //  Setter methods
      // -----------------------------------------------------------------------
      void setURL(const XMLCh* /*const*/ urlText);
  //    void setURL
  //    (
  //        const   XMLCh* const    baseURL
  //        , const XMLCh* const    relativeURL
  //    );
  //    void setURL
  //    (
  //        const   XMLURL&         baseURL
  //        , const XMLCh* const    relativeURL
  //    );
  
  
      // -----------------------------------------------------------------------
      //  Miscellaneous methods
      // -----------------------------------------------------------------------
      bool isRelative() const;
  //    BinInputStream* makeNewStream() const;
  //    void makeRelativeTo(const XMLCh* const baseURLText);
      void makeRelativeTo(const XMLURL& baseURL);
  
  
  //private:
      // -----------------------------------------------------------------------
      //  Private helper methods
      // -----------------------------------------------------------------------
  //    void buildFullText();
  //    void cleanup();
  //    bool conglomerateWithBase(const XMLURL& baseURL, bool useExceptions=true);
  //    void parse
  //    (
  //        const   XMLCh* const    urlText
  //    );
  //    void weavePaths(const XMLCh* const basePart);
  
  
      // -----------------------------------------------------------------------
      //  Data members
      //
      //  fFragment
      //      The fragment part of the URL, if any. If none, its a null.
      //
      //  fHost
      //      The host part of the URL that was parsed out. This one will often
      //      be null (or "localhost", which also means the current machine.)
      //
      //  fPassword
      //      The password found, if any. If none then its a null.
      //
      //  fPath
      //      The path part of the URL that was parsed out, if any. If none,
      //      then its a null.
      //
      //  fPortNum
      //      The port that was indicated in the URL. If no port was provided
      //      explicitly, then its left zero.
      //
      //  fProtocol
      //      Indicates the type of the URL's source. The text of the prefix
      //      can be gotten from this.
      //
      //  fQuery
      //      The query part of the URL, if any. If none, then its a null.
      //
      //  fUser
      //      The username found, if any. If none, then its a null.
      //
      //  fURLText
      //      This is a copy of the URL text, after it has been taken apart,
      //      made relative if needed, canonicalized, and then put back
      //      together. Its only created upon demand.
      // -----------------------------------------------------------------------
  //    XMLCh*          fFragment;
  //    XMLCh*          fHost;
  //    XMLCh*          fPassword;
  //    XMLCh*          fPath;
  //    unsigned int    fPortNum;
  //    Protocols       fProtocol;
  //    XMLCh*          fQuery;
  //    XMLCh*          fUser;
  //    XMLCh*          fURLText;
  };
  
  
  // ---------------------------------------------------------------------------
  //  XMLURL: Public operators
  // ---------------------------------------------------------------------------
  //inline bool XMLURL::operator!=(const XMLURL& toCompare) const
  //{
  //    return !operator==(toCompare);
  //}
  
  
  // ---------------------------------------------------------------------------
  //  XMLURL: Getter methods
  // ---------------------------------------------------------------------------
  //inline const XMLCh* XMLURL::getFragment() const
  //{
  //    return fFragment;
  //}
  
  //inline const XMLCh* XMLURL::getHost() const
  //{
  //    return fHost;
  //}
  
  //inline const XMLCh* XMLURL::getPassword() const
  //{
  //    return fPassword;
  //}
  
  //inline const XMLCh* XMLURL::getPath() const
  //{
  //    return fPath;
  //}
  
  //inline XMLURL::Protocols XMLURL::getProtocol() const
  //{
  //    return fProtocol;
  //}
  
  //inline const XMLCh* XMLURL::getQuery() const
  //{
  //    return fQuery;
  //}
  
  //inline const XMLCh* XMLURL::getUser() const
  //{
  //    return fUser;
  //}
  
  //inline const XMLCh* XMLURL::getURLText() const
  //{
      //
      //  Fault it in if not already. Since this is a const method and we
      //  can't use mutable members due the compilers we have to support,
      //  we have to cast off the constness.
      //
  //    if (!fURLText)
  //        ((XMLURL*)this)->buildFullText();
  
  //    return fURLText;
  //}
  
  //#endif
  
  
  
  1.1                  xml-xerces/perl/Xerces_headers/util/XercesDefs.hpp
  
  Index: XercesDefs.hpp
  ===================================================================
  /*
   * The Apache Software License, Version 1.1
   *
   * Copyright (c) 1999-2000 The Apache Software Foundation.  All rights
   * reserved.
   *
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions
   * are met:
   *
   * 1. Redistributions of source code must retain the above copyright
   *    notice, this list of conditions and the following disclaimer.
   *
   * 2. Redistributions in binary form must reproduce the above copyright
   *    notice, this list of conditions and the following disclaimer in
   *    the documentation and/or other materials provided with the
   *    distribution.
   *
   * 3. The end-user documentation included with the redistribution,
   *    if any, must include the following acknowledgment:
   *       "This product includes software developed by the
   *        Apache Software Foundation (http://www.apache.org/)."
   *    Alternately, this acknowledgment may appear in the software itself,
   *    if and wherever such third-party acknowledgments normally appear.
   *
   * 4. The names "Xerces" and "Apache Software Foundation" must
   *    not be used to endorse or promote products derived from this
   *    software without prior written permission. For written
   *    permission, please contact apache\@apache.org.
   *
   * 5. Products derived from this software may not be called "Apache",
   *    nor may "Apache" appear in their name, without prior written
   *    permission of the Apache Software Foundation.
   *
   * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
   * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
   * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
   * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
   * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
   * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
   * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   * SUCH DAMAGE.
   * ====================================================================
   *
   * This software consists of voluntary contributions made by many
   * individuals on behalf of the Apache Software Foundation, and was
   * originally based on software copyright (c) 1999, International
   * Business Machines, Inc., http://www.ibm.com .  For more information
   * on the Apache Software Foundation, please see
   * <http://www.apache.org/>.
   */
  
  /*
   * $Log: XercesDefs.hpp,v $
   * Revision 1.1  2001/03/07 16:04:07  jasons
   * PR:
   * Submitted by:	jason@openinformatics.com
   *
   * Added new files from Harmon's 1.3 port
   *
   * Revision 1.7  2000/08/18 21:29:14  andyh
   * Change version to 1.3 in preparation for upcoming Xerces 1.3
   * and XML4C 3.3 stable releases
   *
   * Revision 1.6  2000/08/07 20:31:34  jpolast
   * include SAX2_EXPORT module
   *
   * Revision 1.5  2000/08/01 18:26:02  aruna1
   * Tru64 support added
   *
   * Revision 1.4  2000/07/29 05:36:37  jberry
   * Fix misspelling in Mac OS port
   *
   * Revision 1.3  2000/07/19 18:20:12  andyh
   * Macintosh port: fix problems with yesterday's code checkin.  A couple
   * of the changes were mangled or missed.
   *
   * Revision 1.2  2000/04/04 20:11:29  abagchi
   * Added PTX support
   *
   * Revision 1.1  2000/03/02 19:54:50  roddey
   * This checkin includes many changes done while waiting for the
   * 1.1.0 code to be finished. I can't list them all here, but a list is
   * available elsewhere.
   *
   * Revision 1.13  2000/03/02 01:51:00  aruna1
   * Sun CC 5.0 related changes
   *
   * Revision 1.12  2000/02/24 20:05:26  abagchi
   * Swat for removing Log from API docs
   *
   * Revision 1.11  2000/02/22 01:00:10  aruna1
   * GNUGDefs references removed. Now only GCCDefs is used instead
   *
   * Revision 1.10  2000/02/06 07:48:05  rahulj
   * Year 2K copyright swat.
   *
   * Revision 1.9  2000/02/01 23:43:32  abagchi
   * AS/400 related change
   *
   * Revision 1.8  2000/01/21 22:12:29  abagchi
   * OS390 Change: changed OE390 to OS390
   *
   * Revision 1.7  2000/01/14 01:18:35  roddey
   * Added a macro, XMLStrL(), which is defined one way or another according
   * to whether the per-compiler file defines XML_LSTRSUPPORT or not. This
   * allows conditional support of L"" type prefixes.
   *
   * Revision 1.6  2000/01/14 00:52:06  roddey
   * Updated the version information for the next release, i.e. 1.1.0
   *
   * Revision 1.5  1999/12/17 01:28:53  rahulj
   * Merged in changes submitted for UnixWare 7 port. Platform
   * specific files are still missing.
   *
   * Revision 1.4  1999/12/16 23:47:10  rahulj
   * Updated for version 1.0.1
   *
   * Revision 1.3  1999/12/01 17:16:16  rahulj
   * Added support for IRIX 6.5.5 using SGI MIPSpro C++ 7.3 and 7.21 generating 32 bit objects. Changes submitted by Marc Stuessel
   *
   * Revision 1.2  1999/11/10 02:02:51  abagchi
   * Changed version numbers
   *
   * Revision 1.1.1.1  1999/11/09 01:05:35  twl
   * Initial checkin
   *
   * Revision 1.3  1999/11/08 20:45:19  rahul
   * Swat for adding in Product name and CVS comment log variable.
   *
   */
  
  
  //#if !defined(XERCESDEFS_HPP)
  //#define XERCESDEFS_HPP
  
  
  // ---------------------------------------------------------------------------
  //  These are the various representations of the current version of Xerces.
  //  These are updated for every build. They must be at the top because they
  //  can be used by various per-compiler headers below.
  // ---------------------------------------------------------------------------
  //#define Xerces_DLLVersionStr "1_3"
  static const char* /*const*/    gXercesVersionStr = "1_3";
  static const char* /*const*/    gXercesFullVersionStr = "1_3_0";
  static const unsigned int   gXercesMajVersion = 1;
  static const unsigned int   gXercesMinVersion = 3;
  static const unsigned int   gXercesRevision   = 0;
  
  
  // ---------------------------------------------------------------------------
  //  Include the header that does automatic sensing of the current platform
  //  and compiler.
  // ---------------------------------------------------------------------------
  //#include    <util/AutoSense.hpp>
  
  
  
  // ---------------------------------------------------------------------------
  //  According to the platform we include a platform specific file. This guy
  //  will set up any platform specific stuff, such as character mode.
  // ---------------------------------------------------------------------------
  //#if defined(XML_WIN32)
  //#include    <util/Platforms/Win32/Win32Defs.hpp>
  //#endif
  
  //#if defined(XML_AIX)
  //#include    <util/Platforms/AIX/AIXDefs.hpp>
  //#endif
  
  //#if defined(XML_SOLARIS)
  //#include    <util/Platforms/Solaris/SolarisDefs.hpp>
  //#endif
  
  //#if defined(XML_UNIXWARE)
  //#include    <util/Platforms/UnixWare/UnixWareDefs.hpp>
  //#endif
  
  //#if defined(XML_HPUX)
  //#include    <util/Platforms/HPUX/HPUXDefs.hpp>
  //#endif
  
  //#if defined(XML_IRIX)
  //#include    <util/Platforms/IRIX/IRIXDefs.hpp>
  //#endif
  
  //#if defined(XML_TANDEM)
  //#include    <util/Platforms/Tandem/TandemDefs.hpp>
  //#endif
  
  //#if defined(XML_LINUX)
  //#include    <util/Platforms/Linux/LinuxDefs.hpp>
  //#endif
  
  //#if defined(XML_OS390)
  //#include    <util/Platforms/OS390/OS390Defs.hpp>
  //#endif
  
  //#if defined(XML_PTX)
  //#include    <util/Platforms/PTX/PTXDefs.hpp>
  //#endif
  
  //#if defined(XML_OS2)
  //#include    <util/Platforms/OS2/OS2Defs.hpp>
  //#endif
  
  //#if defined(XML_MACOS) || defined(XML_MACOSX)
  //#include	<util/Platforms/MacOS/MacOSDefs.hpp>
  //#endif
  
  //#if defined(XML_AS400)
  //#include	<util/Platforms/OS400/OS400Defs.hpp>
  //#endif
  
  //#if defined(XML_TRU64)
  //#include	<util/Platforms/Tru64/Tru64Defs.hpp>
  //#endif
  
  
  // ---------------------------------------------------------------------------
  //  And now we subinclude a header according to the development environment
  //  we are on. This guy defines for each platform some basic stuff that is
  //  specific to the development environment.
  // ---------------------------------------------------------------------------
  //#if defined(XML_VISUALCPP)
  //#include    <util/Compilers/VCPPDefs.hpp>
  //#endif
  
  //#if defined(XML_CSET)
  //#include    <util/Compilers/CSetDefs.hpp>
  //#endif
  
  //#if defined(XML_BORLAND)
  //#include    <util/Compilers/BorlandCDefs.hpp>
  //#endif
  
  //#if defined(XML_SUNCC) || defined(XML_SUNCC5)
  //#include    <util/Compilers/SunCCDefs.hpp>
  //#endif
  
  //#if defined(XML_SCOCC)
  //#include    <util/Compilers/SCOCCDefs.hpp>
  //#endif
  
  //#if defined(XML_SOLARIS_KAICC)
  //#include    <util/Compilers/SunKaiDefs.hpp>
  //#endif
  
  //#if defined(XML_HPUX_CC) || defined(XML_HPUX_aCC) || defined(XML_HPUX_KAICC)
  //#include    <util/Compilers/HPCCDefs.hpp>
  //#endif
  
  //#if defined(XML_MIPSPRO_CC)
  //#include    <util/Compilers/MIPSproDefs.hpp>
  //#endif
  
  //#if defined(XML_TANDEMCC)
  //#include    <util/Compilers/TandemCCDefs.hpp>
  //#endif
  
  //#if defined(XML_GCC)
  //#include    <util/Compilers/GCCDefs.hpp>
  //#endif
  
  //#if defined(XML_MVSCPP)
  //#include    <util/Compilers/MVSCPPDefs.hpp>
  //#endif
  
  //#if defined(XML_IBMVAW32)
  //#include    <util/Compilers/IBMVAW32Defs.hpp>
  //#endif
  
  //#if defined(XML_IBMVAOS2)
  //#include    <util/Compilers/IBMVAOS2Defs.hpp>
  //#endif
  
  //#if defined(XML_METROWERKS)
  //#include	<util/Compilers/CodeWarriorDefs.hpp>
  //#endif
  
  //#if defined(XML_PTX_CC)
  //#include	<util/Compilers/PTXCCDefs.hpp>
  //#endif
  
  //#if defined(XML_AS400)
  //#include	<util/Compilers/OS400SetDefs.hpp>
  //#endif
  
  //#if defined(XML_TRU64)
  //#include	<util/Compilers/DECCXXDefs.hpp>
  //#endif
  
  
  // ---------------------------------------------------------------------------
  //  Some general typedefs that are defined for internal flexibility.
  //
  //  Note  that UTF16Ch is fixed at 16 bits, whereas XMLCh floats in size per
  //  platform, to whatever is the native wide char format there. UCS4Ch is
  //  fixed at 32 bits. The types we defined them in terms of are defined per
  //  compiler, using whatever types are the right ones for them to get these
  //  16/32 bit sizes.
  // ---------------------------------------------------------------------------
  typedef unsigned char       XMLByte;
  typedef XMLUInt16           UTF16Ch;
  typedef XMLUInt32           UCS4Ch;
  
  
  
  // ---------------------------------------------------------------------------
  //  Handle boolean. If the platform can handle booleans itself, then we
  //  map our boolean type to the native type. Otherwise we create a default
  //  one as an int and define const values for true and false.
  //
  //  This flag will be set in the per-development environment stuff above.
  // ---------------------------------------------------------------------------
  //#if defined(NO_NATIVE_BOOL)
  //  #ifndef bool
  //    typedef int     bool;
  //  #endif
  //  #ifndef true
  //    #define  true     1
  //  #endif
  //  #ifndef false
  //    #define false 0
  //  #endif
  //#endif
  
  
  // ---------------------------------------------------------------------------
  //  According to whether the compiler suports L"" type strings, we define
  //  the XMLStrL() macro one way or another.
  // ---------------------------------------------------------------------------
  //#if defined(XML_LSTRSUPPORT)
  //#define XMLStrL(str)  L##str
  //#else
  //#define XMLStrL(str)  str
  //#endif
  
  
  
  // ---------------------------------------------------------------------------
  //  Set up the import/export keyword  for our core projects. The
  //  PLATFORM_XXXX keywords are set in the per-development environment
  //  include above.
  // ---------------------------------------------------------------------------
  //#if defined(PROJ_XMLUTIL)
  //#define XMLUTIL_EXPORT PLATFORM_EXPORT
  //#else
  //#define XMLUTIL_EXPORT PLATFORM_IMPORT
  //#endif
  
  //#if defined(PROJ_XMLPARSER)
  //#define XMLPARSER_EXPORT PLATFORM_EXPORT
  //#else
  //#define XMLPARSER_EXPORT PLATFORM_IMPORT
  //#endif
  
  //#if defined(PROJ_SAX4C)
  //#define SAX_EXPORT PLATFORM_EXPORT
  //#else
  //#define SAX_EXPORT PLATFORM_IMPORT
  //#endif
  
  //#if defined(PROJ_SAX2)
  //#define SAX2_EXPORT PLATFORM_EXPORT
  //#else
  //#define SAX2_EXPORT PLATFORM_IMPORT
  //#endif
  
  //#if defined(PROJ_DOM)
  //#define CDOM_EXPORT PLATFORM_EXPORT
  //#else
  //#define CDOM_EXPORT PLATFORM_IMPORT
  //#endif
  
  //#if defined(PROJ_PARSERS)
  //#define PARSERS_EXPORT  PLATFORM_EXPORT
  //#else
  //#define PARSERS_EXPORT  PLATFORM_IMPORT
  //#endif
  
  //#if defined(PROJ_VALIDATORS)
  //#define VALIDATORS_EXPORT  PLATFORM_EXPORT
  //#else
  //#define VALIDATORS_EXPORT  PLATFORM_IMPORT
  //#endif
  
  //#endif