You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

477 lines
20 KiB

4 years ago
  1. from libc cimport stdio
  2. from libc.string cimport const_char, const_uchar
  3. cdef extern from "lxml-version.h":
  4. # deprecated declaration, use etreepublic.pxd instead
  5. cdef char* LXML_VERSION_STRING
  6. cdef extern from "libxml/xmlversion.h":
  7. cdef const_char* xmlParserVersion
  8. cdef int LIBXML_VERSION
  9. cdef extern from "libxml/xmlstring.h":
  10. ctypedef unsigned char xmlChar
  11. ctypedef const xmlChar const_xmlChar "const xmlChar"
  12. cdef int xmlStrlen(const_xmlChar* str) nogil
  13. cdef xmlChar* xmlStrdup(const_xmlChar* cur) nogil
  14. cdef int xmlStrncmp(const_xmlChar* str1, const_xmlChar* str2, int length) nogil
  15. cdef int xmlStrcmp(const_xmlChar* str1, const_xmlChar* str2) nogil
  16. cdef int xmlStrcasecmp(const xmlChar *str1, const xmlChar *str2) nogil
  17. cdef const_xmlChar* xmlStrstr(const_xmlChar* str1, const_xmlChar* str2) nogil
  18. cdef const_xmlChar* xmlStrchr(const_xmlChar* str1, xmlChar ch) nogil
  19. cdef const_xmlChar* _xcstr "(const xmlChar*)PyBytes_AS_STRING" (object s)
  20. cdef extern from "libxml/encoding.h":
  21. ctypedef enum xmlCharEncoding:
  22. XML_CHAR_ENCODING_ERROR = -1 # No char encoding detected
  23. XML_CHAR_ENCODING_NONE = 0 # No char encoding detected
  24. XML_CHAR_ENCODING_UTF8 = 1 # UTF-8
  25. XML_CHAR_ENCODING_UTF16LE = 2 # UTF-16 little endian
  26. XML_CHAR_ENCODING_UTF16BE = 3 # UTF-16 big endian
  27. XML_CHAR_ENCODING_UCS4LE = 4 # UCS-4 little endian
  28. XML_CHAR_ENCODING_UCS4BE = 5 # UCS-4 big endian
  29. XML_CHAR_ENCODING_EBCDIC = 6 # EBCDIC uh!
  30. XML_CHAR_ENCODING_UCS4_2143 = 7 # UCS-4 unusual ordering
  31. XML_CHAR_ENCODING_UCS4_3412 = 8 # UCS-4 unusual ordering
  32. XML_CHAR_ENCODING_UCS2 = 9 # UCS-2
  33. XML_CHAR_ENCODING_8859_1 = 10 # ISO-8859-1 ISO Latin 1
  34. XML_CHAR_ENCODING_8859_2 = 11 # ISO-8859-2 ISO Latin 2
  35. XML_CHAR_ENCODING_8859_3 = 12 # ISO-8859-3
  36. XML_CHAR_ENCODING_8859_4 = 13 # ISO-8859-4
  37. XML_CHAR_ENCODING_8859_5 = 14 # ISO-8859-5
  38. XML_CHAR_ENCODING_8859_6 = 15 # ISO-8859-6
  39. XML_CHAR_ENCODING_8859_7 = 16 # ISO-8859-7
  40. XML_CHAR_ENCODING_8859_8 = 17 # ISO-8859-8
  41. XML_CHAR_ENCODING_8859_9 = 18 # ISO-8859-9
  42. XML_CHAR_ENCODING_2022_JP = 19 # ISO-2022-JP
  43. XML_CHAR_ENCODING_SHIFT_JIS = 20 # Shift_JIS
  44. XML_CHAR_ENCODING_EUC_JP = 21 # EUC-JP
  45. XML_CHAR_ENCODING_ASCII = 22 # pure ASCII
  46. ctypedef struct xmlCharEncodingHandler
  47. cdef xmlCharEncodingHandler* xmlFindCharEncodingHandler(char* name) nogil
  48. cdef xmlCharEncodingHandler* xmlGetCharEncodingHandler(
  49. xmlCharEncoding enc) nogil
  50. cdef int xmlCharEncCloseFunc(xmlCharEncodingHandler* handler) nogil
  51. cdef xmlCharEncoding xmlDetectCharEncoding(const_xmlChar* text, int len) nogil
  52. cdef const_char* xmlGetCharEncodingName(xmlCharEncoding enc) nogil
  53. cdef xmlCharEncoding xmlParseCharEncoding(char* name) nogil
  54. ctypedef int (*xmlCharEncodingOutputFunc)(
  55. unsigned char *out_buf, int *outlen, const_uchar *in_buf, int *inlen)
  56. cdef extern from "libxml/chvalid.h":
  57. cdef int xmlIsChar_ch(char c) nogil
  58. cdef int xmlIsCharQ(int ch) nogil
  59. cdef extern from "libxml/hash.h":
  60. ctypedef struct xmlHashTable
  61. ctypedef void (*xmlHashScanner)(void* payload, void* data, const_xmlChar* name) # may require GIL!
  62. void xmlHashScan(xmlHashTable* table, xmlHashScanner f, void* data) nogil
  63. void* xmlHashLookup(xmlHashTable* table, const_xmlChar* name) nogil
  64. ctypedef void (*xmlHashDeallocator)(void *payload, xmlChar *name)
  65. cdef xmlHashTable* xmlHashCreate(int size)
  66. cdef xmlHashTable* xmlHashCreateDict(int size, xmlDict *dict)
  67. cdef int xmlHashSize(xmlHashTable* table)
  68. cdef void xmlHashFree(xmlHashTable* table, xmlHashDeallocator f)
  69. cdef extern from *: # actually "libxml/dict.h"
  70. # libxml/dict.h appears to be broken to include in C
  71. ctypedef struct xmlDict
  72. cdef const_xmlChar* xmlDictLookup(xmlDict* dict, const_xmlChar* name, int len) nogil
  73. cdef const_xmlChar* xmlDictExists(xmlDict* dict, const_xmlChar* name, int len) nogil
  74. cdef int xmlDictOwns(xmlDict* dict, const_xmlChar* name) nogil
  75. cdef size_t xmlDictSize(xmlDict* dict) nogil
  76. cdef extern from "libxml/tree.h":
  77. ctypedef struct xmlDoc
  78. ctypedef struct xmlAttr
  79. ctypedef struct xmlNotationTable
  80. ctypedef enum xmlElementType:
  81. XML_ELEMENT_NODE= 1
  82. XML_ATTRIBUTE_NODE= 2
  83. XML_TEXT_NODE= 3
  84. XML_CDATA_SECTION_NODE= 4
  85. XML_ENTITY_REF_NODE= 5
  86. XML_ENTITY_NODE= 6
  87. XML_PI_NODE= 7
  88. XML_COMMENT_NODE= 8
  89. XML_DOCUMENT_NODE= 9
  90. XML_DOCUMENT_TYPE_NODE= 10
  91. XML_DOCUMENT_FRAG_NODE= 11
  92. XML_NOTATION_NODE= 12
  93. XML_HTML_DOCUMENT_NODE= 13
  94. XML_DTD_NODE= 14
  95. XML_ELEMENT_DECL= 15
  96. XML_ATTRIBUTE_DECL= 16
  97. XML_ENTITY_DECL= 17
  98. XML_NAMESPACE_DECL= 18
  99. XML_XINCLUDE_START= 19
  100. XML_XINCLUDE_END= 20
  101. ctypedef enum xmlElementTypeVal:
  102. XML_ELEMENT_TYPE_UNDEFINED= 0
  103. XML_ELEMENT_TYPE_EMPTY= 1
  104. XML_ELEMENT_TYPE_ANY= 2
  105. XML_ELEMENT_TYPE_MIXED= 3
  106. XML_ELEMENT_TYPE_ELEMENT= 4
  107. ctypedef enum xmlElementContentType:
  108. XML_ELEMENT_CONTENT_PCDATA= 1
  109. XML_ELEMENT_CONTENT_ELEMENT= 2
  110. XML_ELEMENT_CONTENT_SEQ= 3
  111. XML_ELEMENT_CONTENT_OR= 4
  112. ctypedef enum xmlElementContentOccur:
  113. XML_ELEMENT_CONTENT_ONCE= 1
  114. XML_ELEMENT_CONTENT_OPT= 2
  115. XML_ELEMENT_CONTENT_MULT= 3
  116. XML_ELEMENT_CONTENT_PLUS= 4
  117. ctypedef enum xmlAttributeType:
  118. XML_ATTRIBUTE_CDATA = 1
  119. XML_ATTRIBUTE_ID= 2
  120. XML_ATTRIBUTE_IDREF= 3
  121. XML_ATTRIBUTE_IDREFS= 4
  122. XML_ATTRIBUTE_ENTITY= 5
  123. XML_ATTRIBUTE_ENTITIES= 6
  124. XML_ATTRIBUTE_NMTOKEN= 7
  125. XML_ATTRIBUTE_NMTOKENS= 8
  126. XML_ATTRIBUTE_ENUMERATION= 9
  127. XML_ATTRIBUTE_NOTATION= 10
  128. ctypedef enum xmlAttributeDefault:
  129. XML_ATTRIBUTE_NONE= 1
  130. XML_ATTRIBUTE_REQUIRED= 2
  131. XML_ATTRIBUTE_IMPLIED= 3
  132. XML_ATTRIBUTE_FIXED= 4
  133. ctypedef enum xmlEntityType:
  134. XML_INTERNAL_GENERAL_ENTITY= 1
  135. XML_EXTERNAL_GENERAL_PARSED_ENTITY= 2
  136. XML_EXTERNAL_GENERAL_UNPARSED_ENTITY= 3
  137. XML_INTERNAL_PARAMETER_ENTITY= 4
  138. XML_EXTERNAL_PARAMETER_ENTITY= 5
  139. XML_INTERNAL_PREDEFINED_ENTITY= 6
  140. ctypedef struct xmlNs:
  141. const_xmlChar* href
  142. const_xmlChar* prefix
  143. xmlNs* next
  144. ctypedef struct xmlNode:
  145. void* _private
  146. xmlElementType type
  147. const_xmlChar* name
  148. xmlNode* children
  149. xmlNode* last
  150. xmlNode* parent
  151. xmlNode* next
  152. xmlNode* prev
  153. xmlDoc* doc
  154. xmlChar* content
  155. xmlAttr* properties
  156. xmlNs* ns
  157. xmlNs* nsDef
  158. unsigned short line
  159. ctypedef struct xmlElementContent:
  160. xmlElementContentType type
  161. xmlElementContentOccur ocur
  162. const_xmlChar *name
  163. xmlElementContent *c1
  164. xmlElementContent *c2
  165. xmlElementContent *parent
  166. const_xmlChar *prefix
  167. ctypedef struct xmlEnumeration:
  168. xmlEnumeration *next
  169. const_xmlChar *name
  170. ctypedef struct xmlAttribute:
  171. void* _private
  172. xmlElementType type
  173. const_xmlChar* name
  174. xmlNode* children
  175. xmlNode* last
  176. xmlDtd* parent
  177. xmlNode* next
  178. xmlNode* prev
  179. xmlDoc* doc
  180. xmlAttribute* nexth
  181. xmlAttributeType atype
  182. xmlAttributeDefault def_ "def"
  183. const_xmlChar* defaultValue
  184. xmlEnumeration* tree
  185. const_xmlChar* prefix
  186. const_xmlChar* elem
  187. ctypedef struct xmlElement:
  188. void* _private
  189. xmlElementType type
  190. const_xmlChar* name
  191. xmlNode* children
  192. xmlNode* last
  193. xmlNode* parent
  194. xmlNode* next
  195. xmlNode* prev
  196. xmlDoc* doc
  197. xmlElementTypeVal etype
  198. xmlElementContent* content
  199. xmlAttribute* attributes
  200. const_xmlChar* prefix
  201. void *contModel
  202. ctypedef struct xmlEntity:
  203. void* _private
  204. xmlElementType type
  205. const_xmlChar* name
  206. xmlNode* children
  207. xmlNode* last
  208. xmlDtd* parent
  209. xmlNode* next
  210. xmlNode* prev
  211. xmlDoc* doc
  212. xmlChar* orig
  213. xmlChar* content
  214. int length
  215. xmlEntityType etype
  216. const_xmlChar* ExternalID
  217. const_xmlChar* SystemID
  218. xmlEntity* nexte
  219. const_xmlChar* URI
  220. int owner
  221. int checked
  222. ctypedef struct xmlDtd:
  223. const_xmlChar* name
  224. const_xmlChar* ExternalID
  225. const_xmlChar* SystemID
  226. void* notations
  227. void* entities
  228. void* pentities
  229. void* attributes
  230. void* elements
  231. xmlNode* children
  232. xmlNode* last
  233. xmlDoc* doc
  234. ctypedef struct xmlDoc:
  235. xmlElementType type
  236. char* name
  237. xmlNode* children
  238. xmlNode* last
  239. xmlNode* parent
  240. xmlNode* next
  241. xmlNode* prev
  242. xmlDoc* doc
  243. xmlDict* dict
  244. xmlHashTable* ids
  245. int standalone
  246. const_xmlChar* version
  247. const_xmlChar* encoding
  248. const_xmlChar* URL
  249. void* _private
  250. xmlDtd* intSubset
  251. xmlDtd* extSubset
  252. ctypedef struct xmlAttr:
  253. void* _private
  254. xmlElementType type
  255. const_xmlChar* name
  256. xmlNode* children
  257. xmlNode* last
  258. xmlNode* parent
  259. xmlAttr* next
  260. xmlAttr* prev
  261. xmlDoc* doc
  262. xmlNs* ns
  263. ctypedef struct xmlID:
  264. const_xmlChar* value
  265. const_xmlChar* name
  266. xmlAttr* attr
  267. xmlDoc* doc
  268. ctypedef struct xmlBuffer
  269. ctypedef struct xmlBuf # new in libxml2 2.9
  270. ctypedef struct xmlOutputBuffer:
  271. xmlBuf* buffer
  272. xmlBuf* conv
  273. int error
  274. const_xmlChar* XML_XML_NAMESPACE
  275. cdef void xmlFreeDoc(xmlDoc* cur) nogil
  276. cdef void xmlFreeDtd(xmlDtd* cur) nogil
  277. cdef void xmlFreeNode(xmlNode* cur) nogil
  278. cdef void xmlFreeNsList(xmlNs* ns) nogil
  279. cdef void xmlFreeNs(xmlNs* ns) nogil
  280. cdef void xmlFree(void* buf) nogil
  281. cdef xmlNode* xmlNewNode(xmlNs* ns, const_xmlChar* name) nogil
  282. cdef xmlNode* xmlNewDocText(xmlDoc* doc, const_xmlChar* content) nogil
  283. cdef xmlNode* xmlNewDocComment(xmlDoc* doc, const_xmlChar* content) nogil
  284. cdef xmlNode* xmlNewDocPI(xmlDoc* doc, const_xmlChar* name, const_xmlChar* content) nogil
  285. cdef xmlNode* xmlNewReference(xmlDoc* doc, const_xmlChar* name) nogil
  286. cdef xmlNode* xmlNewCDataBlock(xmlDoc* doc, const_xmlChar* text, int len) nogil
  287. cdef xmlNs* xmlNewNs(xmlNode* node, const_xmlChar* href, const_xmlChar* prefix) nogil
  288. cdef xmlNode* xmlAddChild(xmlNode* parent, xmlNode* cur) nogil
  289. cdef xmlNode* xmlReplaceNode(xmlNode* old, xmlNode* cur) nogil
  290. cdef xmlNode* xmlAddPrevSibling(xmlNode* cur, xmlNode* elem) nogil
  291. cdef xmlNode* xmlAddNextSibling(xmlNode* cur, xmlNode* elem) nogil
  292. cdef xmlNode* xmlNewDocNode(xmlDoc* doc, xmlNs* ns,
  293. const_xmlChar* name, const_xmlChar* content) nogil
  294. cdef xmlDoc* xmlNewDoc(const_xmlChar* version) nogil
  295. cdef xmlAttr* xmlNewProp(xmlNode* node, const_xmlChar* name, const_xmlChar* value) nogil
  296. cdef xmlAttr* xmlNewNsProp(xmlNode* node, xmlNs* ns,
  297. const_xmlChar* name, const_xmlChar* value) nogil
  298. cdef xmlChar* xmlGetNoNsProp(xmlNode* node, const_xmlChar* name) nogil
  299. cdef xmlChar* xmlGetNsProp(xmlNode* node, const_xmlChar* name, const_xmlChar* nameSpace) nogil
  300. cdef void xmlSetNs(xmlNode* node, xmlNs* ns) nogil
  301. cdef xmlAttr* xmlSetProp(xmlNode* node, const_xmlChar* name, const_xmlChar* value) nogil
  302. cdef xmlAttr* xmlSetNsProp(xmlNode* node, xmlNs* ns,
  303. const_xmlChar* name, const_xmlChar* value) nogil
  304. cdef int xmlRemoveProp(xmlAttr* cur) nogil
  305. cdef xmlChar* xmlGetNodePath(xmlNode* node) nogil
  306. cdef void xmlDocDumpMemory(xmlDoc* cur, char** mem, int* size) nogil
  307. cdef void xmlDocDumpMemoryEnc(xmlDoc* cur, char** mem, int* size,
  308. char* encoding) nogil
  309. cdef int xmlSaveFileTo(xmlOutputBuffer* out, xmlDoc* cur,
  310. char* encoding) nogil
  311. cdef void xmlUnlinkNode(xmlNode* cur) nogil
  312. cdef xmlNode* xmlDocSetRootElement(xmlDoc* doc, xmlNode* root) nogil
  313. cdef xmlNode* xmlDocGetRootElement(xmlDoc* doc) nogil
  314. cdef void xmlSetTreeDoc(xmlNode* tree, xmlDoc* doc) nogil
  315. cdef xmlAttr* xmlHasProp(xmlNode* node, const_xmlChar* name) nogil
  316. cdef xmlAttr* xmlHasNsProp(xmlNode* node, const_xmlChar* name, const_xmlChar* nameSpace) nogil
  317. cdef xmlChar* xmlNodeGetContent(xmlNode* cur) nogil
  318. cdef int xmlNodeBufGetContent(xmlBuffer* buffer, xmlNode* cur) nogil
  319. cdef xmlNs* xmlSearchNs(xmlDoc* doc, xmlNode* node, const_xmlChar* prefix) nogil
  320. cdef xmlNs* xmlSearchNsByHref(xmlDoc* doc, xmlNode* node, const_xmlChar* href) nogil
  321. cdef int xmlIsBlankNode(xmlNode* node) nogil
  322. cdef long xmlGetLineNo(xmlNode* node) nogil
  323. cdef void xmlElemDump(stdio.FILE* f, xmlDoc* doc, xmlNode* cur) nogil
  324. cdef void xmlNodeDumpOutput(xmlOutputBuffer* buf,
  325. xmlDoc* doc, xmlNode* cur, int level,
  326. int format, const_char* encoding) nogil
  327. cdef void xmlBufAttrSerializeTxtContent(xmlOutputBuffer *buf, xmlDoc *doc,
  328. xmlAttr *attr, const_xmlChar *string) nogil
  329. cdef void xmlNodeSetName(xmlNode* cur, const_xmlChar* name) nogil
  330. cdef void xmlNodeSetContent(xmlNode* cur, const_xmlChar* content) nogil
  331. cdef xmlDtd* xmlCopyDtd(xmlDtd* dtd) nogil
  332. cdef xmlDoc* xmlCopyDoc(xmlDoc* doc, int recursive) nogil
  333. cdef xmlNode* xmlCopyNode(xmlNode* node, int extended) nogil
  334. cdef xmlNode* xmlDocCopyNode(xmlNode* node, xmlDoc* doc, int extended) nogil
  335. cdef int xmlReconciliateNs(xmlDoc* doc, xmlNode* tree) nogil
  336. cdef xmlNs* xmlNewReconciliedNs(xmlDoc* doc, xmlNode* tree, xmlNs* ns) nogil
  337. cdef xmlBuffer* xmlBufferCreate() nogil
  338. cdef void xmlBufferWriteChar(xmlBuffer* buf, char* string) nogil
  339. cdef void xmlBufferFree(xmlBuffer* buf) nogil
  340. cdef const_xmlChar* xmlBufferContent(xmlBuffer* buf) nogil
  341. cdef int xmlBufferLength(xmlBuffer* buf) nogil
  342. cdef const_xmlChar* xmlBufContent(xmlBuf* buf) nogil # new in libxml2 2.9
  343. cdef size_t xmlBufUse(xmlBuf* buf) nogil # new in libxml2 2.9
  344. cdef int xmlKeepBlanksDefault(int val) nogil
  345. cdef xmlChar* xmlNodeGetBase(xmlDoc* doc, xmlNode* node) nogil
  346. cdef xmlDtd* xmlCreateIntSubset(xmlDoc* doc, const_xmlChar* name,
  347. const_xmlChar* ExternalID, const_xmlChar* SystemID) nogil
  348. cdef void xmlNodeSetBase(xmlNode* node, const_xmlChar* uri) nogil
  349. cdef int xmlValidateNCName(const_xmlChar* value, int space) nogil
  350. cdef extern from "libxml/uri.h":
  351. cdef const_xmlChar* xmlBuildURI(const_xmlChar* href, const_xmlChar* base) nogil
  352. cdef extern from "libxml/HTMLtree.h":
  353. cdef void htmlNodeDumpFormatOutput(xmlOutputBuffer* buf,
  354. xmlDoc* doc, xmlNode* cur,
  355. char* encoding, int format) nogil
  356. cdef xmlDoc* htmlNewDoc(const_xmlChar* uri, const_xmlChar* externalID) nogil
  357. cdef extern from "libxml/valid.h":
  358. cdef xmlAttr* xmlGetID(xmlDoc* doc, const_xmlChar* ID) nogil
  359. cdef void xmlDumpNotationTable(xmlBuffer* buffer,
  360. xmlNotationTable* table) nogil
  361. cdef int xmlValidateNameValue(const_xmlChar* value) nogil
  362. cdef extern from "libxml/xmlIO.h":
  363. cdef int xmlOutputBufferWrite(xmlOutputBuffer* out,
  364. int len, const_char* str) nogil
  365. cdef int xmlOutputBufferWriteString(xmlOutputBuffer* out, const_char* str) nogil
  366. cdef int xmlOutputBufferWriteEscape(xmlOutputBuffer* out,
  367. const_xmlChar* str,
  368. xmlCharEncodingOutputFunc escapefunc) nogil
  369. cdef int xmlOutputBufferFlush(xmlOutputBuffer* out) nogil
  370. cdef int xmlOutputBufferClose(xmlOutputBuffer* out) nogil
  371. ctypedef int (*xmlInputReadCallback)(void* context,
  372. char* buffer, int len)
  373. ctypedef int (*xmlInputCloseCallback)(void* context)
  374. ctypedef int (*xmlOutputWriteCallback)(void* context,
  375. char* buffer, int len)
  376. ctypedef int (*xmlOutputCloseCallback)(void* context)
  377. cdef xmlOutputBuffer* xmlAllocOutputBuffer(
  378. xmlCharEncodingHandler* encoder) nogil
  379. cdef xmlOutputBuffer* xmlOutputBufferCreateIO(
  380. xmlOutputWriteCallback iowrite,
  381. xmlOutputCloseCallback ioclose,
  382. void * ioctx,
  383. xmlCharEncodingHandler* encoder) nogil
  384. cdef xmlOutputBuffer* xmlOutputBufferCreateFile(
  385. stdio.FILE* file, xmlCharEncodingHandler* encoder) nogil
  386. cdef xmlOutputBuffer* xmlOutputBufferCreateFilename(
  387. char* URI, xmlCharEncodingHandler* encoder, int compression) nogil
  388. cdef extern from "libxml/xmlsave.h":
  389. ctypedef struct xmlSaveCtxt
  390. ctypedef enum xmlSaveOption:
  391. XML_SAVE_FORMAT = 1 # format save output (2.6.17)
  392. XML_SAVE_NO_DECL = 2 # drop the xml declaration (2.6.21)
  393. XML_SAVE_NO_EMPTY = 4 # no empty tags (2.6.22)
  394. XML_SAVE_NO_XHTML = 8 # disable XHTML1 specific rules (2.6.22)
  395. XML_SAVE_XHTML = 16 # force XHTML1 specific rules (2.7.2)
  396. XML_SAVE_AS_XML = 32 # force XML serialization on HTML doc (2.7.2)
  397. XML_SAVE_AS_HTML = 64 # force HTML serialization on XML doc (2.7.2)
  398. cdef xmlSaveCtxt* xmlSaveToFilename(char* filename, char* encoding,
  399. int options) nogil
  400. cdef xmlSaveCtxt* xmlSaveToBuffer(xmlBuffer* buffer, char* encoding,
  401. int options) nogil # libxml2 2.6.23
  402. cdef long xmlSaveDoc(xmlSaveCtxt* ctxt, xmlDoc* doc) nogil
  403. cdef long xmlSaveTree(xmlSaveCtxt* ctxt, xmlNode* node) nogil
  404. cdef int xmlSaveClose(xmlSaveCtxt* ctxt) nogil
  405. cdef int xmlSaveFlush(xmlSaveCtxt* ctxt) nogil
  406. cdef int xmlSaveSetAttrEscape(xmlSaveCtxt* ctxt, void* escape_func) nogil
  407. cdef int xmlSaveSetEscape(xmlSaveCtxt* ctxt, void* escape_func) nogil
  408. cdef extern from "libxml/globals.h":
  409. cdef int xmlThrDefKeepBlanksDefaultValue(int onoff) nogil
  410. cdef int xmlThrDefLineNumbersDefaultValue(int onoff) nogil
  411. cdef int xmlThrDefIndentTreeOutput(int onoff) nogil
  412. cdef extern from "libxml/xmlmemory.h" nogil:
  413. cdef void* xmlMalloc(size_t size)
  414. cdef int xmlMemBlocks()
  415. cdef int xmlMemUsed()
  416. cdef void xmlMemDisplay(stdio.FILE* file)
  417. cdef void xmlMemDisplayLast(stdio.FILE* file, long num_bytes)
  418. cdef void xmlMemShow(stdio.FILE* file, int count)
  419. cdef extern from "etree_defs.h":
  420. cdef bint _isElement(xmlNode* node) nogil
  421. cdef bint _isElementOrXInclude(xmlNode* node) nogil
  422. cdef const_xmlChar* _getNs(xmlNode* node) nogil
  423. cdef void BEGIN_FOR_EACH_ELEMENT_FROM(xmlNode* tree_top,
  424. xmlNode* start_node,
  425. bint inclusive) nogil
  426. cdef void END_FOR_EACH_ELEMENT_FROM(xmlNode* start_node) nogil
  427. cdef void BEGIN_FOR_EACH_FROM(xmlNode* tree_top,
  428. xmlNode* start_node,
  429. bint inclusive) nogil
  430. cdef void END_FOR_EACH_FROM(xmlNode* start_node) nogil