/ lib / lxml / includes / xmlparser.pxd
xmlparser.pxd
  1  from libc.string cimport const_char
  2  
  3  from lxml.includes.tree cimport (
  4      xmlDoc, xmlNode, xmlDict, xmlDtd, xmlChar, const_xmlChar)
  5  from lxml.includes.tree cimport xmlInputReadCallback, xmlInputCloseCallback
  6  from lxml.includes.xmlerror cimport xmlError, xmlStructuredErrorFunc
  7  
  8  
  9  cdef extern from "libxml/parser.h":
 10      ctypedef void (*startElementNsSAX2Func)(void* ctx,
 11                                              const_xmlChar* localname,
 12                                              const_xmlChar* prefix,
 13                                              const_xmlChar* URI,
 14                                              int nb_namespaces,
 15                                              const_xmlChar** namespaces,
 16                                              int nb_attributes,
 17                                              int nb_defaulted,
 18                                              const_xmlChar** attributes)
 19  
 20      ctypedef void (*endElementNsSAX2Func)(void* ctx,
 21                                            const_xmlChar* localname,
 22                                            const_xmlChar* prefix,
 23                                            const_xmlChar* URI)
 24  
 25      ctypedef void (*startElementSAXFunc)(void* ctx, const_xmlChar* name, const_xmlChar** atts)
 26  
 27      ctypedef void (*endElementSAXFunc)(void* ctx, const_xmlChar* name)
 28  
 29      ctypedef void (*charactersSAXFunc)(void* ctx, const_xmlChar* ch, int len)
 30  
 31      ctypedef void (*cdataBlockSAXFunc)(void* ctx, const_xmlChar* value, int len)
 32  
 33      ctypedef void (*commentSAXFunc)(void* ctx, const_xmlChar* value)
 34  
 35      ctypedef void (*processingInstructionSAXFunc)(void* ctx, 
 36                                                    const_xmlChar* target,
 37                                                    const_xmlChar* data)
 38  
 39      ctypedef void (*internalSubsetSAXFunc)(void* ctx, 
 40                                              const_xmlChar* name,
 41                                              const_xmlChar* externalID,
 42                                              const_xmlChar* systemID)
 43  
 44      ctypedef void (*endDocumentSAXFunc)(void* ctx)
 45  
 46      ctypedef void (*startDocumentSAXFunc)(void* ctx)
 47  
 48      ctypedef void (*referenceSAXFunc)(void * ctx, const_xmlChar* name)
 49  
 50      cdef int XML_SAX2_MAGIC
 51  
 52  cdef extern from "libxml/tree.h":
 53      ctypedef struct xmlParserInput:
 54          int line
 55          int length
 56          const_xmlChar* base
 57          const_xmlChar* cur
 58          const_xmlChar* end
 59          const_char *filename
 60  
 61      ctypedef struct xmlParserInputBuffer:
 62          void* context
 63          xmlInputReadCallback  readcallback
 64          xmlInputCloseCallback closecallback
 65  
 66      ctypedef struct xmlSAXHandlerV1:
 67          # same as xmlSAXHandler, but without namespaces
 68          pass
 69  
 70      ctypedef struct xmlSAXHandler:
 71          internalSubsetSAXFunc           internalSubset
 72          startElementNsSAX2Func          startElementNs
 73          endElementNsSAX2Func            endElementNs
 74          startElementSAXFunc             startElement
 75          endElementSAXFunc               endElement
 76          charactersSAXFunc               characters
 77          cdataBlockSAXFunc               cdataBlock
 78          referenceSAXFunc                reference
 79          commentSAXFunc                  comment
 80          processingInstructionSAXFunc	processingInstruction
 81          startDocumentSAXFunc            startDocument
 82          endDocumentSAXFunc              endDocument
 83          int                             initialized
 84          xmlStructuredErrorFunc          serror
 85          void*                           _private
 86  
 87  
 88  cdef extern from "libxml/SAX2.h" nogil:
 89      cdef void xmlSAX2StartDocument(void* ctxt)
 90  
 91  
 92  cdef extern from "libxml/xmlIO.h" nogil:
 93      cdef xmlParserInputBuffer* xmlAllocParserInputBuffer(int enc)
 94  
 95  
 96  cdef extern from "libxml/parser.h":
 97  
 98      cdef xmlDict* xmlDictCreate() nogil
 99      cdef xmlDict* xmlDictCreateSub(xmlDict* subdict) nogil
100      cdef void xmlDictFree(xmlDict* sub) nogil
101      cdef int xmlDictReference(xmlDict* dict) nogil
102      
103      cdef int XML_COMPLETE_ATTRS  # SAX option for adding DTD default attributes
104      cdef int XML_SKIP_IDS        # SAX option for not building an XML ID dict
105  
106      ctypedef enum xmlParserInputState:
107          XML_PARSER_EOF = -1  # nothing is to be parsed
108          XML_PARSER_START = 0  # nothing has been parsed
109          XML_PARSER_MISC = 1  # Misc* before int subset
110          XML_PARSER_PI = 2  # Within a processing instruction
111          XML_PARSER_DTD = 3  # within some DTD content
112          XML_PARSER_PROLOG = 4  # Misc* after internal subset
113          XML_PARSER_COMMENT = 5  # within a comment
114          XML_PARSER_START_TAG = 6  # within a start tag
115          XML_PARSER_CONTENT = 7  # within the content
116          XML_PARSER_CDATA_SECTION = 8  # within a CDATA section
117          XML_PARSER_END_TAG = 9  # within a closing tag
118          XML_PARSER_ENTITY_DECL = 10  # within an entity declaration
119          XML_PARSER_ENTITY_VALUE = 11  # within an entity value in a decl
120          XML_PARSER_ATTRIBUTE_VALUE = 12  # within an attribute value
121          XML_PARSER_SYSTEM_LITERAL = 13  # within a SYSTEM value
122          XML_PARSER_EPILOG = 14  # the Misc* after the last end tag
123          XML_PARSER_IGNORE = 15  # within an IGNORED section
124          XML_PARSER_PUBLIC_LITERAL = 16  # within a PUBLIC value
125  
126  
127      ctypedef struct xmlParserCtxt:
128          xmlDoc* myDoc
129          xmlDict* dict
130          int dictNames
131          void* _private
132          bint wellFormed
133          bint recovery
134          int options
135          bint disableSAX
136          int errNo
137          xmlParserInputState instate
138          bint replaceEntities
139          int loadsubset  # != 0 if enabled, int value == why
140          bint validate
141          xmlError lastError
142          xmlNode* node
143          xmlSAXHandler* sax
144          void* userData
145          int* spaceTab
146          int spaceMax
147          int nsNr
148          bint html
149          bint progressive
150          int inSubset
151          int charset
152          xmlParserInput* input
153  
154      ctypedef enum xmlParserOption:
155          XML_PARSE_RECOVER = 1 # recover on errors
156          XML_PARSE_NOENT = 2 # substitute entities
157          XML_PARSE_DTDLOAD = 4 # load the external subset
158          XML_PARSE_DTDATTR = 8 # default DTD attributes
159          XML_PARSE_DTDVALID = 16 # validate with the DTD
160          XML_PARSE_NOERROR = 32 # suppress error reports
161          XML_PARSE_NOWARNING = 64 # suppress warning reports
162          XML_PARSE_PEDANTIC = 128 # pedantic error reporting
163          XML_PARSE_NOBLANKS = 256 # remove blank nodes
164          XML_PARSE_SAX1 = 512 # use the SAX1 interface internally
165          XML_PARSE_XINCLUDE = 1024 # Implement XInclude substitution
166          XML_PARSE_NONET = 2048 # Forbid network access
167          XML_PARSE_NODICT = 4096 # Do not reuse the context dictionary
168          XML_PARSE_NSCLEAN = 8192 # remove redundant namespaces declarations
169          XML_PARSE_NOCDATA = 16384 # merge CDATA as text nodes
170          XML_PARSE_NOXINCNODE = 32768 # do not generate XINCLUDE START/END nodes
171          # libxml2 2.6.21+ only:
172          XML_PARSE_COMPACT = 65536 # compact small text nodes
173          # libxml2 2.7.0+ only:
174          XML_PARSE_OLD10 = 131072 # parse using XML-1.0 before update 5
175          XML_PARSE_NOBASEFIX = 262144 # do not fixup XINCLUDE xml:base uris
176          XML_PARSE_HUGE = 524288 # relax any hardcoded limit from the parser
177          # libxml2 2.7.3+ only:
178          XML_PARSE_OLDSAX = 1048576 # parse using SAX2 interface before 2.7.0
179          # libxml2 2.8.0+ only:
180          XML_PARSE_IGNORE_ENC = 2097152 # ignore internal document encoding hint
181          # libxml2 2.9.0+ only:
182          XML_PARSE_BIG_LINES = 4194304 # Store big lines numbers in text PSVI field
183  
184      cdef void xmlInitParser() nogil
185      cdef void xmlCleanupParser() nogil
186  
187      cdef int xmlLineNumbersDefault(int onoff) nogil
188      cdef xmlParserCtxt* xmlNewParserCtxt() nogil
189      cdef xmlParserInput* xmlNewIOInputStream(xmlParserCtxt* ctxt,
190                                               xmlParserInputBuffer* input,
191                                               int enc) nogil
192      cdef int xmlCtxtUseOptions(xmlParserCtxt* ctxt, int options) nogil
193      cdef void xmlFreeParserCtxt(xmlParserCtxt* ctxt) nogil
194      cdef void xmlCtxtReset(xmlParserCtxt* ctxt) nogil
195      cdef void xmlClearParserCtxt(xmlParserCtxt* ctxt) nogil
196      cdef int xmlParseChunk(xmlParserCtxt* ctxt,
197                             char* chunk, int size, int terminate) nogil
198      cdef xmlDoc* xmlCtxtReadDoc(xmlParserCtxt* ctxt,
199                                  char* cur, char* URL, char* encoding,
200                                  int options) nogil
201      cdef xmlDoc* xmlCtxtReadFile(xmlParserCtxt* ctxt,
202                                   char* filename, char* encoding,
203                                   int options) nogil
204      cdef xmlDoc* xmlCtxtReadIO(xmlParserCtxt* ctxt, 
205                                 xmlInputReadCallback ioread, 
206                                 xmlInputCloseCallback ioclose, 
207                                 void* ioctx,
208                                 char* URL, char* encoding,
209                                 int options) nogil
210      cdef xmlDoc* xmlCtxtReadMemory(xmlParserCtxt* ctxt,
211                                     char* buffer, int size,
212                                     char* filename, const_char* encoding,
213                                     int options) nogil
214  
215  # iterparse:
216  
217      cdef xmlParserCtxt* xmlCreatePushParserCtxt(xmlSAXHandler* sax,
218                                                  void* user_data,
219                                                  char* chunk,
220                                                  int size,
221                                                  char* filename) nogil
222  
223      cdef int xmlCtxtResetPush(xmlParserCtxt* ctxt,
224                                char* chunk,
225                                int size,
226                                char* filename,
227                                char* encoding) nogil
228  
229  # entity loaders:
230  
231      ctypedef xmlParserInput* (*xmlExternalEntityLoader)(
232          const_char * URL, const_char * ID, xmlParserCtxt* context) nogil
233      cdef xmlExternalEntityLoader xmlGetExternalEntityLoader() nogil
234      cdef void xmlSetExternalEntityLoader(xmlExternalEntityLoader f) nogil
235  
236  # DTDs:
237  
238      cdef xmlDtd* xmlParseDTD(const_xmlChar* ExternalID, const_xmlChar* SystemID) nogil
239      cdef xmlDtd* xmlIOParseDTD(xmlSAXHandler* sax,
240                                 xmlParserInputBuffer* input,
241                                 int enc) nogil
242  
243  cdef extern from "libxml/parserInternals.h":
244      cdef xmlParserInput* xmlNewInputStream(xmlParserCtxt* ctxt)
245      cdef xmlParserInput* xmlNewStringInputStream(xmlParserCtxt* ctxt, 
246                                                   char* buffer) nogil
247      cdef xmlParserInput* xmlNewInputFromFile(xmlParserCtxt* ctxt, 
248                                               char* filename) nogil
249      cdef void xmlFreeInputStream(xmlParserInput* input) nogil
250      cdef int xmlSwitchEncoding(xmlParserCtxt* ctxt, int enc) nogil