williamr@4: /* williamr@4: * Summary: the XMLReader implementation williamr@4: * Description: API of the XML streaming API based on C# interfaces. williamr@4: * williamr@4: * Copy: See Copyright for the status of this software. williamr@4: * williamr@4: * Author: Daniel Veillard williamr@4: * Portion Copyright © 2009 Nokia Corporation and/or its subsidiary(-ies). All rights reserved. williamr@4: */ williamr@4: williamr@4: /** @file williamr@4: @publishedAll williamr@4: @released williamr@4: */ williamr@4: williamr@4: #ifndef XML_XMLREADER_H williamr@4: #define XML_XMLREADER_H williamr@4: williamr@4: #include williamr@4: #include williamr@4: williamr@4: #ifdef LIBXML_SCHEMAS_ENABLED williamr@4: #include "libxml2_relaxng.h" williamr@4: #include "libxml2_xmlschemas.h" williamr@4: #endif williamr@4: williamr@4: // XMLENGINE: This set of header was moved here from .c file williamr@4: williamr@4: #ifdef LIBXML_SCHEMAS_ENABLED williamr@4: #include "libxml2_relaxng.h" williamr@4: #endif williamr@4: williamr@4: #ifdef LIBXML_XINCLUDE_ENABLED williamr@4: #include "libxml2_xinclude.h" williamr@4: #endif williamr@4: williamr@4: #ifdef LIBXML_PATTERN_ENABLED williamr@4: #include "libxml2_pattern.h" williamr@4: #endif williamr@4: //---------------------------------------------------------- williamr@4: williamr@4: #ifdef LIBXML_READER_ENABLED williamr@4: williamr@4: #ifdef __cplusplus williamr@4: extern "C" { williamr@4: #endif williamr@4: williamr@4: /** williamr@4: * xmlTextReaderMode: williamr@4: * williamr@4: * Internal state values for the reader. williamr@4: */ williamr@4: typedef enum { williamr@4: XML_TEXTREADER_MODE_INITIAL = 0, williamr@4: XML_TEXTREADER_MODE_INTERACTIVE = 1, williamr@4: XML_TEXTREADER_MODE_ERROR = 2, williamr@4: XML_TEXTREADER_MODE_EOF =3, williamr@4: XML_TEXTREADER_MODE_CLOSED = 4, williamr@4: XML_TEXTREADER_MODE_READING = 5 williamr@4: } xmlTextReaderMode; williamr@4: williamr@4: /** williamr@4: * xmlParserProperties: williamr@4: * williamr@4: * Some common options to use with xmlTextReaderSetParserProp, but it williamr@4: * is better to use xmlParserOption and the xmlReaderNewxxx and williamr@4: * xmlReaderForxxx APIs now. williamr@4: */ williamr@4: typedef enum { williamr@4: XML_PARSER_LOADDTD = 1, williamr@4: XML_PARSER_DEFAULTATTRS = 2, williamr@4: XML_PARSER_VALIDATE = 3, williamr@4: XML_PARSER_SUBST_ENTITIES = 4 williamr@4: } xmlParserProperties; williamr@4: williamr@4: /** williamr@4: * xmlParserSeverities: williamr@4: * williamr@4: * How severe an error callback is when the per-reader error callback API williamr@4: * is used. williamr@4: */ williamr@4: typedef enum { williamr@4: XML_PARSER_SEVERITY_VALIDITY_WARNING = 1, williamr@4: XML_PARSER_SEVERITY_VALIDITY_ERROR = 2, williamr@4: XML_PARSER_SEVERITY_WARNING = 3, williamr@4: XML_PARSER_SEVERITY_ERROR = 4 williamr@4: } xmlParserSeverities; williamr@4: williamr@4: /** williamr@4: * xmlReaderTypes: williamr@4: * williamr@4: * Predefined constants for the different types of nodes. williamr@4: */ williamr@4: typedef enum { williamr@4: XML_READER_TYPE_NONE = 0, williamr@4: XML_READER_TYPE_ELEMENT = 1, williamr@4: XML_READER_TYPE_ATTRIBUTE = 2, williamr@4: XML_READER_TYPE_TEXT = 3, williamr@4: XML_READER_TYPE_CDATA = 4, williamr@4: XML_READER_TYPE_ENTITY_REFERENCE = 5, williamr@4: XML_READER_TYPE_ENTITY = 6, williamr@4: XML_READER_TYPE_PROCESSING_INSTRUCTION = 7, williamr@4: XML_READER_TYPE_COMMENT = 8, williamr@4: XML_READER_TYPE_DOCUMENT = 9, williamr@4: XML_READER_TYPE_DOCUMENT_TYPE = 10, williamr@4: XML_READER_TYPE_DOCUMENT_FRAGMENT = 11, williamr@4: XML_READER_TYPE_NOTATION = 12, williamr@4: XML_READER_TYPE_WHITESPACE = 13, williamr@4: XML_READER_TYPE_SIGNIFICANT_WHITESPACE = 14, williamr@4: XML_READER_TYPE_END_ELEMENT = 15, williamr@4: XML_READER_TYPE_END_ENTITY = 16, williamr@4: XML_READER_TYPE_XML_DECLARATION = 17 williamr@4: } xmlReaderTypes; williamr@4: williamr@4: /* williamr@4: * Error handling extensions williamr@4: */ williamr@4: typedef void * xmlTextReaderLocatorPtr; williamr@4: typedef void (XMLCALL *xmlTextReaderErrorFunc) (void *arg, williamr@4: const char *msg, williamr@4: xmlParserSeverities severity, williamr@4: xmlTextReaderLocatorPtr locator); williamr@4: /** williamr@4: * xmlTextReader: williamr@4: * williamr@4: * Structure for an xmlReader context. williamr@4: */ williamr@4: typedef struct _xmlTextReader xmlTextReader; williamr@4: williamr@4: /** williamr@4: * xmlTextReaderPtr: williamr@4: * williamr@4: * Pointer to an xmlReader context. williamr@4: */ williamr@4: typedef xmlTextReader *xmlTextReaderPtr; williamr@4: // XMLENGINE: This moved to header from xmlreader.c file williamr@4: typedef enum { williamr@4: XML_TEXTREADER_NONE = -1, williamr@4: XML_TEXTREADER_START= 0, williamr@4: XML_TEXTREADER_ELEMENT= 1, williamr@4: XML_TEXTREADER_END= 2, williamr@4: XML_TEXTREADER_EMPTY= 3, williamr@4: XML_TEXTREADER_BACKTRACK= 4, williamr@4: XML_TEXTREADER_DONE= 5, williamr@4: XML_TEXTREADER_ERROR= 6 williamr@4: } xmlTextReaderState; williamr@4: williamr@4: typedef enum { williamr@4: XML_TEXTREADER_NOT_VALIDATE = 0, williamr@4: XML_TEXTREADER_VALIDATE_DTD = 1, williamr@4: XML_TEXTREADER_VALIDATE_RNG = 2, williamr@4: XML_TEXTREADER_VALIDATE_XSD = 4 williamr@4: } xmlTextReaderValidate; williamr@4: williamr@4: struct _xmlTextReader { williamr@4: int mode; /* the parsing mode */ williamr@4: xmlDocPtr doc; /* when walking an existing doc */ williamr@4: xmlTextReaderValidate validate; /* is there any validation */ williamr@4: int allocs; /* what structure were deallocated */ williamr@4: xmlTextReaderState state; williamr@4: xmlParserCtxtPtr ctxt; /* the parser context */ williamr@4: xmlSAXHandlerPtr sax; /* the parser SAX callbacks */ williamr@4: xmlParserInputBufferPtr input; /* the input */ williamr@4: startElementSAXFunc startElement; /* initial SAX callbacks */ williamr@4: endElementSAXFunc endElement; /* idem */ williamr@4: startElementNsSAX2Func startElementNs; /* idem */ williamr@4: endElementNsSAX2Func endElementNs; /* idem */ williamr@4: charactersSAXFunc characters; williamr@4: cdataBlockSAXFunc cdataBlock; williamr@4: unsigned int base; /* base of the segment in the input */ williamr@4: unsigned int cur; /* current position in the input */ williamr@4: xmlNodePtr node; /* current node */ williamr@4: xmlNodePtr curnode; /* current attribute node */ williamr@4: int depth; /* depth of the current node */ williamr@4: xmlNodePtr faketext;/* fake xmlNs chld */ williamr@4: int preserve;/* preserve the resulting document */ williamr@4: xmlBufferPtr buffer; /* used to return const xmlChar * */ williamr@4: xmlDictPtr dict; /* the context dictionnary */ williamr@4: williamr@4: /* entity stack when traversing entities content */ williamr@4: xmlNodePtr ent; /* Current Entity Ref Node */ williamr@4: int entNr; /* Depth of the entities stack */ williamr@4: int entMax; /* Max depth of the entities stack */ williamr@4: xmlNodePtr* entTab; /* array of entities */ williamr@4: williamr@4: /* error handling */ williamr@4: xmlTextReaderErrorFunc errorFunc; /* callback function */ williamr@4: void* errorFuncArg; /* callback function user argument */ williamr@4: williamr@4: #ifdef LIBXML_SCHEMAS_ENABLED williamr@4: /* Handling of RelaxNG validation */ williamr@4: xmlRelaxNGPtr rngSchemas; /* The Relax NG schemas */ williamr@4: xmlRelaxNGValidCtxtPtr rngValidCtxt; /* The Relax NG validation context */ williamr@4: int rngValidErrors;/* The number of errors detected */ williamr@4: xmlNodePtr rngFullNode; /* the node if RNG not progressive */ williamr@4: /* Handling of Schemas validation */ williamr@4: xmlSchemaPtr xsdSchemas; /* The Schemas schemas */ williamr@4: xmlSchemaValidCtxtPtr xsdValidCtxt;/* The Schemas validation context */ williamr@4: int xsdValidErrors;/* The number of errors detected */ williamr@4: xmlSchemaSAXPlugPtr xsdPlug; /* the schemas plug in SAX pipeline */ williamr@4: #endif williamr@4: #ifdef LIBXML_XINCLUDE_ENABLED williamr@4: /* Handling of XInclude processing */ williamr@4: int xinclude; /* is xinclude asked for */ williamr@4: const xmlChar* xinclude_name; /* the xinclude name from dict */ williamr@4: xmlXIncludeCtxtPtr xincctxt; /* the xinclude context */ williamr@4: int in_xinclude; /* counts for xinclude */ williamr@4: #endif williamr@4: #ifdef LIBXML_PATTERN_ENABLED williamr@4: int patternNr; /* number of preserve patterns */ williamr@4: int patternMax; /* max preserve patterns */ williamr@4: xmlPatternPtr* patternTab; /* array of preserve patterns */ williamr@4: #endif williamr@4: int preserves; /* level of preserves */ williamr@4: int parserFlags; /* the set of options set */ williamr@4: /* Structured error handling */ williamr@4: xmlStructuredErrorFunc sErrorFunc; /* callback function */ williamr@4: }; williamr@4: williamr@4: /* williamr@4: * Constructors & Destructor williamr@4: */ williamr@4: XMLPUBFUN xmlTextReaderPtr XMLCALL williamr@4: xmlNewTextReader (xmlParserInputBufferPtr input, williamr@4: const char *URI); williamr@4: XMLPUBFUN xmlTextReaderPtr XMLCALL williamr@4: xmlNewTextReaderFilename(const char *URI); williamr@4: XMLPUBFUN void XMLCALL williamr@4: xmlFreeTextReader (xmlTextReaderPtr reader); williamr@4: williamr@4: /* williamr@4: * Iterators williamr@4: */ williamr@4: XMLPUBFUN int XMLCALL williamr@4: xmlTextReaderRead (xmlTextReaderPtr reader); williamr@4: XMLPUBFUN xmlChar * XMLCALL williamr@4: xmlTextReaderReadInnerXml (xmlTextReaderPtr reader); williamr@4: XMLPUBFUN xmlChar * XMLCALL williamr@4: xmlTextReaderReadOuterXml (xmlTextReaderPtr reader); williamr@4: XMLPUBFUN xmlChar * XMLCALL williamr@4: xmlTextReaderReadString (xmlTextReaderPtr reader); williamr@4: XMLPUBFUN int XMLCALL williamr@4: xmlTextReaderReadAttributeValue (xmlTextReaderPtr reader); williamr@4: williamr@4: /* williamr@4: * Attributes of the node williamr@4: */ williamr@4: XMLPUBFUN int XMLCALL williamr@4: xmlTextReaderAttributeCount(xmlTextReaderPtr reader); williamr@4: XMLPUBFUN int XMLCALL williamr@4: xmlTextReaderDepth (xmlTextReaderPtr reader); williamr@4: XMLPUBFUN int XMLCALL williamr@4: xmlTextReaderHasAttributes(xmlTextReaderPtr reader); williamr@4: XMLPUBFUN int XMLCALL williamr@4: xmlTextReaderHasValue(xmlTextReaderPtr reader); williamr@4: XMLPUBFUN int XMLCALL williamr@4: xmlTextReaderIsDefault (xmlTextReaderPtr reader); williamr@4: XMLPUBFUN int XMLCALL williamr@4: xmlTextReaderIsEmptyElement(xmlTextReaderPtr reader); williamr@4: XMLPUBFUN int XMLCALL williamr@4: xmlTextReaderNodeType (xmlTextReaderPtr reader); williamr@4: XMLPUBFUN int XMLCALL williamr@4: xmlTextReaderQuoteChar (xmlTextReaderPtr reader); williamr@4: XMLPUBFUN int XMLCALL williamr@4: xmlTextReaderReadState (xmlTextReaderPtr reader); williamr@4: XMLPUBFUN int XMLCALL williamr@4: xmlTextReaderIsNamespaceDecl(xmlTextReaderPtr reader); williamr@4: williamr@4: XMLPUBFUN const xmlChar * XMLCALL williamr@4: xmlTextReaderConstBaseUri (xmlTextReaderPtr reader); williamr@4: XMLPUBFUN const xmlChar * XMLCALL williamr@4: xmlTextReaderConstLocalName (xmlTextReaderPtr reader); williamr@4: XMLPUBFUN const xmlChar * XMLCALL williamr@4: xmlTextReaderConstName (xmlTextReaderPtr reader); williamr@4: XMLPUBFUN const xmlChar * XMLCALL williamr@4: xmlTextReaderConstNamespaceUri(xmlTextReaderPtr reader); williamr@4: XMLPUBFUN const xmlChar * XMLCALL williamr@4: xmlTextReaderConstPrefix (xmlTextReaderPtr reader); williamr@4: XMLPUBFUN const xmlChar * XMLCALL williamr@4: xmlTextReaderConstXmlLang (xmlTextReaderPtr reader); williamr@4: XMLPUBFUN const xmlChar * XMLCALL williamr@4: xmlTextReaderConstString (xmlTextReaderPtr reader, williamr@4: const xmlChar *str); williamr@4: XMLPUBFUN const xmlChar * XMLCALL williamr@4: xmlTextReaderConstValue (xmlTextReaderPtr reader); williamr@4: williamr@4: /* williamr@4: * use the Const version of the routine for williamr@4: * better performance and simpler code williamr@4: */ williamr@4: XMLPUBFUN xmlChar * XMLCALL williamr@4: xmlTextReaderBaseUri (xmlTextReaderPtr reader); williamr@4: XMLPUBFUN xmlChar * XMLCALL williamr@4: xmlTextReaderLocalName (xmlTextReaderPtr reader); williamr@4: XMLPUBFUN xmlChar * XMLCALL williamr@4: xmlTextReaderName (xmlTextReaderPtr reader); williamr@4: XMLPUBFUN xmlChar * XMLCALL williamr@4: xmlTextReaderNamespaceUri(xmlTextReaderPtr reader); williamr@4: XMLPUBFUN xmlChar * XMLCALL williamr@4: xmlTextReaderPrefix (xmlTextReaderPtr reader); williamr@4: XMLPUBFUN xmlChar * XMLCALL williamr@4: xmlTextReaderXmlLang (xmlTextReaderPtr reader); williamr@4: XMLPUBFUN xmlChar * XMLCALL williamr@4: xmlTextReaderValue (xmlTextReaderPtr reader); williamr@4: williamr@4: /* williamr@4: * Methods of the XmlTextReader williamr@4: */ williamr@4: XMLPUBFUN int XMLCALL williamr@4: xmlTextReaderClose (xmlTextReaderPtr reader); williamr@4: XMLPUBFUN xmlChar * XMLCALL williamr@4: xmlTextReaderGetAttributeNo (xmlTextReaderPtr reader, williamr@4: int no); williamr@4: XMLPUBFUN xmlChar * XMLCALL williamr@4: xmlTextReaderGetAttribute (xmlTextReaderPtr reader, williamr@4: const xmlChar *name); williamr@4: XMLPUBFUN xmlChar * XMLCALL williamr@4: xmlTextReaderGetAttributeNs (xmlTextReaderPtr reader, williamr@4: const xmlChar *localName, williamr@4: const xmlChar *namespaceURI); williamr@4: XMLPUBFUN xmlParserInputBufferPtr XMLCALL williamr@4: xmlTextReaderGetRemainder (xmlTextReaderPtr reader); williamr@4: XMLPUBFUN xmlChar * XMLCALL williamr@4: xmlTextReaderLookupNamespace(xmlTextReaderPtr reader, williamr@4: const xmlChar *prefix); williamr@4: XMLPUBFUN int XMLCALL williamr@4: xmlTextReaderMoveToAttributeNo(xmlTextReaderPtr reader, williamr@4: int no); williamr@4: XMLPUBFUN int XMLCALL williamr@4: xmlTextReaderMoveToAttribute(xmlTextReaderPtr reader, williamr@4: const xmlChar *name); williamr@4: XMLPUBFUN int XMLCALL williamr@4: xmlTextReaderMoveToAttributeNs(xmlTextReaderPtr reader, williamr@4: const xmlChar *localName, williamr@4: const xmlChar *namespaceURI); williamr@4: XMLPUBFUN int XMLCALL williamr@4: xmlTextReaderMoveToFirstAttribute(xmlTextReaderPtr reader); williamr@4: XMLPUBFUN int XMLCALL williamr@4: xmlTextReaderMoveToNextAttribute(xmlTextReaderPtr reader); williamr@4: XMLPUBFUN int XMLCALL williamr@4: xmlTextReaderMoveToElement (xmlTextReaderPtr reader); williamr@4: XMLPUBFUN int XMLCALL williamr@4: xmlTextReaderNormalization (xmlTextReaderPtr reader); williamr@4: XMLPUBFUN const xmlChar * XMLCALL williamr@4: xmlTextReaderConstEncoding (xmlTextReaderPtr reader); williamr@4: williamr@4: /* williamr@4: * Extensions williamr@4: */ williamr@4: XMLPUBFUN int XMLCALL williamr@4: xmlTextReaderSetParserProp (xmlTextReaderPtr reader, williamr@4: int prop, williamr@4: int value); williamr@4: XMLPUBFUN int XMLCALL williamr@4: xmlTextReaderGetParserProp (xmlTextReaderPtr reader, williamr@4: int prop); williamr@4: XMLPUBFUN xmlNodePtr XMLCALL williamr@4: xmlTextReaderCurrentNode (xmlTextReaderPtr reader); williamr@4: XMLPUBFUN int XMLCALL williamr@4: xmlTextReaderGetParserLineNumber(xmlTextReaderPtr reader); williamr@4: williamr@4: XMLPUBFUN int XMLCALL williamr@4: xmlTextReaderGetParserColumnNumber(xmlTextReaderPtr reader); williamr@4: williamr@4: XMLPUBFUN xmlNodePtr XMLCALL williamr@4: xmlTextReaderPreserve (xmlTextReaderPtr reader); williamr@4: #ifdef LIBXML_PATTERN_ENABLED williamr@4: XMLPUBFUN int XMLCALL williamr@4: xmlTextReaderPreservePattern(xmlTextReaderPtr reader, williamr@4: const xmlChar *pattern, williamr@4: const xmlChar **namespaces); williamr@4: #endif /* LIBXML_PATTERN_ENABLED */ williamr@4: XMLPUBFUN xmlDocPtr XMLCALL williamr@4: xmlTextReaderCurrentDoc (xmlTextReaderPtr reader); williamr@4: XMLPUBFUN xmlNodePtr XMLCALL williamr@4: xmlTextReaderExpand (xmlTextReaderPtr reader); williamr@4: XMLPUBFUN int XMLCALL williamr@4: xmlTextReaderNext (xmlTextReaderPtr reader); williamr@4: XMLPUBFUN int XMLCALL williamr@4: xmlTextReaderNextSibling (xmlTextReaderPtr reader); williamr@4: XMLPUBFUN int XMLCALL williamr@4: xmlTextReaderIsValid (xmlTextReaderPtr reader); williamr@4: #ifdef LIBXML_SCHEMAS_ENABLED williamr@4: XMLPUBFUN int XMLCALL williamr@4: xmlTextReaderRelaxNGValidate(xmlTextReaderPtr reader, williamr@4: const char *rng); williamr@4: XMLPUBFUN int XMLCALL williamr@4: xmlTextReaderRelaxNGSetSchema(xmlTextReaderPtr reader, williamr@4: xmlRelaxNGPtr schema); williamr@4: XMLPUBFUN int XMLCALL williamr@4: xmlTextReaderSchemaValidate (xmlTextReaderPtr reader, williamr@4: const char *xsd); williamr@4: XMLPUBFUN int XMLCALL williamr@4: xmlTextReaderSetSchema (xmlTextReaderPtr reader, williamr@4: xmlSchemaPtr schema); williamr@4: #endif williamr@4: XMLPUBFUN const xmlChar * XMLCALL williamr@4: xmlTextReaderConstXmlVersion(xmlTextReaderPtr reader); williamr@4: XMLPUBFUN int XMLCALL williamr@4: xmlTextReaderStandalone (xmlTextReaderPtr reader); williamr@4: williamr@4: williamr@4: /* williamr@4: * Index lookup williamr@4: */ williamr@4: XMLPUBFUN long XMLCALL williamr@4: xmlTextReaderByteConsumed (xmlTextReaderPtr reader); williamr@4: williamr@4: /* williamr@4: * New more complete APIs for simpler creation and reuse of readers williamr@4: */ williamr@4: XMLPUBFUN xmlTextReaderPtr XMLCALL williamr@4: xmlReaderWalker (xmlDocPtr doc); williamr@4: XMLPUBFUN xmlTextReaderPtr XMLCALL williamr@4: xmlReaderForDoc (const xmlChar * cur, williamr@4: const char *URL, williamr@4: const char *encoding, williamr@4: int options); williamr@4: XMLPUBFUN xmlTextReaderPtr XMLCALL williamr@4: xmlReaderForFile (const char *filename, williamr@4: const char *encoding, williamr@4: int options); williamr@4: XMLPUBFUN xmlTextReaderPtr XMLCALL williamr@4: xmlReaderForMemory (const char *buffer, williamr@4: int size, williamr@4: const char *URL, williamr@4: const char *encoding, williamr@4: int options); williamr@4: XMLPUBFUN xmlTextReaderPtr XMLCALL williamr@4: xmlReaderForFd (int fd, williamr@4: const char *URL, williamr@4: const char *encoding, williamr@4: int options); williamr@4: XMLPUBFUN xmlTextReaderPtr XMLCALL williamr@4: xmlReaderForIO (xmlInputReadCallback ioread, williamr@4: xmlInputCloseCallback ioclose, williamr@4: void *ioctx, williamr@4: const char *URL, williamr@4: const char *encoding, williamr@4: int options); williamr@4: williamr@4: XMLPUBFUN int XMLCALL williamr@4: xmlReaderNewWalker (xmlTextReaderPtr reader, williamr@4: xmlDocPtr doc); williamr@4: XMLPUBFUN int XMLCALL williamr@4: xmlReaderNewDoc (xmlTextReaderPtr reader, williamr@4: const xmlChar * cur, williamr@4: const char *URL, williamr@4: const char *encoding, williamr@4: int options); williamr@4: XMLPUBFUN int XMLCALL williamr@4: xmlReaderNewFile (xmlTextReaderPtr reader, williamr@4: const char *filename, williamr@4: const char *encoding, williamr@4: int options); williamr@4: XMLPUBFUN int XMLCALL williamr@4: xmlReaderNewMemory (xmlTextReaderPtr reader, williamr@4: const char *buffer, williamr@4: int size, williamr@4: const char *URL, williamr@4: const char *encoding, williamr@4: int options); williamr@4: XMLPUBFUN int XMLCALL williamr@4: xmlReaderNewFd (xmlTextReaderPtr reader, williamr@4: int fd, williamr@4: const char *URL, williamr@4: const char *encoding, williamr@4: int options); williamr@4: XMLPUBFUN int XMLCALL williamr@4: xmlReaderNewIO (xmlTextReaderPtr reader, williamr@4: xmlInputReadCallback ioread, williamr@4: xmlInputCloseCallback ioclose, williamr@4: void *ioctx, williamr@4: const char *URL, williamr@4: const char *encoding, williamr@4: int options); williamr@4: williamr@4: // typedefs moved in the beginning of the header williamr@4: williamr@4: #ifdef LIBXML_ENABLE_NODE_LINEINFO williamr@4: XMLPUBFUN int XMLCALL williamr@4: xmlTextReaderLocatorLineNumber(xmlTextReaderLocatorPtr locator); williamr@4: #endif /* LIBXML_ENABLE_NODE_LINEINFO */ williamr@4: williamr@4: XMLPUBFUN xmlChar * XMLCALL williamr@4: xmlTextReaderLocatorBaseURI (xmlTextReaderLocatorPtr locator); williamr@4: XMLPUBFUN void XMLCALL williamr@4: xmlTextReaderSetErrorHandler(xmlTextReaderPtr reader, williamr@4: xmlTextReaderErrorFunc f, williamr@4: void *arg); williamr@4: XMLPUBFUN void XMLCALL williamr@4: xmlTextReaderSetStructuredErrorHandler(xmlTextReaderPtr reader, williamr@4: xmlStructuredErrorFunc f, williamr@4: void *arg); williamr@4: XMLPUBFUN void XMLCALL williamr@4: xmlTextReaderGetErrorHandler(xmlTextReaderPtr reader, williamr@4: xmlTextReaderErrorFunc *f, williamr@4: void **arg); williamr@4: williamr@4: #ifdef __cplusplus williamr@4: } williamr@4: #endif williamr@4: williamr@4: #endif /* LIBXML_READER_ENABLED */ williamr@4: williamr@4: #endif /* XML_XMLREADER_H */ williamr@4: