1#include <Python.h>
2#include <libxml/tree.h>
3#include <libxml/parser.h>
4#include <libxml/parserInternals.h>
5#include <libxml/catalog.h>
6#include <libxml/threads.h>
7#include <libxml/nanoftp.h>
8#include <libxml/nanohttp.h>
9#include <libxml/uri.h>
10#include <libxml/xpath.h>
11#include <libxml/xpathInternals.h>
12#include <libxml/debugXML.h>
13#include <libxml/HTMLparser.h>
14#include <libxml/HTMLtree.h>
15#include <libxml/xinclude.h>
16#include <libxml/xpointer.h>
17
18#define PyxmlNode_Get(v) (((v) == Py_None) ? NULL : \
19	(((PyxmlNode_Object *)(v))->obj))
20
21typedef struct {
22    PyObject_HEAD
23    xmlNodePtr obj;
24} PyxmlNode_Object;
25
26#define PyxmlXPathContext_Get(v) (((v) == Py_None) ? NULL : \
27	(((PyxmlXPathContext_Object *)(v))->obj))
28
29typedef struct {
30    PyObject_HEAD
31    xmlXPathContextPtr obj;
32} PyxmlXPathContext_Object;
33
34#define PyxmlXPathParserContext_Get(v) (((v) == Py_None) ? NULL : \
35	(((PyxmlXPathParserContext_Object *)(v))->obj))
36
37typedef struct {
38    PyObject_HEAD
39    xmlXPathParserContextPtr obj;
40} PyxmlXPathParserContext_Object;
41
42#define PyparserCtxt_Get(v) (((v) == Py_None) ? NULL : \
43        (((PyparserCtxt_Object *)(v))->obj))
44
45typedef struct {
46    PyObject_HEAD
47    xmlParserCtxtPtr obj;
48} PyparserCtxt_Object;
49
50#define Pycatalog_Get(v) (((v) == Py_None) ? NULL : \
51        (((Pycatalog_Object *)(v))->obj))
52
53typedef struct {
54    PyObject_HEAD
55    xmlCatalogPtr obj;
56} Pycatalog_Object;
57
58#define PyFile_Get(v) (((v) == Py_None) ? NULL : \
59	(PyFile_Check(v) ? (PyFile_AsFile(v)) : stdout))
60
61PyObject * libxml_intWrap(int val);
62PyObject * libxml_longWrap(long val);
63PyObject * libxml_xmlCharPtrWrap(xmlChar *str);
64PyObject * libxml_constxmlCharPtrWrap(const xmlChar *str);
65PyObject * libxml_charPtrWrap(char *str);
66PyObject * libxml_constcharPtrWrap(const char *str);
67PyObject * libxml_charPtrConstWrap(const char *str);
68PyObject * libxml_xmlCharPtrConstWrap(const xmlChar *str);
69PyObject * libxml_xmlDocPtrWrap(xmlDocPtr doc);
70PyObject * libxml_xmlNodePtrWrap(xmlNodePtr node);
71PyObject * libxml_xmlAttrPtrWrap(xmlAttrPtr attr);
72PyObject * libxml_xmlNsPtrWrap(xmlNsPtr ns);
73PyObject * libxml_xmlAttributePtrWrap(xmlAttributePtr ns);
74PyObject * libxml_xmlElementPtrWrap(xmlElementPtr ns);
75PyObject * libxml_doubleWrap(double val);
76PyObject * libxml_xmlXPathContextPtrWrap(xmlXPathContextPtr ctxt);
77PyObject * libxml_xmlParserCtxtPtrWrap(xmlParserCtxtPtr ctxt);
78PyObject * libxml_xmlXPathParserContextPtrWrap(xmlXPathParserContextPtr ctxt);
79PyObject * libxml_xmlXPathObjectPtrWrap(xmlXPathObjectPtr obj);
80PyObject * libxml_xmlCatalogPtrWrap(xmlCatalogPtr obj);
81PyObject * libxml_xmlURIPtrWrap(xmlURIPtr uri);
82PyObject * libxml_xmlOutputBufferPtrWrap(xmlOutputBufferPtr buffer);
83PyObject * libxml_xmlParserInputBufferPtrWrap(xmlParserInputBufferPtr buffer);
84PyObject * libxml_xmlRegexpPtrWrap(xmlRegexpPtr regexp);
85
86xmlXPathObjectPtr libxml_xmlXPathObjectPtrConvert(PyObject * obj);
87