Nelze vybrat více než 25 témat Téma musí začínat písmenem nebo číslem, může obsahovat pomlčky („-“) a může být dlouhé až 35 znaků.
 
 
 
 

481 řádky
20 KiB

  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. xmlAttributeType atype
  264. ctypedef struct xmlID:
  265. const_xmlChar* value
  266. const_xmlChar* name
  267. xmlAttr* attr
  268. xmlDoc* doc
  269. ctypedef struct xmlBuffer
  270. ctypedef struct xmlBuf # new in libxml2 2.9
  271. ctypedef struct xmlOutputBuffer:
  272. xmlBuf* buffer
  273. xmlBuf* conv
  274. int error
  275. const_xmlChar* XML_XML_NAMESPACE
  276. cdef void xmlFreeDoc(xmlDoc* cur) nogil
  277. cdef void xmlFreeDtd(xmlDtd* cur) nogil
  278. cdef void xmlFreeNode(xmlNode* cur) nogil
  279. cdef void xmlFreeNsList(xmlNs* ns) nogil
  280. cdef void xmlFreeNs(xmlNs* ns) nogil
  281. cdef void xmlFree(void* buf) nogil
  282. cdef xmlNode* xmlNewNode(xmlNs* ns, const_xmlChar* name) nogil
  283. cdef xmlNode* xmlNewDocText(xmlDoc* doc, const_xmlChar* content) nogil
  284. cdef xmlNode* xmlNewDocComment(xmlDoc* doc, const_xmlChar* content) nogil
  285. cdef xmlNode* xmlNewDocPI(xmlDoc* doc, const_xmlChar* name, const_xmlChar* content) nogil
  286. cdef xmlNode* xmlNewReference(xmlDoc* doc, const_xmlChar* name) nogil
  287. cdef xmlNode* xmlNewCDataBlock(xmlDoc* doc, const_xmlChar* text, int len) nogil
  288. cdef xmlNs* xmlNewNs(xmlNode* node, const_xmlChar* href, const_xmlChar* prefix) nogil
  289. cdef xmlNode* xmlAddChild(xmlNode* parent, xmlNode* cur) nogil
  290. cdef xmlNode* xmlReplaceNode(xmlNode* old, xmlNode* cur) nogil
  291. cdef xmlNode* xmlAddPrevSibling(xmlNode* cur, xmlNode* elem) nogil
  292. cdef xmlNode* xmlAddNextSibling(xmlNode* cur, xmlNode* elem) nogil
  293. cdef xmlNode* xmlNewDocNode(xmlDoc* doc, xmlNs* ns,
  294. const_xmlChar* name, const_xmlChar* content) nogil
  295. cdef xmlDoc* xmlNewDoc(const_xmlChar* version) nogil
  296. cdef xmlAttr* xmlNewProp(xmlNode* node, const_xmlChar* name, const_xmlChar* value) nogil
  297. cdef xmlAttr* xmlNewNsProp(xmlNode* node, xmlNs* ns,
  298. const_xmlChar* name, const_xmlChar* value) nogil
  299. cdef xmlChar* xmlGetNoNsProp(xmlNode* node, const_xmlChar* name) nogil
  300. cdef xmlChar* xmlGetNsProp(xmlNode* node, const_xmlChar* name, const_xmlChar* nameSpace) nogil
  301. cdef void xmlSetNs(xmlNode* node, xmlNs* ns) nogil
  302. cdef xmlAttr* xmlSetProp(xmlNode* node, const_xmlChar* name, const_xmlChar* value) nogil
  303. cdef xmlAttr* xmlSetNsProp(xmlNode* node, xmlNs* ns,
  304. const_xmlChar* name, const_xmlChar* value) nogil
  305. cdef int xmlRemoveID(xmlDoc* doc, xmlAttr* cur) nogil
  306. cdef int xmlRemoveProp(xmlAttr* cur) nogil
  307. cdef void xmlFreePropList(xmlAttr* cur) nogil
  308. cdef xmlChar* xmlGetNodePath(xmlNode* node) nogil
  309. cdef void xmlDocDumpMemory(xmlDoc* cur, char** mem, int* size) nogil
  310. cdef void xmlDocDumpMemoryEnc(xmlDoc* cur, char** mem, int* size,
  311. char* encoding) nogil
  312. cdef int xmlSaveFileTo(xmlOutputBuffer* out, xmlDoc* cur,
  313. char* encoding) nogil
  314. cdef void xmlUnlinkNode(xmlNode* cur) nogil
  315. cdef xmlNode* xmlDocSetRootElement(xmlDoc* doc, xmlNode* root) nogil
  316. cdef xmlNode* xmlDocGetRootElement(xmlDoc* doc) nogil
  317. cdef void xmlSetTreeDoc(xmlNode* tree, xmlDoc* doc) nogil
  318. cdef xmlAttr* xmlHasProp(xmlNode* node, const_xmlChar* name) nogil
  319. cdef xmlAttr* xmlHasNsProp(xmlNode* node, const_xmlChar* name, const_xmlChar* nameSpace) nogil
  320. cdef xmlChar* xmlNodeGetContent(xmlNode* cur) nogil
  321. cdef int xmlNodeBufGetContent(xmlBuffer* buffer, xmlNode* cur) nogil
  322. cdef xmlNs* xmlSearchNs(xmlDoc* doc, xmlNode* node, const_xmlChar* prefix) nogil
  323. cdef xmlNs* xmlSearchNsByHref(xmlDoc* doc, xmlNode* node, const_xmlChar* href) nogil
  324. cdef int xmlIsBlankNode(xmlNode* node) nogil
  325. cdef long xmlGetLineNo(xmlNode* node) nogil
  326. cdef void xmlElemDump(stdio.FILE* f, xmlDoc* doc, xmlNode* cur) nogil
  327. cdef void xmlNodeDumpOutput(xmlOutputBuffer* buf,
  328. xmlDoc* doc, xmlNode* cur, int level,
  329. int format, const_char* encoding) nogil
  330. cdef void xmlBufAttrSerializeTxtContent(xmlOutputBuffer *buf, xmlDoc *doc,
  331. xmlAttr *attr, const_xmlChar *string) nogil
  332. cdef void xmlNodeSetName(xmlNode* cur, const_xmlChar* name) nogil
  333. cdef void xmlNodeSetContent(xmlNode* cur, const_xmlChar* content) nogil
  334. cdef xmlDtd* xmlCopyDtd(xmlDtd* dtd) nogil
  335. cdef xmlDoc* xmlCopyDoc(xmlDoc* doc, int recursive) nogil
  336. cdef xmlNode* xmlCopyNode(xmlNode* node, int extended) nogil
  337. cdef xmlNode* xmlDocCopyNode(xmlNode* node, xmlDoc* doc, int extended) nogil
  338. cdef int xmlReconciliateNs(xmlDoc* doc, xmlNode* tree) nogil
  339. cdef xmlNs* xmlNewReconciliedNs(xmlDoc* doc, xmlNode* tree, xmlNs* ns) nogil
  340. cdef xmlBuffer* xmlBufferCreate() nogil
  341. cdef void xmlBufferWriteChar(xmlBuffer* buf, char* string) nogil
  342. cdef void xmlBufferFree(xmlBuffer* buf) nogil
  343. cdef const_xmlChar* xmlBufferContent(xmlBuffer* buf) nogil
  344. cdef int xmlBufferLength(xmlBuffer* buf) nogil
  345. cdef const_xmlChar* xmlBufContent(xmlBuf* buf) nogil # new in libxml2 2.9
  346. cdef size_t xmlBufUse(xmlBuf* buf) nogil # new in libxml2 2.9
  347. cdef int xmlKeepBlanksDefault(int val) nogil
  348. cdef xmlChar* xmlNodeGetBase(xmlDoc* doc, xmlNode* node) nogil
  349. cdef xmlDtd* xmlCreateIntSubset(xmlDoc* doc, const_xmlChar* name,
  350. const_xmlChar* ExternalID, const_xmlChar* SystemID) nogil
  351. cdef void xmlNodeSetBase(xmlNode* node, const_xmlChar* uri) nogil
  352. cdef int xmlValidateNCName(const_xmlChar* value, int space) nogil
  353. cdef extern from "libxml/uri.h":
  354. cdef const_xmlChar* xmlBuildURI(const_xmlChar* href, const_xmlChar* base) nogil
  355. cdef extern from "libxml/HTMLtree.h":
  356. cdef void htmlNodeDumpFormatOutput(xmlOutputBuffer* buf,
  357. xmlDoc* doc, xmlNode* cur,
  358. char* encoding, int format) nogil
  359. cdef xmlDoc* htmlNewDoc(const_xmlChar* uri, const_xmlChar* externalID) nogil
  360. cdef extern from "libxml/valid.h":
  361. cdef xmlAttr* xmlGetID(xmlDoc* doc, const_xmlChar* ID) nogil
  362. cdef void xmlDumpNotationTable(xmlBuffer* buffer,
  363. xmlNotationTable* table) nogil
  364. cdef int xmlValidateNameValue(const_xmlChar* value) nogil
  365. cdef extern from "libxml/xmlIO.h":
  366. cdef int xmlOutputBufferWrite(xmlOutputBuffer* out,
  367. int len, const_char* str) nogil
  368. cdef int xmlOutputBufferWriteString(xmlOutputBuffer* out, const_char* str) nogil
  369. cdef int xmlOutputBufferWriteEscape(xmlOutputBuffer* out,
  370. const_xmlChar* str,
  371. xmlCharEncodingOutputFunc escapefunc) nogil
  372. cdef int xmlOutputBufferFlush(xmlOutputBuffer* out) nogil
  373. cdef int xmlOutputBufferClose(xmlOutputBuffer* out) nogil
  374. ctypedef int (*xmlInputReadCallback)(void* context,
  375. char* buffer, int len)
  376. ctypedef int (*xmlInputCloseCallback)(void* context)
  377. ctypedef int (*xmlOutputWriteCallback)(void* context,
  378. char* buffer, int len)
  379. ctypedef int (*xmlOutputCloseCallback)(void* context)
  380. cdef xmlOutputBuffer* xmlAllocOutputBuffer(
  381. xmlCharEncodingHandler* encoder) nogil
  382. cdef xmlOutputBuffer* xmlOutputBufferCreateIO(
  383. xmlOutputWriteCallback iowrite,
  384. xmlOutputCloseCallback ioclose,
  385. void * ioctx,
  386. xmlCharEncodingHandler* encoder) nogil
  387. cdef xmlOutputBuffer* xmlOutputBufferCreateFile(
  388. stdio.FILE* file, xmlCharEncodingHandler* encoder) nogil
  389. cdef xmlOutputBuffer* xmlOutputBufferCreateFilename(
  390. char* URI, xmlCharEncodingHandler* encoder, int compression) nogil
  391. cdef extern from "libxml/xmlsave.h":
  392. ctypedef struct xmlSaveCtxt
  393. ctypedef enum xmlSaveOption:
  394. XML_SAVE_FORMAT = 1 # format save output (2.6.17)
  395. XML_SAVE_NO_DECL = 2 # drop the xml declaration (2.6.21)
  396. XML_SAVE_NO_EMPTY = 4 # no empty tags (2.6.22)
  397. XML_SAVE_NO_XHTML = 8 # disable XHTML1 specific rules (2.6.22)
  398. XML_SAVE_XHTML = 16 # force XHTML1 specific rules (2.7.2)
  399. XML_SAVE_AS_XML = 32 # force XML serialization on HTML doc (2.7.2)
  400. XML_SAVE_AS_HTML = 64 # force HTML serialization on XML doc (2.7.2)
  401. cdef xmlSaveCtxt* xmlSaveToFilename(char* filename, char* encoding,
  402. int options) nogil
  403. cdef xmlSaveCtxt* xmlSaveToBuffer(xmlBuffer* buffer, char* encoding,
  404. int options) nogil # libxml2 2.6.23
  405. cdef long xmlSaveDoc(xmlSaveCtxt* ctxt, xmlDoc* doc) nogil
  406. cdef long xmlSaveTree(xmlSaveCtxt* ctxt, xmlNode* node) nogil
  407. cdef int xmlSaveClose(xmlSaveCtxt* ctxt) nogil
  408. cdef int xmlSaveFlush(xmlSaveCtxt* ctxt) nogil
  409. cdef int xmlSaveSetAttrEscape(xmlSaveCtxt* ctxt, void* escape_func) nogil
  410. cdef int xmlSaveSetEscape(xmlSaveCtxt* ctxt, void* escape_func) nogil
  411. cdef extern from "libxml/globals.h":
  412. cdef int xmlThrDefKeepBlanksDefaultValue(int onoff) nogil
  413. cdef int xmlThrDefLineNumbersDefaultValue(int onoff) nogil
  414. cdef int xmlThrDefIndentTreeOutput(int onoff) nogil
  415. cdef extern from "libxml/xmlmemory.h" nogil:
  416. cdef void* xmlMalloc(size_t size)
  417. cdef int xmlMemBlocks()
  418. cdef int xmlMemUsed()
  419. cdef void xmlMemDisplay(stdio.FILE* file)
  420. cdef void xmlMemDisplayLast(stdio.FILE* file, long num_bytes)
  421. cdef void xmlMemShow(stdio.FILE* file, int count)
  422. cdef extern from "etree_defs.h":
  423. cdef bint _isElement(xmlNode* node) nogil
  424. cdef bint _isElementOrXInclude(xmlNode* node) nogil
  425. cdef const_xmlChar* _getNs(xmlNode* node) nogil
  426. cdef void BEGIN_FOR_EACH_ELEMENT_FROM(xmlNode* tree_top,
  427. xmlNode* start_node,
  428. bint inclusive) nogil
  429. cdef void END_FOR_EACH_ELEMENT_FROM(xmlNode* start_node) nogil
  430. cdef void BEGIN_FOR_EACH_FROM(xmlNode* tree_top,
  431. xmlNode* start_node,
  432. bint inclusive) nogil
  433. cdef void END_FOR_EACH_FROM(xmlNode* start_node) nogil