1998-08-13 07:39:55 +04:00
/*
* parser . h : constants and stuff related to the XML parser .
*
* See Copyright for the status of this software .
*
1999-01-17 22:11:59 +03:00
* Daniel . Veillard @ w3 . org
1998-08-13 07:39:55 +04:00
*/
# ifndef __XML_PARSER_H__
# define __XML_PARSER_H__
# include "tree.h"
# ifdef __cplusplus
extern " C " {
# endif
/*
* Constants .
*/
# define XML_DEFAULT_VERSION "1.0"
1999-03-01 00:54:31 +03:00
typedef void ( * xmlParserInputDeallocate ) ( CHAR * ) ;
1998-08-13 07:39:55 +04:00
typedef struct xmlParserInput {
const char * filename ; /* The file analyzed, if any */
const CHAR * base ; /* Base of the array to parse */
const CHAR * cur ; /* Current char being parsed */
int line ; /* Current line */
int col ; /* Current column */
1999-03-01 00:54:31 +03:00
xmlParserInputDeallocate free ; /* function to deallocate the base */
1999-02-22 13:33:01 +03:00
} xmlParserInput ;
typedef xmlParserInput * xmlParserInputPtr ;
1998-08-13 07:39:55 +04:00
1999-02-22 13:33:01 +03:00
typedef struct _xmlParserNodeInfo {
1998-08-13 07:39:55 +04:00
const struct xmlNode * node ;
/* Position & line # that text that created the node begins & ends on */
unsigned long begin_pos ;
unsigned long begin_line ;
unsigned long end_pos ;
unsigned long end_line ;
1999-02-22 13:33:01 +03:00
} _xmlParserNodeInfo ;
typedef _xmlParserNodeInfo xmlParserNodeInfo ;
1998-08-13 07:39:55 +04:00
typedef struct xmlParserNodeInfoSeq {
unsigned long maximum ;
unsigned long length ;
xmlParserNodeInfo * buffer ;
1999-02-22 13:33:01 +03:00
} _xmlParserNodeInfoSeq ;
typedef _xmlParserNodeInfoSeq xmlParserNodeInfoSeq ;
typedef xmlParserNodeInfoSeq * xmlParserNodeInfoSeqPtr ;
1998-08-13 07:39:55 +04:00
1999-02-22 13:33:01 +03:00
typedef struct _xmlParserCtxt {
1998-08-13 07:39:55 +04:00
struct xmlSAXHandler * sax ; /* The SAX handler */
xmlDocPtr doc ; /* the document being built */
1999-01-17 22:11:59 +03:00
int wellFormed ; /* is the document well formed */
1998-08-13 07:39:55 +04:00
/* Input stream stack */
xmlParserInputPtr input ; /* Current input stream */
int inputNr ; /* Number of current input streams */
int inputMax ; /* Max number of input streams */
xmlParserInputPtr * inputTab ; /* stack of inputs */
/* Node analysis stack */
xmlNodePtr node ; /* Current parsed Node */
int nodeNr ; /* Depth of the parsing stack */
int nodeMax ; /* Max depth of the parsing stack */
xmlNodePtr * nodeTab ; /* array of nodes */
int record_info ; /* Whether node info should be kept */
xmlParserNodeInfoSeq node_seq ; /* info about each node parsed */
1999-02-22 13:33:01 +03:00
} _xmlParserCtxt ;
typedef _xmlParserCtxt xmlParserCtxt ;
typedef xmlParserCtxt * xmlParserCtxtPtr ;
1998-08-13 07:39:55 +04:00
/*
* a SAX Locator .
*/
typedef struct xmlSAXLocator {
const CHAR * ( * getPublicId ) ( xmlParserCtxtPtr ctxt ) ;
const CHAR * ( * getSystemId ) ( xmlParserCtxtPtr ctxt ) ;
int ( * getLineNumber ) ( xmlParserCtxtPtr ctxt ) ;
int ( * getColumnNumber ) ( xmlParserCtxtPtr ctxt ) ;
1999-02-22 13:33:01 +03:00
} _xmlSAXLocator ;
typedef _xmlSAXLocator xmlSAXLocator ;
typedef xmlSAXLocator * xmlSAXLocatorPtr ;
1998-08-13 07:39:55 +04:00
/*
* a SAX Exception .
*/
typedef xmlParserInputPtr ( * resolveEntitySAXFunc ) ( xmlParserCtxtPtr ctxt ,
const CHAR * publicId , const CHAR * systemId ) ;
typedef void ( * notationDeclSAXFunc ) ( xmlParserCtxtPtr ctxt , const CHAR * name ,
const CHAR * publicId , const CHAR * systemId ) ;
typedef void ( * unparsedEntityDeclSAXFunc ) ( xmlParserCtxtPtr ctxt ,
const CHAR * name , const CHAR * publicId ,
const CHAR * systemId , const CHAR * notationName ) ;
typedef void ( * setDocumentLocatorSAXFunc ) ( xmlParserCtxtPtr ctxt ,
xmlSAXLocatorPtr loc ) ;
typedef void ( * startDocumentSAXFunc ) ( xmlParserCtxtPtr ctxt ) ;
typedef void ( * endDocumentSAXFunc ) ( xmlParserCtxtPtr ctxt ) ;
typedef void ( * startElementSAXFunc ) ( xmlParserCtxtPtr ctxt , const CHAR * name ) ;
typedef void ( * endElementSAXFunc ) ( xmlParserCtxtPtr ctxt , const CHAR * name ) ;
1998-10-24 22:27:49 +04:00
typedef void ( * attributeSAXFunc ) ( xmlParserCtxtPtr ctxt , const CHAR * name ,
const CHAR * value ) ;
1998-08-13 07:39:55 +04:00
typedef void ( * charactersSAXFunc ) ( xmlParserCtxtPtr ctxt , const CHAR * ch ,
int start , int len ) ;
typedef void ( * ignorableWhitespaceSAXFunc ) ( xmlParserCtxtPtr ctxt ,
const CHAR * ch , int start , int len ) ;
typedef void ( * processingInstructionSAXFunc ) ( xmlParserCtxtPtr ctxt ,
const CHAR * target , const CHAR * data ) ;
typedef void ( * warningSAXFunc ) ( xmlParserCtxtPtr ctxt , const char * msg , . . . ) ;
typedef void ( * errorSAXFunc ) ( xmlParserCtxtPtr ctxt , const char * msg , . . . ) ;
typedef void ( * fatalErrorSAXFunc ) ( xmlParserCtxtPtr ctxt , const char * msg , . . . ) ;
typedef struct xmlSAXHandler {
resolveEntitySAXFunc resolveEntity ;
notationDeclSAXFunc notationDecl ;
unparsedEntityDeclSAXFunc unparsedEntityDecl ;
setDocumentLocatorSAXFunc setDocumentLocator ;
startDocumentSAXFunc startDocument ;
endDocumentSAXFunc endDocument ;
startElementSAXFunc startElement ;
endElementSAXFunc endElement ;
1998-10-24 22:27:49 +04:00
attributeSAXFunc attribute ;
1998-08-13 07:39:55 +04:00
charactersSAXFunc characters ;
ignorableWhitespaceSAXFunc ignorableWhitespace ;
processingInstructionSAXFunc processingInstruction ;
warningSAXFunc warning ;
errorSAXFunc error ;
fatalErrorSAXFunc fatalError ;
1999-02-22 13:33:01 +03:00
} xmlSAXHandler ;
typedef xmlSAXHandler * xmlSAXHandlerPtr ;
1998-08-13 07:39:55 +04:00
/*
* Global variables : just the SAX interface tables we are looking for full
* reentrancy of the code !
*/
1998-09-23 04:49:46 +04:00
extern xmlSAXLocator xmlDefaultSAXLocator ;
extern xmlSAXHandler xmlDefaultSAXHandler ;
1998-08-13 07:39:55 +04:00
1998-10-27 09:21:04 +03:00
# include "entities.h"
1999-03-05 09:26:45 +03:00
# include "xml-error.h"
1998-10-27 09:21:04 +03:00
1998-08-13 07:39:55 +04:00
/*
1999-01-17 22:11:59 +03:00
* CHAR handling
1998-08-13 07:39:55 +04:00
*/
1999-02-22 13:33:01 +03:00
CHAR * xmlStrdup ( const CHAR * cur ) ;
CHAR * xmlStrndup ( const CHAR * cur , int len ) ;
CHAR * xmlStrchr ( const CHAR * str , CHAR val ) ;
int xmlStrcmp ( const CHAR * str1 , const CHAR * str2 ) ;
int xmlStrncmp ( const CHAR * str1 , const CHAR * str2 , int len ) ;
int xmlStrlen ( const CHAR * str ) ;
CHAR * xmlStrcat ( CHAR * cur , const CHAR * add ) ;
CHAR * xmlStrncat ( CHAR * cur , const CHAR * add , int len ) ;
1998-08-13 07:39:55 +04:00
1999-01-17 22:11:59 +03:00
/*
* Interfaces
*/
1999-02-22 13:33:01 +03:00
xmlDocPtr xmlParseDoc ( CHAR * cur ) ;
xmlDocPtr xmlParseMemory ( char * buffer , int size ) ;
xmlDocPtr xmlParseFile ( const char * filename ) ;
1999-01-17 22:11:59 +03:00
/*
* Recovery mode
*/
1999-02-22 13:33:01 +03:00
xmlDocPtr xmlRecoverDoc ( CHAR * cur ) ;
xmlDocPtr xmlRecoverMemory ( char * buffer , int size ) ;
xmlDocPtr xmlRecoverFile ( const char * filename ) ;
1999-01-17 22:11:59 +03:00
/*
* Internal routines
*/
1999-02-22 13:33:01 +03:00
int xmlParseDocument ( xmlParserCtxtPtr ctxt ) ;
xmlDocPtr xmlSAXParseDoc ( xmlSAXHandlerPtr sax , CHAR * cur , int recovery ) ;
xmlDocPtr xmlSAXParseMemory ( xmlSAXHandlerPtr sax , char * buffer ,
1999-01-17 22:11:59 +03:00
int size , int recovery ) ;
1999-02-22 13:33:01 +03:00
xmlDocPtr xmlSAXParseFile ( xmlSAXHandlerPtr sax , const char * filename ,
1999-01-17 22:11:59 +03:00
int recovery ) ;
1999-02-22 13:33:01 +03:00
void xmlInitParserCtxt ( xmlParserCtxtPtr ctxt ) ;
void xmlClearParserCtxt ( xmlParserCtxtPtr ctxt ) ;
void xmlSetupParserForBuffer ( xmlParserCtxtPtr ctxt , const CHAR * buffer ,
1998-08-13 07:39:55 +04:00
const char * filename ) ;
1999-02-22 13:33:01 +03:00
const xmlParserNodeInfo * xmlParserFindNodeInfo ( const xmlParserCtxt * ctxt ,
const xmlNode * node ) ;
void xmlInitNodeInfoSeq ( xmlParserNodeInfoSeqPtr seq ) ;
void xmlClearNodeInfoSeq ( xmlParserNodeInfoSeqPtr seq ) ;
1998-08-13 07:39:55 +04:00
unsigned long xmlParserFindNodeInfoIndex ( const xmlParserNodeInfoSeq * seq ,
const xmlNode * node ) ;
1999-02-22 13:33:01 +03:00
void xmlParserAddNodeInfo ( xmlParserCtxtPtr ctxt ,
const xmlParserNodeInfo * info ) ;
1998-08-13 07:39:55 +04:00
1999-02-22 13:33:01 +03:00
void xmlDefaultSAXHandlerInit ( void ) ;
1998-08-13 07:39:55 +04:00
# ifdef __cplusplus
}
# endif
# endif /* __XML_PARSER_H__ */