      * Summary: interfaces for tree manipulation
      * Description: this module describes the structures found in an tree
      *              resulting from an XML or HTML parsing, as well as the API
      *              provided for various processing on that tree
      *
      * Copy: See Copyright for the status of this software.
      *
      * Author: Patrick Monnerat <pm@datasphere.ch>, DATASPHERE S.A.

      /if not defined(XML_TREE_H__)
      /define XML_TREE_H__

      /include "libxmlrpg/xmlversion"
      /include "libxmlrpg/xmlTypesC"
      /include "libxmlrpg/xmlstring"


      * Some of the basic types pointer to structures:

      * xmlIO.h

     d xmlParserInputBufferPtr...
     d                 s               *   based(######typedef######)

     d xmlOutputBufferPtr...
     d                 s               *   based(######typedef######)

      * parser.h

     d xmlParserInputPtr...
     d                 s               *   based(######typedef######)

     d xmlParserCtxtPtr...
     d                 s               *   based(######typedef######)

     d xmlSAXLocatorPtr...
     d                 s               *   based(######typedef######)

     d xmlSAXHandlerPtr...
     d                 s               *   based(######typedef######)

      * entities.h

     d xmlEntityPtr    s               *   based(######typedef######)


      * BASE_BUFFER_SIZE:
      *
      * default buffer size 4000.

     d BASE_BUFFER_SIZE...
     d                 c                   4096

      * LIBXML_NAMESPACE_DICT:
      *
      * Defines experimental behaviour:
      * 1) xmlNs gets an additional field @context (a xmlDoc)
      * 2) when creating a tree, xmlNs->href is stored in the dict of xmlDoc.

      /if defined(DO_NOT_COMPILE)
      /define LIBXML_NAMESPACE_DICT
      /endif

      * xmlBufferAllocationScheme:
      *
      * A buffer allocation scheme can be defined to either match exactly the
      * need or double it's allocated size each time it is found too small.

     d xmlBufferAllocationScheme...
     d                 s             10i 0 based(######typedef######)           enum
     d  XML_BUFFER_ALLOC_DOUBLEIT...
     d                 c                   0
     d  XML_BUFFER_ALLOC_EXACT...
     d                 c                   1
     d  XML_BUFFER_ALLOC_IMMUTABLE...
     d                 c                   2
     d  XML_BUFFER_ALLOC_IO...
     d                 c                   3
     d  XML_BUFFER_ALLOC_HYBRID...
     d                 c                   4

      * xmlBuffer:
      *
      * A buffer structure, this old construct is limited to 2GB and
      * is being deprecated, use API with xmlBuf instead

     d xmlBufferPtr    s               *   based(######typedef######)

     d xmlBuffer       ds                  based(xmlBufferPtr)
     d                                     align qualified
     d  content                        *                                        xmlChar *
     d  use                          10u 0                                      The buffer size used
     d  size                         10u 0                                      The buffer size
     d  alloc                              like(xmlBufferAllocationScheme)      The realloc method
     d  contentIO                      *                                        xmlChar *

      * xmlBufPtr:
      *
      * A pointer to a buffer structure, the actual structure internals are not
      * public

     d xmlBufPtr       s               *   based(######typedef######)

      * A few public routines for xmlBuf. As those are expected to be used
      * mostly internally the bulk of the routines are internal in buf.h

     d xmlBufContent   pr              *   extproc('xmlBufContent')             xmlChar *
     d  buf                                value like(xmlBufPtr)                const

     d xmlBufEnd       pr              *   extproc('xmlBufEnd')                 xmlChar *
     d  buf                                value like(xmlBufPtr)                const

     d xmlBufUse       pr                  extproc('xmlBufUse')
     d                                     like(xmlCsize_t)
     d  buf                                value like(xmlBufPtr)                const

     d xmlBufShrink    pr                  extproc('xmlBufShrink')
     d                                     like(xmlCsize_t)
     d  buf                                value like(xmlBufPtr)
     d  len                                value like(xmlCsize_t)

      * LIBXML2_NEW_BUFFER:
      *
      * Macro used to express that the API use the new buffers for
      * xmlParserInputBuffer and xmlOutputBuffer. The change was
      * introduced in 2.9.0.

      /define LIBXML2_NEW_BUFFER

      * XML_XML_NAMESPACE:
      *
      * This is the namespace for the special xml: prefix predefined in the
      * XML Namespace specification.

     d XML_XML_NAMESPACE...
     d                 c                   'http://www.w3.org/XML/1998/+
     d                                      namespace'

      * XML_XML_ID:
      *
      * This is the name for the special xml:id attribute

     d XML_XML_ID      c                   'xml:id'

      * The different element types carried by an XML tree.
      *
      * NOTE: This is synchronized with DOM Level1 values
      *       See http://www.w3.org/TR/REC-DOM-Level-1/
      *
      * Actually this had diverged a bit, and now XML_DOCUMENT_TYPE_NODE should
      * be deprecated to use an XML_DTD_NODE.

     d xmlElementType  s             10i 0 based(######typedef######)           enum
     d  XML_ELEMENT_NODE...
     d                 c                   1
     d  XML_ATTRIBUTE_NODE...
     d                 c                   2
     d  XML_TEXT_NODE  c                   3
     d  XML_CDATA_SECTION_NODE...
     d                 c                   4
     d  XML_ENTITY_REF_NODE...
     d                 c                   5
     d  XML_ENTITY_NODE...
     d                 c                   6
     d  XML_PI_NODE    c                   7
     d  XML_COMMENT_NODE...
     d                 c                   8
     d  XML_DOCUMENT_NODE...
     d                 c                   9
     d  XML_DOCUMENT_TYPE_NODE...
     d                 c                   10
     d  XML_DOCUMENT_FRAG_NODE...
     d                 c                   11
     d  XML_NOTATION_NODE...
     d                 c                   12
     d  XML_HTML_DOCUMENT_NODE...
     d                 c                   13
     d  XML_DTD_NODE   c                   14
     d  XML_ELEMENT_DECL...
     d                 c                   15
     d  XML_ATTRIBUTE_DECL...
     d                 c                   16
     d  XML_ENTITY_DECL...
     d                 c                   17
     d  XML_NAMESPACE_DECL...
     d                 c                   18
     d  XML_LOCAL_NAMESPACE...
     d                 c                   18                                   Alias
     d  XML_XINCLUDE_START...
     d                 c                   19
     d  XML_XINCLUDE_END...
     d                 c                   20
      /if defined(LIBXML_DOCB_ENABLED)
     d  XML_DOCB_DOCUMENT_NODE...
     d                 c                   21
      /endif

      * xmlNotation:
      *
      * A DTD Notation definition.

     d xmlNotationPtr  s               *   based(######typedef######)

     d xmlNotation     ds                  based(xmlNotationPtr)
     d                                     align qualified
     d  name                           *                                        const xmlChar *
     d  PublicID                       *                                        const xmlChar *
     d  SystemID                       *                                        const xmlChar *

      * xmlAttributeType:
      *
      * A DTD Attribute type definition.

     d xmlAttributeType...
     d                 s             10i 0 based(######typedef######)           enum
     d  XML_ATTRIBUTE_CDATA...
     d                 c                   1
     d  XML_ATTRIBUTE_ID...
     d                 c                   2
     d  XML_ATTRIBUTE_IDREF...
     d                 c                   3
     d  XML_ATTRIBUTE_IDREFS...
     d                 c                   4
     d  XML_ATTRIBUTE_ENTITY...
     d                 c                   5
     d  XML_ATTRIBUTE_ENTITIES...
     d                 c                   6
     d  XML_ATTRIBUTE_NMTOKEN...
     d                 c                   7
     d  XML_ATTRIBUTE_NMTOKENS...
     d                 c                   8
     d  XML_ATTRIBUTE_ENUMERATION...
     d                 c                   9
     d  XML_ATTRIBUTE_NOTATION...
     d                 c                   10

      * xmlAttributeDefault:
      *
      * A DTD Attribute default definition.

     d xmlAttributeDefault...
     d                 s             10i 0 based(######typedef######)           enum
     d  XML_ATTRIBUTE_NONE...
     d                 c                   1
     d  XML_ATTRIBUTE_REQUIRED...
     d                 c                   2
     d  XML_ATTRIBUTE_IMPLIED...
     d                 c                   3
     d  XML_ATTRIBUTE_FIXED...
     d                 c                   4

      * xmlEnumeration:
      *
      * List structure used when there is an enumeration in DTDs.

     d xmlEnumerationPtr...
     d                 s               *   based(######typedef######)

     d xmlEnumeration  ds                  based(xmlEnumerationPtr)
     d                                     align qualified
     d  next                               like(xmlEnumerationPtr)              Next one
     d  name                           *                                        const xmlChar *

      * Forward pointer declarations.

     d xmlNodePtr      s               *   based(######typedef######)
     d xmlDocPtr       s               *   based(######typedef######)
     d xmlDtdPtr       s               *   based(######typedef######)

      * xmlAttribute:
      *
      * An Attribute declaration in a DTD.

     d xmlAttributePtr...
     d                 s               *   based(######typedef######)

     d xmlAttribute    ds                  based(xmlAttributePtr)
     d                                     align qualified
     d  #private                       *                                        Application data
     d  type                               like(xmlElementType)                 XML_ATTRIBUTE_DECL
     d  name                           *                                        const xmlChar *
     d  children                           like(xmlNodePtr)                     NULL
     d  last                               like(xmlNodePtr)                     NULL
     d  parent                             like(xmlDtdPtr)                      -> DTD
     d  next                               like(xmlNodePtr)                     next sibling link
     d  prev                               like(xmlNodePtr)                     previous sibling lnk
     d  doc                                like(xmlDocPtr)                      The containing doc
     d  nexth                              like(xmlAttributePtr)                Next in hash table
     d  atype                              like(xmlAttributeType)               The attribute type
     d  def                                like(xmlAttributeDefault)            The default
     d  defaultValue                   *                                        or const xmlChar *
     d  tree                               like(xmlEnumerationPtr)              or enum tree
     d  prefix                         *                                        const xmlChar *
     d  elem                           *                                        const xmlChar *

      * xmlElementContentType:
      *
      * Possible definitions of element content types.

     d xmlElementContentType...
     d                 s             10i 0 based(######typedef######)           enum
     d  XML_ELEMENT_CONTENT_PCDATA...
     d                 c                   1
     d  XML_ELEMENT_CONTENT_ELEMENT...
     d                 c                   2
     d  XML_ELEMENT_CONTENT_SEQ...
     d                 c                   3
     d  XML_ELEMENT_CONTENT_OR...
     d                 c                   4

      * xmlElementContentOccur:
      *
      * Possible definitions of element content occurrences.

     d xmlElementContentOccur...
     d                 s             10i 0 based(######typedef######)           enum
     d  XML_ELEMENT_CONTENT_ONCE...
     d                 c                   1
     d  XML_ELEMENT_CONTENT_OPT...
     d                 c                   2
     d  XML_ELEMENT_CONTENT_MULT...
     d                 c                   3
     d  XML_ELEMENT_CONTENT_PLUS...
     d                 c                   4

      * xmlElementContent:
      *
      * An XML Element content as stored after parsing an element definition
      * in a DTD.

     d xmlElementContentPtr...
     d                 s               *   based(######typedef######)

     d xmlElementContent...
     d                 ds                  based(xmlElementContentPtr)
     d                                     align qualified
     d  type                               like(xmlElementContentType)
     d  ocur                               like(xmlElementContentOccur)
     d  name                           *                                        const xmlChar *
     d  c1                                 like(xmlElementContentPtr)           First child
     d  c2                                 like(xmlElementContentPtr)           Second child
     d  parent                             like(xmlElementContentPtr)           Parent
     d  prefix                         *                                        const xmlChar *

      * xmlElementTypeVal:
      *
      * The different possibilities for an element content type.

     d xmlElementTypeVal...
     d                 s             10i 0 based(######typedef######)           enum
     d  XML_ELEMENT_TYPE_UNDEFINED...
     d                 c                   0
     d  XML_ELEMENT_TYPE_EMPTY...
     d                 c                   1
     d  XML_ELEMENT_TYPE_ANY...
     d                 c                   2
     d  XML_ELEMENT_TYPE_MIXED...
     d                 c                   3
     d  XML_ELEMENT_TYPE_ELEMENT...
     d                 c                   4

      /include "libxmlrpg/xmlregexp"

      * xmlElement:
      *
      * An XML Element declaration from a DTD.

     d xmlElementPtr   s               *   based(######typedef######)

     d xmlElement      ds                  based(xmlElementPtr)
     d                                     align qualified
     d  #private                       *                                        Application data
     d  type                               like(xmlElementType)                 XML_ELEMENT_DECL
     d  name                           *                                        const xmlChar *
     d  children                           like(xmlNodePtr)                     NULL
     d  last                               like(xmlNodePtr)                     NULL
     d  parent                             like(xmlDtdPtr)                      -> DTD
     d  next                               like(xmlNodePtr)                     next sibling link
     d  prev                               like(xmlNodePtr)                     previous sibling lnk
     d  doc                                like(xmlDocPtr)                      The containing doc
     d  etype                              like(xmlElementTypeVal)              The type
     d  content                            like(xmlElementContentPtr)           Allowed elem content
     d  attributes                         like(xmlAttributePtr)                Declared attributes
     d  prefix                         *                                        const xmlChar *
      /if defined(LIBXML_REGEXP_ENABLED)
     d  contModel                          like(xmlRegexpPtr)                   Validating regexp
      /else
     d  contModel                      *
      /endif

      * XML_LOCAL_NAMESPACE:
      *
      * A namespace declaration node.

      * xmlNs:
      *
      * An XML namespace.
      * Note that prefix == NULL is valid, it defines the default namespace
      * within the subtree (until overridden).
      *
      * xmlNsType is unified with xmlElementType.

     d xmlNsType       s                   based(######typedef######)           enum
     d                                     like(xmlElementType)

     d xmlNsPtr        s               *   based(######typedef######)

     d xmlNs           ds                  based(xmlNsPtr)
     d                                     align qualified
     d  next                               like(xmlNsPtr)                       next Ns link
     d  type                               like(xmlNsType)                      Global or local
     d  href                           *                                        const xmlChar *
     d  prefix                         *                                        const xmlChar *
     d  #private                       *                                        Application data
     d  context                            like(xmlDocPtr)                      normally an xmlDoc

      * xmlDtd:
      *
      * An XML DTD, as defined by <!DOCTYPE ... There is actually one for
      * the internal subset and for the external subset.

     d xmlDtd          ds                  based(xmlDtdPtr)
     d                                     align qualified
     d  #private                       *                                        Application data
     d  type                               like(xmlElementType)                 XML_DTD_NODE
     d  name                           *                                        const xmlChar *
     d  children                           like(xmlNodePtr)                     Property link value
     d  last                               like(xmlNodePtr)                     Last child link
     d  parent                             like(xmlDocPtr)                      Child->parent link
     d  next                               like(xmlNodePtr)                     next sibling link
     d  prev                               like(xmlNodePtr)                     previous sibling lnk
     d  doc                                like(xmlDocPtr)                      The containing doc
     d  notations                      *                                        notations hash table
     d  elements                       *                                        elements hash table
     d  entities                       *                                        entities hash table
     d  ExternalID                     *                                        const xmlChar *
     d  SystemID                       *                                        const xmlChar *
     d  pentities                      *                                        param. ent. h table

      * xmlAttr:
      *
      * An attribute on an XML node.

     d xmlAttrPtr      s               *   based(######typedef######)

     d xmlAttr         ds                  based(xmlAttrPtr)
     d                                     align qualified
     d  #private                       *                                        Application data
     d  type                               like(xmlElementType)                 XML_ATTRIBUTE_NODE
     d  name                           *                                        const xmlChar *
     d  children                           like(xmlNodePtr)                     Property link value
     d  last                               like(xmlNodePtr)                     NULL
     d  parent                             like(xmlNodePtr)                     Child->parent link
     d  next                               like(xmlAttrPtr)                     next sibling link
     d  prev                               like(xmlAttrPtr)                     previous sibling lnk
     d  doc                                like(xmlDocPtr)                      The containing doc
     d  ns                                 like(xmlNsPtr)                       Associated namespace
     d  atype                              like(xmlAttributeType)               For validation
     d  psvi                           *                                        Type/PSVI info

      * xmlID:
      *
      * An XML ID instance.

     d xmlIdPtr        s               *   based(######typedef######)

     d xmlID           ds                  based(xmlIdPtr)
     d                                     align qualified
     d  next                               like(xmlIdPtr)                       Next ID
     d  attr                               like(xmlAttrPtr)                     Attribute holding it
     d  name                           *                                        const xmlChar *
     d  lineno                       10i 0                                      Line # if not avail
     d  doc                                like(xmlDocPtr)                      Doc holding ID

      * xmlRef:
      *
      * An XML IDREF instance.

     d xmlRefPtr       s               *   based(######typedef######)

     d xmlRef          ds                  based(xmlRefPtr)
     d                                     align qualified
     d  next                               like(xmlRefPtr)                      Next Ref
     d  value                          *                                        const xmlChar *
     d  attr                               like(xmlAttrPtr)                     Attribute holding it
     d  name                           *                                        const xmlChar *
     d  lineno                       10i 0                                      Line # if not avail

      * xmlNode:
      *
      * A node in an XML tree.

     d xmlNode         ds                  based(xmlNodePtr)
     d                                     align qualified
     d  #private                       *                                        Application data
     d  type                               like(xmlElementType)
     d  name                           *                                        const xmlChar *
     d  children                           like(xmlNodePtr)                     Parent->children lnk
     d  last                               like(xmlNodePtr)                     Last child link
     d  parent                             like(xmlNodePtr)                     Child->parent link
     d  next                               like(xmlNodePtr)                     next sibling link
     d  prev                               like(xmlNodePtr)                     previous sibling lnk
     d  doc                                like(xmlDocPtr)                      The containing doc
     d  ns                                 like(xmlNsPtr)                       Associated namespace
     d  content                        *                                        xmlChar *
     d  properties                         like(xmlAttrPtr)                     Properties list
     d  nsDef                              like(xmlNsPtr)                       Node ns definitions
     d  psvi                           *                                        Type/PSVI info
     d  line                               like(xmlCushort)
     d  extra                              like(xmlCushort)                     Data for XPath/XSLT

      * xmlDocProperty
      *
      * Set of properties of the document as found by the parser
      * Some of them are linked to similary named xmlParserOption

     d xmlDocProperties...
     d                 s             10i 0 based(######typedef######)           enum
     d  XML_DOC_WELLFORMED...
     d                 c                   X'00000001'
     d  XML_DOC_NSVALID...
     d                 c                   X'00000002'
     d  XML_DOC_OLD10  c                   X'00000004'
     d  XML_DOC_DTDVALID...
     d                 c                   X'00000008'
     d  XML_DOC_XINCLUDE...
     d                 c                   X'00000010'
     d  XML_DOC_USERBUILT...
     d                 c                   X'00000020'
     d  XML_DOC_INTERNAL...
     d                 c                   X'00000030'
     d  XML_DOC_HTML   c                   X'00000080'

      * xmlDoc:
      *
      * An XML document.

     d xmlDoc          ds                  based(xmlDocPtr)
     d                                     align qualified
     d  #private                       *                                        Application data
     d  type                               like(xmlElementType)                 XML_DOCUMENT_NODE
     d  name                           *                                        const xmlChar *
     d  children                           like(xmlNodePtr)                     The document tree
     d  last                               like(xmlNodePtr)                     Last child link
     d  parent                             like(xmlNodePtr)                     Child->parent link
     d  next                               like(xmlNodePtr)                     next sibling link
     d  prev                               like(xmlNodePtr)                     previous sibling lnk
     d  doc                                like(xmlDocPtr)                      Reference to itself
     d  compression                  10i 0                                      zlib compression lev
     d  standalone                   10i 0
     d  intSubset                          like(xmlDtdPtr)                      Internal subset
     d  extSubset                          like(xmlDtdPtr)                      External subset
     d  oldns                              like(xmlNsPtr)                       Global namespace
     d  version                        *                                        const xmlChar *
     d  encoding                       *                                        const xmlChar *
     d  ids                            *                                        IDs hash table
     d  refs                           *                                        IDREFs hash table
     d  URL                            *                                        const xmlChar *
     d  charset                      10i 0                                      In-memory encoding
     d  dict                           *                                        xmlDictPtr for names
     d  psvi                           *                                        Type/PSVI ino
     d  parseFlags                   10i 0                                      xmlParserOption's
     d  properties                   10i 0                                      xmlDocProperties

      * xmlDOMWrapAcquireNsFunction:
      * @ctxt:  a DOM wrapper context
      * @node:  the context node (element or attribute)
      * @nsName:  the requested namespace name
      * @nsPrefix:  the requested namespace prefix
      *
      * A function called to acquire namespaces (xmlNs) from the wrapper.
      *
      * Returns an xmlNsPtr or NULL in case of an error.

     d xmlDOMWrapAcquireNsFunction...
     d                 s               *   based(######typedef######)
     d                                     procptr

      * xmlDOMWrapCtxt:
      *
      * Context for DOM wrapper-operations.

     d xmlDOMWrapCtxtPtr...
     d                 s               *   based(######typedef######)

     d xmlDOMWrapCtxt...
     d                 ds                  based(xmlDOMWrapCtxtPtr)
     d                                     align qualified
     d  #private                       *                                        void *
     d  type                         10i 0
     d  namespaceMap                   *                                        void *
     d  getNsForNodeFunc...
     d                                     like(xmlDOMWrapAcquireNsFunction)


      * Variables.

      * Some helper functions

      /undefine XML_TESTVAL
      /if defined(LIBXML_TREE_ENABLED)
      /define XML_TESTVAL
      /elseif defined(LIBXML_XPATH_ENABLED)
      /define XML_TESTVAL
      /elseif defined(LIBXML_SCHEMAS_ENABLED)
      /define XML_TESTVAL
      /elseif defined(LIBXML_DEBUG_ENABLED)
      /define XML_TESTVAL
      /elseif defined(LIBXML_HTML_ENABLED)
      /define XML_TESTVAL
      /elseif defined(LIBXML_SAX1_ENABLED)
      /define XML_TESTVAL
      /elseif defined(LIBXML_HTML_ENABLED)
      /define XML_TESTVAL
      /elseif defined(LIBXML_WRITER_ENABLED)
      /define XML_TESTVAL
      /elseif defined(LIBXML_DOCB_ENABLED)
      /define XML_TESTVAL
      /endif
      /if defined(XML_TESTVAL)
     d xmlValidateNCName...
     d                 pr            10i 0 extproc('xmlValidateNCName')
     d  value                          *   value options(*string)               const xmlChar *
     d  space                        10i 0 value

      /undefine XML_TESTVAL
      /endif

      /if defined(LIBXML_TREE_ENABLED)
      /define XML_TESTVAL
      /elseif defined(LIBXML_SCHEMAS_ENABLED)
      /define XML_TESTVAL
      /endif
      /if defined(XML_TESTVAL)
     d xmlValidateQName...
     d                 pr            10i 0 extproc('xmlValidateQName')
     d  value                          *   value options(*string)               const xmlChar *
     d  space                        10i 0 value

     d xmlValidateName...
     d                 pr            10i 0 extproc('xmlValidateName')
     d  value                          *   value options(*string)               const xmlChar *
     d  space                        10i 0 value

     d xmlValidateNMToken...
     d                 pr            10i 0 extproc('xmlValidateNMToken')
     d  value                          *   value options(*string)               const xmlChar *
     d  space                        10i 0 value

      /undefine XML_TESTVAL
      /endif

     d xmlBuildQName   pr              *   extproc('xmlBuildQName')             xmlChar *
     d  ncname                         *   value options(*string)               const xmlChar *
     d  prefix                         *   value options(*string)               const xmlChar *
     d  memory                    65535    options(*varsize: *omit)             xmlChar[]
     d  len                          10i 0 value                                memory length

     d xmlSplitQName2  pr              *   extproc('xmlSplitQName2')            xmlChar *
     d  name                           *   value options(*string)               const xmlChar *
     d  prefix                         *                                        xmlChar *

     d xmlSplitQName3  pr              *   extproc('xmlSplitQName3')            const xmlChar *
     d  name                           *   value options(*string)               const xmlChar *
     d  len                          10i 0

      * Handling Buffers, the old ones see @xmlBuf for the new ones.

     d xmlSetBufferAllocationScheme...
     d                 pr                  extproc(
     d                                      'xmlSetBufferAllocationScheme')
     d  scheme                             value
     d                                     like(xmlBufferAllocationScheme)

     d xmlGetBufferAllocationScheme...
     d                 pr                  extproc(
     d                                      'xmlGetBufferAllocationScheme')
     d                                     like(xmlBufferAllocationScheme)

     d xmlBufferCreate...
     d                 pr                  extproc('xmlBufferCreate')
     d                                     like(xmlBufferPtr)

     d xmlBufferCreateSize...
     d                 pr                  extproc('xmlBufferCreateSize')
     d                                     like(xmlBufferPtr)
     d  size                               value like(xmlCsize_t)

     d xmlBufferCreateStatic...
     d                 pr                  extproc('xmlBufferCreateStatic')
     d                                     like(xmlBufferPtr)
     d  mem                            *   value
     d  size                               value like(xmlCsize_t)

     d xmlBufferResize...
     d                 pr            10i 0 extproc('xmlBufferResize')
     d  buf                                value like(xmlBufferPtr)
     d  size                               value like(xmlCsize_t)

     d xmlBufferFree   pr                  extproc('xmlBufferFree')
     d  buf                                value like(xmlBufferPtr)

     d xmlBufferDump   pr            10i 0 extproc('xmlBufferDump')
     d  file                           *   value                                FILE *
     d  buf                                value like(xmlBufferPtr)

     d xmlBufferAdd    pr            10i 0 extproc('xmlBufferAdd')
     d  buf                                value like(xmlBufferPtr)
     d  str                            *   value options(*string)               const xmlChar *
     d  len                          10i 0 value                                str length

     d xmlBufferAddHead...
     d                 pr            10i 0 extproc('xmlBufferAddHead')
     d  buf                                value like(xmlBufferPtr)
     d  str                            *   value options(*string)               const xmlChar *
     d  len                          10i 0 value                                str length

     d xmlBufferCat    pr            10i 0 extproc('xmlBufferCat')
     d  buf                                value like(xmlBufferPtr)
     d  str                            *   value options(*string)               const xmlChar *

     d xmlBufferCCat   pr            10i 0 extproc('xmlBufferCCat')
     d  buf                                value like(xmlBufferPtr)
     d  str                            *   value options(*string)               const char *

     d xmlBufferShrink...
     d                 pr            10i 0 extproc('xmlBufferShrink')
     d  buf                                value like(xmlBufferPtr)
     d  len                          10u 0 value                                str length

     d xmlBufferGrow   pr            10i 0 extproc('xmlBufferGrow')
     d  buf                                value like(xmlBufferPtr)
     d  len                          10u 0 value                                str length

     d xmlBufferEmpty  pr                  extproc('xmlBufferEmpty')
     d  buf                                value like(xmlBufferPtr)

     d xmlBufferContent...
     d                 pr              *   extproc('xmlBufferContent')          const xmlChar *
     d  buf                                value like(xmlBufferPtr)

     d xmlBufferDetach...
     d                 pr              *   extproc('xmlBufferDetach')           xmlChar *
     d  buf                                value like(xmlBufferPtr)

     d xmlBufferSetAllocationScheme...
     d                 pr                  extproc(
     d                                      'xmlBufferSetAllocationScheme')
     d  buf                                value like(xmlBufferPtr)
     d  scheme                             value
     d                                     like(xmlBufferAllocationScheme)

     d xmlBufferLength...
     d                 pr            10i 0 extproc('xmlBufferLength')
     d  buf                                value like(xmlBufferPtr)

      * Creating/freeing new structures.

     d xmlCreateIntSubset...
     d                 pr                  extproc('xmlCreateIntSubset')
     d                                     like(xmlDtdPtr)
     d  doc                                value like(xmlDocPtr)
     d  name                           *   value options(*string)               const xmlChar *
     d  ExternalID                     *   value options(*string)               const xmlChar *
     d  SystemlID                      *   value options(*string)               const xmlChar *

     d xmlNewDtd       pr                  extproc('xmlNewDtd')
     d                                     like(xmlDtdPtr)
     d  doc                                value like(xmlDocPtr)
     d  name                           *   value options(*string)               const xmlChar *
     d  ExternalID                     *   value options(*string)               const xmlChar *
     d  SystemlID                      *   value options(*string)               const xmlChar *

     d xmlGetIntSubset...
     d                 pr                  extproc('xmlGetIntSubset')
     d                                     like(xmlDtdPtr)
     d  doc                                value like(xmlDocPtr)

     d xmlFreeDtd      pr                  extproc('xmlFreeDtd')
     d  cur                                value like(xmlDtdPtr)

      /if defined(LIBXML_LEGACY_ENABLED)
     d xmlNewGlobalNs  pr                  extproc('xmlNewGlobalNs')
     d                                     like(xmlNsPtr)
     d  doc                                value like(xmlDocPtr)
     d  href                           *   value options(*string)               const xmlChar *
     d  prefix                         *   value options(*string)               const xmlChar *
      /endif                                                                    LIBXML_LEGACY_ENABLD

     d xmlNewNs        pr                  extproc('xmlNewNs')
     d                                     like(xmlNsPtr)
     d  node                               value like(xmlNodePtr)
     d  href                           *   value options(*string)               const xmlChar *
     d  prefix                         *   value options(*string)               const xmlChar *

     d xmlFreeNs       pr                  extproc('xmlFreeNs')
     d  cur                                value like(xmlNsPtr)

     d xmlFreeNsList   pr                  extproc('xmlFreeNsList')
     d  cur                                value like(xmlNsPtr)

     d xmlNewDoc       pr                  extproc('xmlNewDoc')
     d                                     like(xmlDocPtr)
     d  version                        *   value options(*string)               const xmlChar *

     d xmlFreeDoc      pr                  extproc('xmlFreeDoc')
     d  cur                                value like(xmlDocPtr)

     d xmlNewDocProp   pr                  extproc('xmlNewDocProp')
     d                                     like(xmlAttrPtr)
     d  name                           *   value options(*string)               const xmlChar *
     d  value                          *   value options(*string)               const xmlChar *

      /if defined(LIBXML_TREE_ENABLED)
      /define XML_TESTVAL
      /elseif defined(LIBXML_HTML_ENABLED)
      /define XML_TESTVAL
      /elseif defined(LIBXML_SCHEMAS_ENABLED)
      /define XML_TESTVAL
      /endif
      /if defined(XML_TESTVAL)
     d xmlNewProp      pr                  extproc('xmlNewProp')
     d                                     like(xmlAttrPtr)
     d  node                               value like(xmlNodePtr)
     d  name                           *   value options(*string)               const xmlChar *
     d  value                          *   value options(*string)               const xmlChar *

      /undefine XML_TESTVAL
      /endif

     d xmlNewNsProp    pr                  extproc('xmlNewNsProp')
     d                                     like(xmlAttrPtr)
     d  node                               value like(xmlNodePtr)
     d  ns                                 value like(xmlNsPtr)
     d  name                           *   value options(*string)               const xmlChar *
     d  value                          *   value options(*string)               const xmlChar *

     d xmlNewNsPropEatName...
     d                 pr                  extproc('xmlNewNsPropEatName')
     d                                     like(xmlAttrPtr)
     d  node                               value like(xmlNodePtr)
     d  ns                                 value like(xmlNsPtr)
     d  name                           *   value                                xmlChar *
     d  value                          *   value options(*string)               const xmlChar *

     d xmlFreePropList...
     d                 pr                  extproc('xmlFreePropList')
     d  cur                                value like(xmlAttrPtr)

     d xmlFreeProp     pr                  extproc('xmlFreeProp')
     d  cur                                value like(xmlAttrPtr)

     d xmlCopyProp     pr                  extproc('xmlCopyProp')
     d                                     like(xmlAttrPtr)
     d  target                             value like(xmlNodePtr)
     d  cur                                value like(xmlAttrPtr)

     d xmlCopyPropList...
     d                 pr                  extproc('xmlCopyPropList')
     d                                     like(xmlAttrPtr)
     d  target                             value like(xmlNodePtr)
     d  cur                                value like(xmlAttrPtr)

      /if defined(LIBXML_TREE_ENABLED)
     d xmlCopyDtd      pr                  extproc('xmlCopyDtd')
     d                                     like(xmlDtdPtr)
     d  dtd                                value like(xmlDtdPtr)
      /endif                                                                    LIBXML_TREE_ENABLED

      /if defined(LIBXML_TREE_ENABLED)
      /define XML_TESTVAL
      /elseif defined(LIBXML_SCHEMAS_ENABLED)
      /define XML_TESTVAL
      /endif
      /if defined(XML_TESTVAL)
     d xmlCopyDoc      pr                  extproc('xmlCopyDoc')
     d                                     like(xmlDocPtr)
     d  doc                                value like(xmlDocPtr)
     d  recursive                    10i 0 value

      /undefine XML_TESTVAL
      /endif

      * Creating new nodes.

     d xmlNewDocNode   pr                  extproc('xmlNewDocNode')
     d                                     like(xmlNodePtr)
     d  doc                                value like(xmlDocPtr)
     d  ns                                 value like(xmlNsPtr)
     d  name                           *   value options(*string)               const xmlChar *
     d  content                        *   value options(*string)               const xmlChar *

     d xmlNewDocNodeEatName...
     d                 pr                  extproc('xmlNewDocNodeEatName')
     d                                     like(xmlNodePtr)
     d  doc                                value like(xmlDocPtr)
     d  ns                                 value like(xmlNsPtr)
     d  name                           *   value                                xmlChar *
     d  content                        *   value options(*string)               const xmlChar *

     d xmlNewNode      pr                  extproc('xmlNewNode')
     d                                     like(xmlNodePtr)
     d  ns                                 value like(xmlNsPtr)
     d  name                           *   value options(*string)               const xmlChar *

     d xmlNewNodeEatName...
     d                 pr                  extproc('xmlNewNodeEatName')
     d                                     like(xmlNodePtr)
     d  ns                                 value like(xmlNsPtr)
     d  name                           *   value                                xmlChar *

      /if defined(LIBXML_TREE_ENABLED)
      /define XML_TESTVAL
      /elseif defined(LIBXML_SCHEMAS_ENABLED)
      /define XML_TESTVAL
      /endif
      /if defined(XML_TESTVAL)
     d xmlNewChild     pr                  extproc('xmlNewChild')
     d                                     like(xmlNodePtr)
     d  parent                             value like(xmlNodePtr)
     d  ns                                 value like(xmlNsPtr)
     d  name                           *   value options(*string)               const xmlChar *
     d  content                        *   value options(*string)               const xmlChar *

      /undefine XML_TESTVAL
      /endif

     d xmlNewDocText   pr                  extproc('xmlNewDocText')
     d                                     like(xmlNodePtr)
     d  doc                                value like(xmlDocPtr)
     d  content                        *   value options(*string)               const xmlChar *

     d xmlNewText      pr                  extproc('xmlNewText')
     d                                     like(xmlNodePtr)
     d  content                        *   value options(*string)               const xmlChar *

     d xmlNewDocPI     pr                  extproc('xmlNewDocPI')
     d                                     like(xmlNodePtr)
     d  doc                                value like(xmlDocPtr)
     d  name                           *   value options(*string)               const xmlChar *
     d  content                        *   value options(*string)               const xmlChar *

     d xmlNewPI        pr                  extproc('xmlNewPI')
     d                                     like(xmlNodePtr)
     d  name                           *   value options(*string)               const xmlChar *
     d  content                        *   value options(*string)               const xmlChar *

     d xmlNewDocTextLen...
     d                 pr                  extproc('xmlNewDocTextLen')
     d                                     like(xmlNodePtr)
     d  doc                                value like(xmlDocPtr)
     d  content                        *   value options(*string)               const xmlChar *
     d  len                          10i 0 value

     d xmlNewTextLen   pr                  extproc('xmlNewTextLen')
     d                                     like(xmlNodePtr)
     d  content                        *   value options(*string)               const xmlChar *
     d  len                          10i 0 value

     d xmlNewDocComment...
     d                 pr                  extproc('xmlNewDocComment')
     d                                     like(xmlNodePtr)
     d  doc                                value like(xmlDocPtr)
     d  content                        *   value options(*string)               const xmlChar *

     d xmlNewComment   pr                  extproc('xmlNewComment')
     d                                     like(xmlNodePtr)
     d  content                        *   value options(*string)               const xmlChar *

     d xmlNewCDataBlock...
     d                 pr                  extproc('xmlNewCDataBlock')
     d                                     like(xmlNodePtr)
     d  doc                                value like(xmlDocPtr)
     d  content                        *   value options(*string)               const xmlChar *
     d  len                          10i 0 value

     d xmlNewCharRef   pr                  extproc('xmlNewCharRef')
     d                                     like(xmlNodePtr)
     d  doc                                value like(xmlDocPtr)
     d  name                           *   value options(*string)               const xmlChar *

     d xmlNewReference...
     d                 pr                  extproc('xmlNewReference')
     d                                     like(xmlNodePtr)
     d  doc                                value like(xmlDocPtr)
     d  name                           *   value options(*string)               const xmlChar *

     d xmlCopyNode     pr                  extproc('xmlCopyNode')
     d                                     like(xmlNodePtr)
     d  node                               value like(xmlNodePtr)
     d  recursive                    10i 0 value

     d xmlDocCopyNode  pr                  extproc('xmlDocCopyNode')
     d                                     like(xmlNodePtr)
     d  node                               value like(xmlNodePtr)
     d  doc                                value like(xmlDocPtr)
     d  recursive                    10i 0 value

     d xmlDocCopyNodeList...
     d                 pr                  extproc('xmlDocCopyNodeList')
     d                                     like(xmlNodePtr)
     d  doc                                value like(xmlDocPtr)
     d  node                               value like(xmlNodePtr)

     d xmlCopyNodeList...
     d                 pr                  extproc('xmlCopyNodeList')
     d                                     like(xmlNodePtr)
     d  node                               value like(xmlNodePtr)

      /if defined(LIBXML_TREE_ENABLED)
     d xmlNewTextChild...
     d                 pr                  extproc('xmlNewTextChild')
     d                                     like(xmlNodePtr)
     d  parent                             value like(xmlNodePtr)
     d  ns                                 value like(xmlNsPtr)
     d  name                           *   value options(*string)               const xmlChar *
     d  content                        *   value options(*string)               const xmlChar *

     d xmlNewDocRawNode...
     d                 pr                  extproc('xmlNewDocRawNode')
     d                                     like(xmlNodePtr)
     d  doc                                value like(xmlDocPtr)
     d  ns                                 value like(xmlNsPtr)
     d  name                           *   value options(*string)               const xmlChar *
     d  content                        *   value options(*string)               const xmlChar *

     d xmlNewDocFragment...
     d                 pr                  extproc('xmlNewDocFragment')
     d                                     like(xmlNodePtr)
     d  doc                                value like(xmlDocPtr)
      /endif                                                                    LIBXML_TREE_ENABLED

      * Navigating.

     d xmlNewDocFragment...
     d xmlGetLineNo    pr                  extproc('xmlGetLineNo')
     d                                     like(xmlClong)
     d  node                               value like(xmlNodePtr)

      /if defined(LIBXML_TREE_ENABLED)
      /define XML_TESTVAL
      /elseif defined(LIBXML_DEBUG_ENABLED)
      /define XML_TESTVAL
      /endif
      /if defined(XML_TESTVAL)
     d xmlGetNodePath  pr              *   extproc('xmlGetNodePath')            xmlChar *
     d  node                               value like(xmlNodePtr)

      /undefine XML_TESTVAL
      /endif

     d xmlDocGetRootElement...
     d                 pr                  extproc('xmlDocGetRootElement')
     d                                     like(xmlNodePtr)
     d  doc                                value like(xmlDocPtr)

     d xmlGetLastChild...
     d                 pr                  extproc('xmlGetLastChild')
     d                                     like(xmlNodePtr)
     d  parent                             value like(xmlNodePtr)

     d xmlNodeIsText   pr            10i 0 extproc('xmlNodeIsText')
     d  node                               value like(xmlNodePtr)

     d xmlIsBlankNode  pr            10i 0 extproc('xmlIsBlankNode')
     d  node                               value like(xmlNodePtr)

      * Changing the structure.

      /if defined(LIBXML_TREE_ENABLED)
      /define XML_TESTVAL
      /elseif defined(LIBXML_WRITER_ENABLED)
      /define XML_TESTVAL
      /endif
      /if defined(XML_TESTVAL)
     d xmlDocSetRootElement...
     d                 pr                  extproc('xmlDocSetRootElement')
     d                                     like(xmlNodePtr)
     d  doc                                value like(xmlDocPtr)
     d  root                               value like(xmlNodePtr)

      /undefine XML_TESTVAL
      /endif

      /if defined(LIBXML_TREE_ENABLED)
     d xmlNodeSetName  pr                  extproc('xmlNodeSetName')
     d  node                               value like(xmlNodePtr)
     d  name                           *   value options(*string)               const xmlChar *
      /endif                                                                    LIBXML_TREE_ENABLED

     d xmlAddChild     pr                  extproc('xmlAddChild')
     d                                     like(xmlNodePtr)
     d  parent                             value like(xmlNodePtr)
     d  cur                                value like(xmlNodePtr)

     d xmlAddChildList...
     d                 pr                  extproc('xmlAddChildList')
     d                                     like(xmlNodePtr)
     d  parent                             value like(xmlNodePtr)
     d  cur                                value like(xmlNodePtr)

      /if defined(LIBXML_TREE_ENABLED)
      /define XML_TESTVAL
      /elseif defined(LIBXML_WRITER_ENABLED)
      /define XML_TESTVAL
      /endif
      /if defined(XML_TESTVAL)
     d xmlReplaceNode  pr                  extproc('xmlReplaceNode')
     d                                     like(xmlNodePtr)
     d  old                                value like(xmlNodePtr)
     d  cur                                value like(xmlNodePtr)

      /undefine XML_TESTVAL
      /endif

      /if defined(LIBXML_TREE_ENABLED)
      /define XML_TESTVAL
      /elseif defined(LIBXML_HTML_ENABLED)
      /define XML_TESTVAL
      /elseif defined(LIBXML_SCHEMAS_ENABLED)
      /define XML_TESTVAL
      /endif
      /if defined(XML_TESTVAL)
     d xmlAddPrevSibling...
     d                 pr                  extproc('xmlAddPrevSibling')
     d                                     like(xmlNodePtr)
     d  cur                                value like(xmlNodePtr)
     d  elem                               value like(xmlNodePtr)

      /undefine XML_TESTVAL
      /endif

     d xmlAddSibling   pr                  extproc('xmlAddSibling')
     d                                     like(xmlNodePtr)
     d  cur                                value like(xmlNodePtr)
     d  elem                               value like(xmlNodePtr)

     d xmlAddNextSibling...
     d                 pr                  extproc('xmlAddNextSibling')
     d                                     like(xmlNodePtr)
     d  cur                                value like(xmlNodePtr)
     d  elem                               value like(xmlNodePtr)

     d xmlUnlinkNode   pr                  extproc('xmlUnlinkNode')
     d  cur                                value like(xmlNodePtr)

     d xmlTextMerge    pr                  extproc('xmlTextMerge')
     d                                     like(xmlNodePtr)
     d  first                              value like(xmlNodePtr)
     d  second                             value like(xmlNodePtr)

     d xmlTextConcat   pr            10i 0 extproc('xmlTextConcat')
     d  node                               value like(xmlNodePtr)
     d  content                        *   value options(*string)               const xmlChar *
     d  len                          10i 0 value

     d xmlFreeNodeList...
     d                 pr                  extproc('xmlFreeNodeList')
     d  cur                                value like(xmlNodePtr)

     d xmlFreeNode     pr                  extproc('xmlFreeNode')
     d  cur                                value like(xmlNodePtr)

     d xmlSetTreeDoc   pr                  extproc('xmlSetTreeDoc')
     d  tree                               value like(xmlNodePtr)
     d  doc                                value like(xmlDocPtr)

     d xmlSetListDoc   pr                  extproc('xmlSetListDoc')
     d  list                               value like(xmlNodePtr)
     d  doc                                value like(xmlDocPtr)

      * Namespaces.

     d xmlSearchNs     pr                  extproc('xmlSearchNs')
     d                                     like(xmlNsPtr)
     d  doc                                value like(xmlDocPtr)
     d  node                               value like(xmlNodePtr)
     d  nameSpace                      *   value options(*string)               const xmlChar *

     d xmlSearchNsByHref...
     d                 pr                  extproc('xmlSearchNsByHref')
     d                                     like(xmlNsPtr)
     d  doc                                value like(xmlDocPtr)
     d  node                               value like(xmlNodePtr)
     d  href                           *   value options(*string)               const xmlChar *

      /if defined(LIBXML_TREE_ENABLED)
      /define XML_TESTVAL
      /elseif defined(LIBXML_XPATH_ENABLED)
      /define XML_TESTVAL
      /elseif defined(LIBXML_SCHEMAS_ENABLED)
      /define XML_TESTVAL
      /endif
      /if defined(XML_TESTVAL)
     d xmlGetNsList    pr              *   extproc('xmlGetNsList')              xmlNsPtr *
     d  doc                                value like(xmlDocPtr)
     d  node                               value like(xmlNodePtr)

      /undefine XML_TESTVAL
      /endif

     d xmlSetNs        pr                  extproc('xmlSetNs')
     d  node                               value like(xmlNodePtr)
     d  ns                                 value like(xmlNsPtr)

     d xmlCopyNamespace...
     d                 pr                  extproc('xmlCopyNamespace')
     d                                     like(xmlNsPtr)
     d  cur                                value like(xmlNsPtr)

     d xmlCopyNamespaceList...
     d                 pr                  extproc('xmlCopyNamespaceList')
     d                                     like(xmlNsPtr)
     d  cur                                value like(xmlNsPtr)

      * Changing the content.

      /if defined(LIBXML_TREE_ENABLED)
      /define XML_TESTVAL
      /elseif defined(LIBXML_XINCLUDE_ENABLED)
      /define XML_TESTVAL
      /elseif defined(LIBXML_SCHEMAS_ENABLED)
      /define XML_TESTVAL
      /elseif defined(LIBXML_HTML_ENABLED)
      /define XML_TESTVAL
      /endif
      /if defined(XML_TESTVAL)
     d xmlSetProp      pr                  extproc('xmlSetProp')
     d                                     like(xmlAttrPtr)
     d  node                               value like(xmlNodePtr)
     d  name                           *   value options(*string)               const xmlChar *
     d  value                          *   value options(*string)               const xmlChar *

     d xmlSetNsProp    pr                  extproc('xmlSetNsProp')
     d                                     like(xmlAttrPtr)
     d  node                               value like(xmlNodePtr)
     d  ns                                 value like(xmlNsPtr)
     d  name                           *   value options(*string)               const xmlChar *
     d  value                          *   value options(*string)               const xmlChar *

      /undefine XML_TESTVAL
      /endif

     d xmlGetNoNsProp  pr              *   extproc('xmlGetNoNsProp')            xmlChar *
     d  node                               value like(xmlNodePtr)
     d  name                           *   value options(*string)               const xmlChar *

     d xmlGetProp      pr              *   extproc('xmlGetProp')                xmlChar *
     d  node                               value like(xmlNodePtr)
     d  name                           *   value options(*string)               const xmlChar *

     d xmlHasProp      pr                  extproc('xmlHasProp')
     d                                     like(xmlAttrPtr)
     d  node                               value like(xmlNodePtr)
     d  name                           *   value options(*string)               const xmlChar *

     d xmlHasNsProp    pr                  extproc('xmlHasNsProp')
     d                                     like(xmlAttrPtr)
     d  node                               value like(xmlNodePtr)
     d  name                           *   value options(*string)               const xmlChar *
     d  nameSpace                      *   value options(*string)               const xmlChar *

     d xmlGetNsProp    pr              *   extproc('xmlGetNsProp')              xmlChar *
     d  node                               value like(xmlNodePtr)
     d  name                           *   value options(*string)               const xmlChar *
     d  nameSpace                      *   value options(*string)               const xmlChar *

     d xmlStringGetNodeList...
     d                 pr                  extproc('xmlStringGetNodeList')
     d                                     like(xmlNodePtr)
     d  doc                                value like(xmlDocPtr)
     d  value                          *   value options(*string)               const xmlChar *

     d xmlStringLenGetNodeList...
     d                 pr                  extproc('xmlStringLenGetNodeList')
     d                                     like(xmlNodePtr)
     d  doc                                value like(xmlDocPtr)
     d  value                          *   value options(*string)               const xmlChar *
     d  len                          10i 0 value

     d xmlNodeListGetString...
     d                 pr              *   extproc('xmlNodeListGetString')      xmlChar *
     d  doc                                value like(xmlDocPtr)
     d  list                               value like(xmlNodePtr)
     d  inLine                       10i 0 value

      /if defined(LIBXML_TREE_ENABLED)
     d xmlNodeListGetRawString...
     d                 pr              *   extproc('xmlNodeListGetRawString')   xmlChar *
     d  doc                                value like(xmlDocPtr)
     d  list                               value like(xmlNodePtr)
     d  inLine                       10i 0 value
      /endif                                                                    LIBXML_TREE_ENABLED

     d xmlNodeSetContent...
     d                 pr                  extproc('xmlNodeSetContent')
     d  cur                                value like(xmlNodePtr)
     d  content                        *   value options(*string)               const xmlChar *

      /if defined(LIBXML_TREE_ENABLED)
     d xmlNodeSetContentLen...
     d                 pr                  extproc('xmlNodeSetContentLen')
     d  cur                                value like(xmlNodePtr)
     d  content                        *   value options(*string)               const xmlChar *
     d  len                          10i 0 value
      /endif                                                                    LIBXML_TREE_ENABLED

     d xmlNodeAddContent...
     d                 pr                  extproc('xmlNodeAddContent')
     d  cur                                value like(xmlNodePtr)
     d  content                        *   value options(*string)               const xmlChar *

     d xmlNodeAddContentLen...
     d                 pr                  extproc('xmlNodeAddContentLen')
     d  cur                                value like(xmlNodePtr)
     d  content                        *   value options(*string)               const xmlChar *
     d  len                          10i 0 value

     d xmlNodeGetContent...
     d                 pr              *   extproc('xmlNodeGetContent')         xmlChar *
     d  cur                                value like(xmlNodePtr)

     d xmlNodeBufGetContent...
     d                 pr            10i 0 extproc('xmlNodeBufGetContent')
     d  buffer                             value like(xmlBufferPtr)
     d  cur                                value like(xmlNodePtr)

     d xmlBufGetNodeContent...
     d                 pr            10i 0 extproc('xmlBufGetNodeContent')
     d  buf                                value like(xmlBufPtr)
     d  cur                                value like(xmlNodePtr)

     d xmlNodeGetLang  pr              *   extproc('xmlNodeGetLang')            xmlChar *
     d  cur                                value like(xmlNodePtr)

     d xmlNodeGetSpacePreserve...
     d                 pr            10i 0 extproc('xmlNodeGetSpacePreserve')
     d  cur                                value like(xmlNodePtr)

      /if defined(LIBXML_TREE_ENABLED)
     d xmlNodeSetLang  pr                  extproc('xmlNodeSetLang')
     d  cur                                value like(xmlNodePtr)
     d  lang                           *   value options(*string)               const xmlChar *

     d xmlNodeSetSpacePreserve...
     d                 pr                  extproc('xmlNodeSetSpacePreserve')
     d  cur                                value like(xmlNodePtr)
     d  val                          10i 0 value
      /endif                                                                    LIBXML_TREE_ENABLED

     d xmlNodeGetBase  pr              *   extproc('xmlNodeGetBase')            xmlChar *
     d  doc                                value like(xmlDocPtr)
     d  cur                                value like(xmlNodePtr)

      /if defined(LIBXML_TREE_ENABLED)
      /define XML_TESTVAL
      /elseif defined(LIBXML_XINCLUDE_ENABLED)
      /define XML_TESTVAL
      /endif
      /if defined(XML_TESTVAL)
     d xmlNodeSetBase  pr                  extproc('xmlNodeSetBase')
     d  node                               value like(xmlNodePtr)
     d  uri                            *   value options(*string)               const xmlChar *

      /undefine XML_TESTVAL
      /endif

      * Removing content.

     d xmlRemoveProp   pr            10i 0 extproc('xmlRemoveProp')
     d  cur                                value like(xmlAttrPtr)

      /if defined(LIBXML_TREE_ENABLED)
      /define XML_TESTVAL
      /elseif defined(LIBXML_SCHEMAS_ENABLED)
      /define XML_TESTVAL
      /endif
      /if defined(XML_TESTVAL)
     d xmlUnsetNsProp  pr            10i 0 extproc('xmlUnsetNsProp')
     d  node                               value like(xmlNodePtr)
     d  ns                                 value like(xmlNsPtr)
     d  name                           *   value options(*string)               const xmlChar *

     d xmlUnsetProp    pr            10i 0 extproc('xmlUnsetProp')
     d  node                               value like(xmlNodePtr)
     d  name                           *   value options(*string)               const xmlChar *

      /undefine XML_TESTVAL
      /endif

      * Internal, don't use.

     d xmlBufferWriteCharacter...                                               Warning: renamed
     d                 pr                  extproc('xmlBufferWriteCHAR')
     d  buf                                value like(xmlBufferPtr)
     d  string                         *   value options(*string)               const xmlChar *

     d xmlBufferWriteChar...
     d                 pr                  extproc('xmlBufferWriteChar')
     d  buf                                value like(xmlBufferPtr)
     d  string                         *   value options(*string)               const xmlChar *

     d xmlBufferWriteQuotedString...
     d                 pr                  extproc('xmlBufferWriteQuotedString')
     d  buf                                value like(xmlBufferPtr)
     d  string                         *   value options(*string)               const xmlChar *

      /if defined(LIBXML_OUTPUT_ENABLED)
     d xmlAttrSerializeTxtContent...
     d                 pr                  extproc('xmlAttrSerializeTxtContent')
     d  buf                                value like(xmlBufferPtr)
     d  attr                               value like(xmlAttrPtr)
     d  string                         *   value options(*string)               const xmlChar *
      /endif                                                                    LIBXML_OUTPUT_ENABLD

      /if defined(LIBXML_TREE_ENABLED)

      * Namespace handling.

     d xmlReconciliateNs...
     d                 pr            10i 0 extproc('xmlReconciliateNs')
     d  doc                                value like(xmlDocPtr)
     d  tree                               value like(xmlNodePtr)
      /endif

      /if defined(LIBXML_OUTPUT_ENABLED)

      * Saving.

     d xmlDocDumpFormatMemory...
     d                 pr                  extproc('xmlDocDumpFormatMemory')
     d  cur                                value like(xmlDocPtr)
     d  mem                            *                                        xmlChar * (*)
     d  size                         10i 0
     d  format                       10i 0 value

     d xmlDocDumpMemory...
     d                 pr                  extproc('xmlDocDumpMemory')
     d  cur                                value like(xmlDocPtr)
     d  mem                            *                                        xmlChar * (*)
     d  size                         10i 0

     d xmlDocDumpMemoryEnc...
     d                 pr                  extproc('xmlDocDumpMemoryEnc')
     d  out_doc                            value like(xmlDocPtr)
     d  doc_txt_ptr                    *                                        xmlChar * (*)
     d  doc_txt_len                  10i 0
     d  txt_encoding                   *   value options(*string)               const char *

     d xmlDocDumpFormatMemoryEnc...
     d                 pr                  extproc('xmlDocDumpFormatMemoryEnc')
     d  out_doc                            value like(xmlDocPtr)
     d  doc_txt_ptr                    *                                        xmlChar * (*)
     d  doc_txt_len                  10i 0
     d  txt_encoding                   *   value options(*string)               const char *
     d  format                       10i 0 value

     d xmlDocFormatDump...
     d                 pr            10i 0 extproc('xmlDocFormatDump')
     d  f                              *   value                                FILE *
     d  cur                                value like(xmlDocPtr)
     d  format                       10i 0 value

     d xmlDocDump      pr            10i 0 extproc('xmlDocDump')
     d  f                              *   value                                FILE *
     d  cur                                value like(xmlDocPtr)

     d xmlElemDump     pr                  extproc('xmlElemDump')
     d  f                              *   value                                FILE *
     d  doc                                value like(xmlDocPtr)
     d  cur                                value like(xmlNodePtr)

     d xmlSaveFile     pr            10i 0 extproc('xmlSaveFile')
     d  filename                       *   value options(*string)               const char *
     d  cur                                value like(xmlDocPtr)

     d xmlSaveFormatFile...
     d                 pr            10i 0 extproc('xmlSaveFormatFile')
     d  filename                       *   value options(*string)               const char *
     d  cur                                value like(xmlDocPtr)
     d  format                       10i 0 value

     d xmlBufNodeDump  pr                  extproc('xmlBufNodeDump')
     d                                     like(xmlCsize_t)
     d  buf                                value like(xmlBufPtr)
     d  doc                                value like(xmlDocPtr)
     d  cur                                value like(xmlNodePtr)
     d  level                        10i 0 value
     d  format                       10i 0 value

     d xmlNodeDump     pr            10i 0 extproc('xmlNodeDump')
     d  buf                                value like(xmlBufferPtr)
     d  doc                                value like(xmlDocPtr)
     d  cur                                value like(xmlNodePtr)
     d  level                        10i 0 value
     d  format                       10i 0 value

     d xmlSaveFileTo   pr            10i 0 extproc('xmlSaveFileTo')
     d  buf                                value like(xmlOutputBufferPtr)
     d  cur                                value like(xmlDocPtr)
     d  encoding                       *   value options(*string)               const char *

     d xmlSaveFormatFileTo...
     d                 pr            10i 0 extproc('xmlSaveFormatFileTo')
     d  buf                                value like(xmlOutputBufferPtr)
     d  cur                                value like(xmlDocPtr)
     d  encoding                       *   value options(*string)               const char *
     d  format                       10i 0 value

     d xmlNodeDumpOutput...
     d                 pr                  extproc('xmlNodeDumpOutput')
     d  buf                                value like(xmlOutputBufferPtr)
     d  doc                                value like(xmlDocPtr)
     d  cur                                value like(xmlNodePtr)
     d  level                        10i 0 value
     d  format                       10i 0 value
     d  encoding                       *   value options(*string)               const char *

     d xmlSaveFormatFileEnc...
     d                 pr            10i 0 extproc('xmlSaveFormatFileEnc')
     d  filename                       *   value options(*string)               const char *
     d  cur                                value like(xmlDocPtr)
     d  encoding                       *   value options(*string)               const char *
     d  format                       10i 0 value

     d xmlSaveFileEnc  pr            10i 0 extproc('xmlSaveFileEnc')
     d  filename                       *   value options(*string)               const char *
     d  cur                                value like(xmlDocPtr)
     d  encoding                       *   value options(*string)               const char *
      /endif                                                                    LIBXML_OUTPUT_ENABLD

      * XHTML

     d xmlIsXHTML      pr            10i 0 extproc('xmlIsXHTML')
     d  systemID                       *   value options(*string)               const xmlChar *
     d  publicID                       *   value options(*string)               const xmlChar *

      * Compression.

     d xmlGetDocCompressMode...
     d                 pr            10i 0 extproc('xmlGetDocCompressMode')
     d  doc                                value like(xmlDocPtr)

     d xmlSetDocCompressMode...
     d                 pr                  extproc('xmlSetDocCompressMode')
     d  doc                                value like(xmlDocPtr)
     d  mode                         10i 0 value

     d xmlGetCompressMode...
     d                 pr            10i 0 extproc('xmlGetCompressMode')

     d xmlSetCompressMode...
     d                 pr                  extproc('xmlSetCompressMode')
     d  mode                         10i 0 value

      * DOM-wrapper helper functions.

     d xmlDOMWrapNewCtxt...
     d                 pr                  extproc('xmlDOMWrapNewCtxt')
     d                                     like(xmlDOMWrapCtxtPtr)

     d xmlDOMWrapFreeCtxt...
     d                 pr                  extproc('xmlDOMWrapFreeCtxt')
     d  ctxt                               value like(xmlDOMWrapCtxtPtr)

     d xmlDOMWrapReconcileNamespaces...
     d                 pr            10i 0 extproc(
     d                                      'xmlDOMWrapReconcileNamespaces')
     d  ctxt                               value like(xmlDOMWrapCtxtPtr)
     d  elem                               value like(xmlNodePtr)
     d  options                      10i 0 value

     d xmlDOMWrapAdoptNode...
     d                 pr            10i 0 extproc('xmlDOMWrapAdoptNode')
     d  ctxt                               value like(xmlDOMWrapCtxtPtr)
     d  sourceDoc                          value like(xmlDocPtr)
     d  node                               value like(xmlNodePtr)
     d  destDoc                            value like(xmlDocPtr)
     d  destParent                         value like(xmlNodePtr)
     d  options                      10i 0 value

     d xmlDOMWrapRemoveNode...
     d                 pr            10i 0 extproc('xmlDOMWrapRemoveNode')
     d  ctxt                               value like(xmlDOMWrapCtxtPtr)
     d  doc                                value like(xmlDocPtr)
     d  node                               value like(xmlNodePtr)
     d  options                      10i 0 value

     d xmlDOMWrapCloneNode...
     d                 pr            10i 0 extproc('xmlDOMWrapCloneNode')
     d  ctxt                               value like(xmlDOMWrapCtxtPtr)
     d  sourceDoc                          value like(xmlDocPtr)
     d  node                               value like(xmlNodePtr)
     d  clonedNode                         like(xmlNodePtr)
     d  destDoc                            value like(xmlDocPtr)
     d  destParent                         value like(xmlNodePtr)
     d  options                      10i 0 value

      /if defined(LIBXML_TREE_ENABLED)

      * 5 interfaces from DOM ElementTraversal, but different in entities
      * traversal.

     d xmlChildElementCount...
     d                 pr                  extproc('xmlChildElementCount')
     d                                     like(xmlClong)
     d  parent                             value like(xmlNodePtr)

     d xmlNextElementSibling...
     d                 pr                  extproc('xmlNextElementSibling')
     d                                     like(xmlNodePtr)
     d  node                               value like(xmlNodePtr)

     d xmlFirstElementChild...
     d                 pr                  extproc('xmlFirstElementChild')
     d                                     like(xmlNodePtr)
     d  parent                             value like(xmlNodePtr)

     d xmlLastElementChild...
     d                 pr                  extproc('xmlLastElementChild')
     d                                     like(xmlNodePtr)
     d  parent                             value like(xmlNodePtr)

     d xmlPreviousElementSibling...
     d                 pr                  extproc('xmlPreviousElementSibling')
     d                                     like(xmlNodePtr)
     d  node                               value like(xmlNodePtr)
      /endif

      /if not defined(XML_PARSER_H__)
      /include "libxmlrpg/xmlmemory"
      /endif

      /endif                                                                    XML_TREE_H__
