* Summary: the XMLReader implementation
* Description: API of the XML streaming API based on C# interfaces.
*
* Copy: See Copyright for the status of this software.
*
* Author: Patrick Monnerat <pm@datasphere.ch>, DATASPHERE S.A.

/if not defined(XML_XMLREADER_H__)
/define XML_XMLREADER_H__

/include "libxmlrpg/xmlversion"
/include "libxmlrpg/xmlTypesC"
/include "libxmlrpg/tree"
/include "libxmlrpg/xmlIO"

/if defined(LIBXML_SCHEMAS_ENABLED)
/include "libxmlrpg/relaxng"
/include "libxmlrpg/xmlschemas"
/endif

* xmlParserSeverities:
*
* How severe an error callback is when the per-reader error callback API
* is used.

d xmlParserSeverities… d s based(######typedef######) d like(xmlCenum) d XML_PARSER_SEVERITY_VALIDITY_WARNING… d c 1 d XML_PARSER_SEVERITY_VALIDITY_ERROR… d c 2 d XML_PARSER_SEVERITY_WARNING… d c 3 d XML_PARSER_SEVERITY_ERROR… d c 4

/if defined(LIBXML_READER_ENABLED)

* xmlTextReaderMode:
*
* Internal state values for the reader.

d xmlTextReaderMode… d s based(######typedef######) d like(xmlCenum) d XML_TEXTREADER_MODE_INITIAL… d c 0 d XML_TEXTREADER_MODE_INTERACTIVE… d c 1 d XML_TEXTREADER_MODE_ERROR… d c 2 d XML_TEXTREADER_MODE_EOF… d c 3 d XML_TEXTREADER_MODE_CLOSED… d c 4 d XML_TEXTREADER_MODE_READING… d c 5

* xmlParserProperties:
*
* Some common options to use with xmlTextReaderSetParserProp, but it
* is better to use xmlParserOption and the xmlReaderNewxxx and
* xmlReaderForxxx APIs now.

d xmlParserProperties… d s based(######typedef######) d like(xmlCenum) d XML_PARSER_LOADDTD… d c 1 d XML_PARSER_DEFAULTATTRS… d c 2 d XML_PARSER_VALIDATE… d c 3 d XML_PARSER_SUBST_ENTITIES… d c 4

* xmlReaderTypes:
*
* Predefined constants for the different types of nodes.

d xmlReaderTypes s based(######typedef######) d like(xmlCenum) d XML_READER_TYPE_NONE… d c 0 d XML_READER_TYPE_ELEMENT… d c 1 d XML_READER_TYPE_ATTRIBUTE… d c 2 d XML_READER_TYPE_TEXT… d c 3 d XML_READER_TYPE_CDATA… d c 4 d XML_READER_TYPE_ENTITY_REFERENCE… d c 5 d XML_READER_TYPE_ENTITY… d c 6 d XML_READER_TYPE_PROCESSING_INSTRUCTION… d c 7 d XML_READER_TYPE_COMMENT… d c 8 d XML_READER_TYPE_DOCUMENT… d c 9 d XML_READER_TYPE_DOCUMENT_TYPE… d c 10 d XML_READER_TYPE_DOCUMENT_FRAGMENT… d c 11 d XML_READER_TYPE_NOTATION… d c 12 d XML_READER_TYPE_WHITESPACE… d c 13 d XML_READER_TYPE_SIGNIFICANT_WHITESPACE… d c 14 d XML_READER_TYPE_END_ELEMENT… d c 15 d XML_READER_TYPE_END_ENTITY… d c 16 d XML_READER_TYPE_XML_DECLARATION… d c 17

* xmlTextReaderPtr:
*
* Pointer to an xmlReader context.

d xmlTextReaderPtr… d s * based(######typedef######)

* Constructors & Destructor

d xmlNewTextReader… d pr extproc('xmlNewTextReader') d like(xmlTextReaderPtr) d input value like(xmlParserInputBufferPtr) d URI * value options(*string) const char *

d xmlNewTextReaderFilename… d pr extproc('xmlNewTextReaderFilename') d like(xmlTextReaderPtr) d URI * value options(*string) const char *

d xmlFreeTextReader… d pr extproc('xmlFreeTextReader') d reader value like(xmlTextReaderPtr)

d xmlTextReaderSetup… d pr extproc('xmlTextReaderSetup') d like(xmlCint) d reader value like(xmlTextReaderPtr) d input value like(xmlParserInputBufferPtr) d URL * value options(*string) const char * d encoding * value options(*string) const char * d options value like(xmlCint)

* Iterators

d xmlTextReaderRead… d pr extproc('xmlTextReaderRead') d like(xmlCint) d reader value like(xmlTextReaderPtr)

/if defined(LIBXML_WRITER_ENABLED)

d xmlTextReaderReadInnerXml… d pr * extproc('xmlTextReaderReadInnerXml') xmlChar * d reader value like(xmlTextReaderPtr)

d xmlTextReaderReadOuterXml… d pr * extproc('xmlTextReaderReadOuterXml') xmlChar * d reader value like(xmlTextReaderPtr)

/endif

d xmlTextReaderReadString… d pr * extproc('xmlTextReaderReadString') xmlChar * d reader value like(xmlTextReaderPtr)

d xmlTextReaderReadAttributeValue… d pr extproc( d 'xmlTextReaderReadAttributeValue') d like(xmlCint) d reader value like(xmlTextReaderPtr)

* Attributes of the node

d xmlTextReaderAttributeCount… d pr extproc( d 'xmlTextReaderAttributeCount') d like(xmlCint) d reader value like(xmlTextReaderPtr)

d xmlTextReaderDepth… d pr extproc('xmlTextReaderDepth') d like(xmlCint) d reader value like(xmlTextReaderPtr)

d xmlTextReaderHasAttributes… d pr extproc('xmlTextReaderHasAttributes') d like(xmlCint) d reader value like(xmlTextReaderPtr)

d xmlTextReaderHasValue… d pr extproc('xmlTextReaderHasValue') d like(xmlCint) d reader value like(xmlTextReaderPtr)

d xmlTextReaderIsDefault… d pr extproc('xmlTextReaderIsDefault') d like(xmlCint) d reader value like(xmlTextReaderPtr)

d xmlTextReaderIsEmptyElement… d pr extproc( d 'xmlTextReaderIsEmptyElement') d like(xmlCint) d reader value like(xmlTextReaderPtr)

d xmlTextReaderNodeType… d pr extproc('xmlTextReaderNodeType') d like(xmlCint) d reader value like(xmlTextReaderPtr)

d xmlTextReaderQuoteChar… d pr extproc('xmlTextReaderQuoteChar') d like(xmlCint) d reader value like(xmlTextReaderPtr)

d xmlTextReaderReadState… d pr extproc('xmlTextReaderReadState') d like(xmlCint) d reader value like(xmlTextReaderPtr)

d xmlTextReaderIsNamespaceDecl… d pr extproc( d 'xmlTextReaderIsNamespaceDecl') d like(xmlCint) d reader value like(xmlTextReaderPtr)

d xmlTextReaderConstBaseUri… d pr * extproc('xmlTextReaderConstBaseUri') const xmlChar * d reader value like(xmlTextReaderPtr)

d xmlTextReaderConstLocalName… d pr * extproc( const xmlChar * d 'xmlTextReaderConstLocalName') d reader value like(xmlTextReaderPtr)

d xmlTextReaderConstName… d pr * extproc('xmlTextReaderConstName') const xmlChar * d reader value like(xmlTextReaderPtr)

d xmlTextReaderConstNamespaceUri… d pr * extproc( const xmlChar * d 'xmlTextReaderConstNamespaceUri') d reader value like(xmlTextReaderPtr)

d xmlTextReaderConstPrefix… d pr * extproc('xmlTextReaderConstPrefix') const xmlChar * d reader value like(xmlTextReaderPtr)

d xmlTextReaderConstXmlLang… d pr * extproc('xmlTextReaderConstXmlLang') const xmlChar * d reader value like(xmlTextReaderPtr)

d xmlTextReaderConstString… d pr * extproc('xmlTextReaderConstString') const xmlChar * d reader value like(xmlTextReaderPtr) d str * value options(*string) const xmlChar *

d xmlTextReaderConstValue… d pr * extproc('xmlTextReaderConstValue') const xmlChar * d reader value like(xmlTextReaderPtr)

* use the Const version of the routine for
* better performance and simpler code

d xmlTextReaderBaseUri… d pr * extproc('xmlTextReaderBaseUri') xmlChar * d reader value like(xmlTextReaderPtr)

d xmlTextReaderLocalName… d pr * extproc('xmlTextReaderLocalName') xmlChar * d reader value like(xmlTextReaderPtr)

d xmlTextReaderName… d pr * extproc('xmlTextReaderName') xmlChar * d reader value like(xmlTextReaderPtr)

d xmlTextReaderNamespaceUri… d pr * extproc('xmlTextReaderNamespaceUri') xmlChar * d reader value like(xmlTextReaderPtr)

d xmlTextReaderPrefix… d pr * extproc('xmlTextReaderPrefix') xmlChar * d reader value like(xmlTextReaderPtr)

d xmlTextReaderXmlLang… d pr * extproc('xmlTextReaderXmlLang') xmlChar * d reader value like(xmlTextReaderPtr)

d xmlTextReaderValue… d pr * extproc('xmlTextReaderValue') xmlChar * d reader value like(xmlTextReaderPtr)

* Methods of the XmlTextReader

d xmlTextReaderClose… d pr extproc('xmlTextReaderClose') d like(xmlCint) d reader value like(xmlTextReaderPtr)

d xmlTextReaderGetAttributeNo… d pr * extproc( xmlChar * d 'xmlTextReaderGetAttributeNo') d reader value like(xmlTextReaderPtr) d no value like(xmlCint)

d xmlTextReaderGetAttribute… d pr * extproc('xmlTextReaderGetAttribute') xmlChar * d reader value like(xmlTextReaderPtr) d name * value options(*string) const xmlChar *

d xmlTextReaderGetAttributeNs… d pr * extproc( xmlChar * d 'xmlTextReaderGetAttributeNs') d reader value like(xmlTextReaderPtr) d localName * value options(*string) const xmlChar * d namespaceURI * value options(*string) const xmlChar *

d xmlTextReaderGetRemainder… d pr extproc('xmlTextReaderGetRemainder') d like(xmlParserInputBufferPtr) d reader value like(xmlTextReaderPtr)

d xmlTextReaderLookupNamespace… d pr * extproc( xmlChar * d 'xmlTextReaderLookupNamespace') d reader value like(xmlTextReaderPtr) d prefix * value options(*string) const xmlChar *

d xmlTextReaderMoveToAttributeNo… d pr extproc( d 'xmlTextReaderMoveToAttributeNo') d like(xmlCint) d reader value like(xmlTextReaderPtr) d no value like(xmlCint)

d xmlTextReaderMoveToAttribute… d pr extproc( d 'xmlTextReaderMoveToAttribute') d like(xmlCint) d reader value like(xmlTextReaderPtr) d name * value options(*string) const xmlChar *

d xmlTextReaderMoveToAttributeNs… d pr extproc( d 'xmlTextReaderMoveToAttributeNs') d like(xmlCint) d reader value like(xmlTextReaderPtr) d localName * value options(*string) const xmlChar * d namespaceURI * value options(*string) const xmlChar *

d xmlTextReaderMoveToFirstAttribute… d pr extproc( d 'xmlTextReaderMoveToFirstAttribute') d like(xmlCint) d reader value like(xmlTextReaderPtr)

d xmlTextReaderMoveToNextAttribute… d pr extproc( d 'xmlTextReaderMoveToNextAttribute') d like(xmlCint) d reader value like(xmlTextReaderPtr)

d xmlTextReaderMoveToElement… d pr extproc('xmlTextReaderMoveToElement') d like(xmlCint) d reader value like(xmlTextReaderPtr)

d xmlTextReaderNormalization… d pr extproc('xmlTextReaderNormalization') d like(xmlCint) d reader value like(xmlTextReaderPtr)

d xmlTextReaderConstEncoding… d pr * extproc('xmlTextReaderConstEncoding')const xmlChar * d reader value like(xmlTextReaderPtr)

* Extensions

d xmlTextReaderSetParserProp… d pr extproc('xmlTextReaderSetParserProp') d like(xmlCint) d reader value like(xmlTextReaderPtr) d prop value like(xmlCint) d value value like(xmlCint)

d xmlTextReaderGetParserProp… d pr extproc('xmlTextReaderGetParserProp') d like(xmlCint) d reader value like(xmlTextReaderPtr) d prop value like(xmlCint)

d xmlTextReaderCurrentNode… d pr extproc('xmlTextReaderCurrentNode') d like(xmlNodePtr) d reader value like(xmlTextReaderPtr)

d xmlTextReaderGetParserLineNumber… d pr extproc( d 'xmlTextReaderGetParserLineNumber') d like(xmlCint) d reader value like(xmlTextReaderPtr)

d xmlTextReaderGetParserColumnNumber… d pr extproc( d 'xmlTextReaderGetParserColumnNumber') d like(xmlCint) d reader value like(xmlTextReaderPtr)

d xmlTextReaderPreserve… d pr extproc('xmlTextReaderPreserve') d like(xmlNodePtr) d reader value like(xmlTextReaderPtr)

/if defined(LIBXML_PATTERN_ENABLED)

d xmlTextReaderPreservePattern… d pr extproc( d 'xmlTextReaderPreservePattern') d like(xmlCint) d reader value like(xmlTextReaderPtr) d pattern * value options(*string) const xmlChar * d namespaces * const xmlChar *(*)

/endif                                                                    LIBXML_PATTERN_ENBLD

d xmlTextReaderCurrentDoc… d pr extproc('xmlTextReaderCurrentDoc') d like(xmlDocPtr) d reader value like(xmlTextReaderPtr)

d xmlTextReaderExpand… d pr extproc('xmlTextReaderExpand') d like(xmlNodePtr) d reader value like(xmlTextReaderPtr)

d xmlTextReaderNext… d pr extproc('xmlTextReaderNext') d like(xmlCint) d reader value like(xmlTextReaderPtr)

d xmlTextReaderNextSibling… d pr extproc('xmlTextReaderNextSibling') d like(xmlCint) d reader value like(xmlTextReaderPtr)

d xmlTextReaderIsValid… d pr extproc('xmlTextReaderIsValid') d like(xmlCint) d reader value like(xmlTextReaderPtr)

/if defined(LIBXML_SCHEMAS_ENABLED)

d xmlTextReaderRelaxNGValidate… d pr extproc( d 'xmlTextReaderRelaxNGValidate') d like(xmlCint) d reader value like(xmlTextReaderPtr) d rng * value options(*string) const char *

d xmlTextReaderRelaxNGValidateCtxt… d pr extproc( d 'xmlTextReaderRelaxNGValidateCtxt') d like(xmlCint) d reader value like(xmlTextReaderPtr) d ctxt value like(xmlRelaxNGValidCtxtPtr) d options value like(xmlCint)

d xmlTextReaderRelaxNGSetSchema… d pr extproc( d 'xmlTextReaderRelaxNGSetSchema') d like(xmlCint) d reader value like(xmlTextReaderPtr) d schema value like(xmlRelaxNGPtr)

d xmlTextReaderSchemaValidate… d pr extproc( d 'xmlTextReaderSchemaValidate') d like(xmlCint) d reader value like(xmlTextReaderPtr) d xsd * value options(*string) const char *

d xmlTextReaderSchemaValidateCtxt… d pr extproc( d 'xmlTextReaderSchemaValidateCtxt') d like(xmlCint) d reader value like(xmlTextReaderPtr) d ctxt value like(xmlSchemaValidCtxtPtr) d options value like(xmlCint)

d xmlTextReaderSetSchema… d pr extproc('xmlTextReaderSetSchema') d like(xmlCint) d reader value like(xmlTextReaderPtr) d schema value like(xmlSchemaPtr)

/endif

d xmlTextReaderConstXmlVersion… d pr * extproc( const xmlChar * d 'xmlTextReaderConstXmlVersion') d reader value like(xmlTextReaderPtr)

d xmlTextReaderStandalone… d pr extproc('xmlTextReaderStandalone') d like(xmlCint) d reader value like(xmlTextReaderPtr)

* Index lookup

d xmlTextReaderByteConsumed… d pr extproc('xmlTextReaderByteConsumed') d like(xmlClong) d reader value like(xmlTextReaderPtr)

* New more complete APIs for simpler creation and reuse of readers

d xmlReaderWalker… d pr extproc('xmlReaderWalker') d like(xmlTextReaderPtr) d doc value like(xmlDocPtr)

d xmlReaderForDoc… d pr extproc('xmlReaderForDoc') d like(xmlTextReaderPtr) d cur * value options(*string) const xmlChar * d URL * value options(*string) const char * d encoding * value options(*string) const char * d options value like(xmlCint)

d xmlReaderForFile… d pr extproc('xmlReaderForFile') d like(xmlTextReaderPtr) d filename * value options(*string) const char * d encoding * value options(*string) const char * d options value like(xmlCint)

d xmlReaderForMemory… d pr extproc('xmlReaderForMemory') d like(xmlTextReaderPtr) d buffer * value options(*string) const char * d size value like(xmlCint) d URL * value options(*string) const char * d encoding * value options(*string) const char * d options value like(xmlCint)

d xmlReaderForFd pr extproc('xmlReaderForFd') d like(xmlTextReaderPtr) d fd value like(xmlCint) d URL * value options(*string) const char * d encoding * value options(*string) const char * d options value like(xmlCint)

d xmlReaderForIO pr extproc('xmlReaderForIO') d like(xmlTextReaderPtr) d ioread value like(xmlInputReadCallback) d ioclose value like(xmlInputCloseCallback) d ioctx * value void * d URL * value options(*string) const char * d encoding * value options(*string) const char * d options value like(xmlCint)

d xmlReaderNewWalker… d pr extproc('xmlReaderNewWalker') d like(xmlCint) d reader value like(xmlTextReaderPtr) d doc value like(xmlDocPtr)

d xmlReaderNewDoc… d pr extproc('xmlReaderNewDoc') d like(xmlCint) d reader value like(xmlTextReaderPtr) d cur * value options(*string) const xmlChar * d URL * value options(*string) const char * d encoding * value options(*string) const char * d options value like(xmlCint)

d xmlReaderNewFile… d pr extproc('xmlReaderNewFile') d like(xmlCint) d reader value like(xmlTextReaderPtr) d filename * value options(*string) const char * d encoding * value options(*string) const char * d options value like(xmlCint)

d xmlReaderNewMemory… d pr extproc('xmlReaderNewMemory') d like(xmlCint) d reader value like(xmlTextReaderPtr) d buffer * value options(*string) const char * d size value like(xmlCint) d URL * value options(*string) const char * d encoding * value options(*string) const char * d options value like(xmlCint)

d xmlReaderNewFd pr extproc('xmlReaderNewFd') d like(xmlCint) d reader value like(xmlTextReaderPtr) d fd value like(xmlCint) d URL * value options(*string) const char * d encoding * value options(*string) const char * d options value like(xmlCint)

d xmlReaderNewIO pr extproc('xmlReaderNewIO') d like(xmlCint) d reader value like(xmlTextReaderPtr) d ioread value like(xmlInputReadCallback) d ioclose value like(xmlInputCloseCallback) d ioctx * value void * d URL * value options(*string) const char * d encoding * value options(*string) const char * d options value like(xmlCint)

* Error handling extensions

d xmlTextReaderLocatorPtr… d s * based(######typedef######) void *

* xmlTextReaderErrorFunc:
* @arg: the user argument
* @msg: the message
* @severity: the severity of the error
* @locator: a locator indicating where the error occurred
*
* Signature of an error callback from a reader parser

d xmlTextReaderErrorFunc… d s * based(######typedef######) d procptr

d xmlTextReaderLocatorLineNumber… d pr extproc( d 'xmlTextReaderLocatorLineNumber') d like(xmlCint) d locator value like(xmlTextReaderLocatorPtr)

d xmlTextReaderLocatorBaseURI… d pr * extproc( xmlChar * d 'xmlTextReaderLocatorBaseURI') d locator value like(xmlTextReaderLocatorPtr)

d xmlTextReaderSetErrorHandler… d pr extproc( d 'xmlTextReaderSetErrorHandler') d reader value like(xmlTextReaderPtr) d f value like(xmlTextReaderErrorFunc) d arg * value void *

d xmlTextReaderSetStructuredErrorHandler… d pr extproc('xmlTextReaderSetStructuredE- d rrorHandler') d reader value like(xmlTextReaderPtr) d f value like(xmlStructuredErrorFunc) d arg * value void *

d xmlTextReaderGetErrorHandler… d pr extproc( d 'xmlTextReaderGetErrorHandler') d reader value like(xmlTextReaderPtr) d f like(xmlTextReaderErrorFunc) d arg * void *(*)

/endif                                                                    LIBXML_READER_ENABLD
/endif                                                                    XML_XMLREADER_H__