Annotation of XML/parser.h, revision 1.17

1.1       veillard    1: /*
                      2:  * parser.h : constants and stuff related to the XML parser.
1.6       veillard    3:  *
                      4:  * See Copyright for the status of this software.
                      5:  *
1.17    ! daniel      6:  * $Id: parser.h,v 1.16 1998/08/08 22:25:21 daniel Exp $
1.1       veillard    7:  */
                      8: 
                      9: #ifndef __XML_PARSER_H__
                     10: #define __XML_PARSER_H__
                     11: 
1.2       veillard   12: #include "tree.h"
                     13: 
1.7       daniel     14: #ifdef __cplusplus
                     15: extern "C" {
                     16: #endif
                     17: 
1.1       veillard   18: /*
                     19:  * Constants.
                     20:  */
                     21: #define XML_DEFAULT_VERSION    "1.0"
                     22: 
1.14      daniel     23: typedef struct xmlParserInput {
                     24:     const char *filename;             /* The file analyzed, if any */
                     25:     const CHAR *base;                 /* Base of the array to parse */
                     26:     const CHAR *cur;                  /* Current char being parsed */
                     27:     int line;                         /* Current line */
                     28:     int col;                          /* Current column */
                     29: } xmlParserInput, *xmlParserInputPtr;
1.7       daniel     30: 
1.13      daniel     31: typedef struct xmlParserNodeInfo {
                     32:   const struct xmlNode* node;
                     33:   /* Position & line # that text that created the node begins & ends on */
                     34:   unsigned long begin_pos;
                     35:   unsigned long begin_line;
                     36:   unsigned long end_pos;
                     37:   unsigned long end_line;
                     38: } xmlParserNodeInfo;
                     39: 
                     40: typedef struct xmlParserNodeInfoSeq {
                     41:   unsigned long maximum;
                     42:   unsigned long length;
                     43:   xmlParserNodeInfo* buffer;
                     44: } xmlParserNodeInfoSeq, *xmlParserNodeInfoSeqPtr;
                     45: 
1.7       daniel     46: typedef struct xmlParserCtxt {
1.17    ! daniel     47:     struct xmlSAXHandler *sax;        /* The SAX handler */
1.16      daniel     48:     xmlDocPtr doc;                    /* the document being built */
                     49: 
1.14      daniel     50:     /* Input stream stack */
1.15      daniel     51:     xmlParserInputPtr  input;         /* Current input stream */
1.14      daniel     52:     int                inputNr;       /* Number of current input streams */
                     53:     int                inputMax;      /* Max number of input streams */
                     54:     xmlParserInputPtr *inputTab;      /* stack of inputs */
1.15      daniel     55: 
                     56:     /* Node analysis stack */
                     57:     xmlNodePtr         node;          /* Current parsed Node */
                     58:     int                nodeNr;        /* Depth of the parsing stack */
                     59:     int                nodeMax;       /* Max depth of the parsing stack */
                     60:     xmlNodePtr        *nodeTab;       /* array of nodes */
1.14      daniel     61: 
1.13      daniel     62:     int record_info;                  /* Whether node info should be kept */
                     63:     xmlParserNodeInfoSeq node_seq;    /* info about each node parsed */
1.7       daniel     64: } xmlParserCtxt, *xmlParserCtxtPtr;
                     65: 
                     66: /*
1.17    ! daniel     67:  * a SAX Locator.
        !            68:  */
        !            69: 
        !            70: typedef struct xmlSAXLocator {
        !            71:     const CHAR *(*getPublicId)(xmlParserCtxtPtr ctxt);
        !            72:     const CHAR *(*getSystemId)(xmlParserCtxtPtr ctxt);
        !            73:     int (*getLineNumber)(xmlParserCtxtPtr ctxt);
        !            74:     int (*getColumnNumber)(xmlParserCtxtPtr ctxt);
        !            75: } xmlSAXLocator, *xmlSAXLocatorPtr;
        !            76: 
        !            77: /*
        !            78:  * a SAX Exception.
        !            79:  */
        !            80: 
        !            81: typedef struct xmlSAXHandler {
        !            82:     xmlParserInputPtr (*resolveEntity)(xmlParserCtxtPtr ctxt, 
        !            83:                                const CHAR *publicId, const CHAR *systemId);
        !            84:     void (*notationDecl)(xmlParserCtxtPtr ctxt, const CHAR *name,
        !            85:                         const CHAR *publicId, const CHAR *systemId);
        !            86:     void (*unparsedEntityDecl)(xmlParserCtxtPtr ctxt, const CHAR *name,
        !            87:                               const CHAR *publicId, const CHAR *systemId,
        !            88:                               const CHAR *notationName);
        !            89:     void (*setDocumentLocator) (xmlParserCtxtPtr ctxt, xmlSAXLocatorPtr loc);
        !            90:     void (*startDocument) (xmlParserCtxtPtr ctxt);
        !            91:     void (*endDocument) (xmlParserCtxtPtr ctxt);
        !            92:     void (*startElement) (xmlParserCtxtPtr ctxt, const CHAR *name);
        !            93:     void (*endElement) (xmlParserCtxtPtr ctxt, const CHAR *name);
        !            94:     void (*characters) (xmlParserCtxtPtr ctxt, const CHAR *ch,
        !            95:                         int start, int len);
        !            96:     void (*ignorableWhitespace) (xmlParserCtxtPtr ctxt,
        !            97:                                  const CHAR *ch, int start, int len);
        !            98:     void (*processingInstruction) (xmlParserCtxtPtr ctxt, const CHAR *target,
        !            99:                                    const CHAR *data);
        !           100:     void (*warning) (xmlParserCtxtPtr ctxt, const char *msg, ...);
        !           101:     void (*error) (xmlParserCtxtPtr ctxt, const char *msg, ...);
        !           102:     void (*fatalError) (xmlParserCtxtPtr ctxt, const char *msg, ...);
        !           103: } xmlSAXHandler, *xmlSAXHandlerPtr;
        !           104: 
        !           105: /*
        !           106:  * Global variables: just the SAX interface tables we are looking for full
        !           107:  *      reentrancy of the code !
        !           108:  */
        !           109: xmlSAXLocator xmlDefaultSAXLocator;
        !           110: xmlSAXHandler xmlDefaultSAXHandler;
        !           111: 
        !           112: /*
1.2       veillard  113:  * Interfaces
                    114:  */
1.9       daniel    115: extern int xmlParseDocument(xmlParserCtxtPtr ctxt);
1.2       veillard  116: extern xmlDocPtr xmlParseDoc(CHAR *cur);
1.11      daniel    117: extern xmlDocPtr xmlParseMemory(char *buffer, int size);
1.4       httpng    118: extern xmlDocPtr xmlParseFile(const char *filename);
1.3       httpng    119: extern CHAR *xmlStrdup(const CHAR *input);
                    120: extern CHAR *xmlStrndup(const CHAR *input, int n);
1.5       veillard  121: extern CHAR *xmlStrchr(const CHAR *str, CHAR val);
                    122: extern int xmlStrcmp(const CHAR *str1, const CHAR *str2);
                    123: extern int xmlStrncmp(const CHAR *str1, const CHAR *str2, int len);
1.9       daniel    124: 
                    125: extern void xmlInitParserCtxt(xmlParserCtxtPtr ctx);
                    126: extern void xmlClearParserCtxt(xmlParserCtxtPtr ctx);
                    127: extern void xmlSetupParserForBuffer(xmlParserCtxtPtr ctx, const CHAR* buffer,
                    128:                                     const char* filename);
                    129: 
1.12      daniel    130: extern void xmlParserError(xmlParserCtxtPtr ctxt, const char *msg, ...);
1.13      daniel    131: 
                    132: extern const xmlParserNodeInfo* xmlParserFindNodeInfo(const xmlParserCtxt* c,
                    133:                                                       const xmlNode* node);
                    134: extern void xmlInitNodeInfoSeq(xmlParserNodeInfoSeqPtr seq);
                    135: extern void xmlClearNodeInfoSeq(xmlParserNodeInfoSeqPtr seq);
                    136: unsigned long xmlParserFindNodeInfoIndex(const xmlParserNodeInfoSeq* seq,
                    137:                                          const xmlNode* node);
                    138: extern void xmlParserAddNodeInfo(xmlParserCtxtPtr ctx,
                    139:                                  const xmlParserNodeInfo* info);
1.7       daniel    140: 
1.17    ! daniel    141: extern void xmlParserWarning(xmlParserCtxtPtr ctxt, const char *msg, ...);
        !           142: extern void xmlParserError(xmlParserCtxtPtr ctxt, const char *msg, ...);
1.7       daniel    143: #ifdef __cplusplus
                    144: }
                    145: #endif
1.1       veillard  146: 
                    147: #endif /* __XML_PARSER_H__ */
                    148: 

Webmaster