rolled back to 2.9.1 because 2.9.2 doesn't work with connecting net
[platform/upstream/libxml2.git] / python / libxml_wrap.h
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 #include <libxml/xmlunicode.h>
18 #include <libxml/xmlregexp.h>
19 #include <libxml/xmlautomata.h>
20 #include <libxml/xmlreader.h>
21 #ifdef LIBXML_SCHEMAS_ENABLED
22 #include <libxml/relaxng.h>
23 #include <libxml/xmlschemas.h>
24 #endif
25
26 /*
27  * for older versions of Python, we don't use PyBytes, but keep PyString
28  * and don't use Capsule but CObjects
29  */
30 #if PY_VERSION_HEX < 0x02070000
31 #ifndef PyBytes_Check
32 #define PyBytes_Check PyString_Check
33 #define PyBytes_Size PyString_Size
34 #define PyBytes_AsString PyString_AsString
35 #define PyBytes_AS_STRING PyString_AS_STRING
36 #define PyBytes_GET_SIZE PyString_GET_SIZE
37
38 #define PyCapsule_New PyCObject_FromVoidPtrAndDesc
39 #define PyCapsule_CheckExact PyCObject_Check
40 #define PyCapsule_GetPointer(o, n) PyCObject_GetDesc((o))
41
42 #endif
43 #endif
44
45 /**
46  * ATTRIBUTE_UNUSED:
47  *
48  * Macro used to signal to GCC unused function parameters
49  * Repeated here since the definition is not available when
50  * compiled outside the libxml2 build tree.
51  */
52 #ifdef __GNUC__
53 #ifdef ATTRIBUTE_UNUSED
54 #undef ATTRIBUTE_UNUSED
55 #endif
56 #ifndef ATTRIBUTE_UNUSED
57 #define ATTRIBUTE_UNUSED __attribute__ ((__unused__))
58 #endif /* ATTRIBUTE_UNUSED */
59 #else
60 #define ATTRIBUTE_UNUSED
61 #endif
62
63 #define PyxmlNode_Get(v) (((v) == Py_None) ? NULL : \
64         (((PyxmlNode_Object *)(v))->obj))
65
66 typedef struct {
67     PyObject_HEAD
68     xmlNodePtr obj;
69 } PyxmlNode_Object;
70
71 #define PyxmlXPathContext_Get(v) (((v) == Py_None) ? NULL : \
72         (((PyxmlXPathContext_Object *)(v))->obj))
73
74 typedef struct {
75     PyObject_HEAD
76     xmlXPathContextPtr obj;
77 } PyxmlXPathContext_Object;
78
79 #define PyxmlXPathParserContext_Get(v) (((v) == Py_None) ? NULL : \
80         (((PyxmlXPathParserContext_Object *)(v))->obj))
81
82 typedef struct {
83     PyObject_HEAD
84     xmlXPathParserContextPtr obj;
85 } PyxmlXPathParserContext_Object;
86
87 #define PyparserCtxt_Get(v) (((v) == Py_None) ? NULL : \
88         (((PyparserCtxt_Object *)(v))->obj))
89
90 typedef struct {
91     PyObject_HEAD
92     xmlParserCtxtPtr obj;
93 } PyparserCtxt_Object;
94
95 #define PyValidCtxt_Get(v) (((v) == Py_None) ? NULL : \
96         (((PyValidCtxt_Object *)(v))->obj))
97
98 typedef struct {
99         PyObject_HEAD
100         xmlValidCtxtPtr obj;
101 } PyValidCtxt_Object;
102
103 #define Pycatalog_Get(v) (((v) == Py_None) ? NULL : \
104         (((Pycatalog_Object *)(v))->obj))
105
106 typedef struct {
107     PyObject_HEAD
108     xmlCatalogPtr obj;
109 } Pycatalog_Object;
110
111 #ifdef LIBXML_REGEXP_ENABLED
112 #define PyxmlReg_Get(v) (((v) == Py_None) ? NULL : \
113         (((PyxmlReg_Object *)(v))->obj))
114
115 typedef struct {
116     PyObject_HEAD
117     xmlRegexpPtr obj;
118 } PyxmlReg_Object;
119 #endif /* LIBXML_REGEXP_ENABLED */
120
121 #ifdef LIBXML_READER_ENABLED
122 #define PyxmlTextReader_Get(v) (((v) == Py_None) ? NULL : \
123         (((PyxmlTextReader_Object *)(v))->obj))
124
125 typedef struct {
126     PyObject_HEAD
127     xmlTextReaderPtr obj;
128 } PyxmlTextReader_Object;
129
130 #define PyxmlTextReaderLocator_Get(v) (((v) == Py_None) ? NULL : \
131         (((PyxmlTextReaderLocator_Object *)(v))->obj))
132
133 typedef struct {
134     PyObject_HEAD
135     xmlTextReaderLocatorPtr obj;
136 } PyxmlTextReaderLocator_Object;
137 #endif
138
139 #define PyURI_Get(v) (((v) == Py_None) ? NULL : \
140         (((PyURI_Object *)(v))->obj))
141
142 typedef struct {
143     PyObject_HEAD
144     xmlErrorPtr obj;
145 } PyError_Object;
146
147 #define PyError_Get(v) (((v) == Py_None) ? NULL : \
148         (((PyError_Object *)(v))->obj))
149
150 typedef struct {
151     PyObject_HEAD
152     xmlOutputBufferPtr obj;
153 } PyoutputBuffer_Object;
154
155 #define PyoutputBuffer_Get(v) (((v) == Py_None) ? NULL : \
156         (((PyoutputBuffer_Object *)(v))->obj))
157
158 typedef struct {
159     PyObject_HEAD
160     xmlParserInputBufferPtr obj;
161 } PyinputBuffer_Object;
162
163 #define PyinputBuffer_Get(v) (((v) == Py_None) ? NULL : \
164         (((PyinputBuffer_Object *)(v))->obj))
165
166 typedef struct {
167     PyObject_HEAD
168     xmlURIPtr obj;
169 } PyURI_Object;
170
171 /* FILE * have their own internal representation */
172 #if PY_MAJOR_VERSION >= 3
173 FILE *libxml_PyFileGet(PyObject *f);
174 void libxml_PyFileRelease(FILE *f);
175 #define PyFile_Get(v) (((v) == Py_None) ? NULL : libxml_PyFileGet(v))
176 #define PyFile_Release(f) libxml_PyFileRelease(f)
177 #else
178 #define PyFile_Get(v) (((v) == Py_None) ? NULL : \
179         (PyFile_Check(v) ? (PyFile_AsFile(v)) : stdout))
180 #define PyFile_Release(f)
181 #endif
182
183 #ifdef LIBXML_SCHEMAS_ENABLED
184 typedef struct {
185     PyObject_HEAD
186     xmlRelaxNGPtr obj;
187 } PyrelaxNgSchema_Object;
188
189 #define PyrelaxNgSchema_Get(v) (((v) == Py_None) ? NULL : \
190         (((PyrelaxNgSchema_Object *)(v))->obj))
191
192 typedef struct {
193     PyObject_HEAD
194     xmlRelaxNGParserCtxtPtr obj;
195 } PyrelaxNgParserCtxt_Object;
196
197 #define PyrelaxNgParserCtxt_Get(v) (((v) == Py_None) ? NULL : \
198         (((PyrelaxNgParserCtxt_Object *)(v))->obj))
199
200 typedef struct {
201     PyObject_HEAD
202     xmlRelaxNGValidCtxtPtr obj;
203 } PyrelaxNgValidCtxt_Object;
204
205 #define PyrelaxNgValidCtxt_Get(v) (((v) == Py_None) ? NULL : \
206         (((PyrelaxNgValidCtxt_Object *)(v))->obj))
207
208 typedef struct {
209         PyObject_HEAD
210         xmlSchemaPtr obj;
211 } PySchema_Object;
212
213 #define PySchema_Get(v) (((v) == Py_None) ? NULL : \
214         (((PySchema_Object *)(v))->obj))
215
216 typedef struct {
217         PyObject_HEAD
218         xmlSchemaParserCtxtPtr obj;
219 } PySchemaParserCtxt_Object;
220
221 #define PySchemaParserCtxt_Get(v) (((v) == Py_None) ? NULL : \
222         (((PySchemaParserCtxt_Object *)(v))->obj))
223
224 typedef struct {
225         PyObject_HEAD
226         xmlSchemaValidCtxtPtr obj;
227 } PySchemaValidCtxt_Object;
228
229 #define PySchemaValidCtxt_Get(v) (((v) == Py_None) ? NULL : \
230         (((PySchemaValidCtxt_Object *)(v))->obj))
231
232 #endif /* LIBXML_SCHEMAS_ENABLED */
233
234 PyObject * libxml_intWrap(int val);
235 PyObject * libxml_longWrap(long val);
236 PyObject * libxml_xmlCharPtrWrap(xmlChar *str);
237 PyObject * libxml_constxmlCharPtrWrap(const xmlChar *str);
238 PyObject * libxml_charPtrWrap(char *str);
239 PyObject * libxml_constcharPtrWrap(const char *str);
240 PyObject * libxml_charPtrConstWrap(const char *str);
241 PyObject * libxml_xmlCharPtrConstWrap(const xmlChar *str);
242 PyObject * libxml_xmlDocPtrWrap(xmlDocPtr doc);
243 PyObject * libxml_xmlNodePtrWrap(xmlNodePtr node);
244 PyObject * libxml_xmlAttrPtrWrap(xmlAttrPtr attr);
245 PyObject * libxml_xmlNsPtrWrap(xmlNsPtr ns);
246 PyObject * libxml_xmlAttributePtrWrap(xmlAttributePtr ns);
247 PyObject * libxml_xmlElementPtrWrap(xmlElementPtr ns);
248 PyObject * libxml_doubleWrap(double val);
249 PyObject * libxml_xmlXPathContextPtrWrap(xmlXPathContextPtr ctxt);
250 PyObject * libxml_xmlParserCtxtPtrWrap(xmlParserCtxtPtr ctxt);
251 PyObject * libxml_xmlXPathParserContextPtrWrap(xmlXPathParserContextPtr ctxt);
252 PyObject * libxml_xmlXPathObjectPtrWrap(xmlXPathObjectPtr obj);
253 PyObject * libxml_xmlValidCtxtPtrWrap(xmlValidCtxtPtr valid);
254 PyObject * libxml_xmlCatalogPtrWrap(xmlCatalogPtr obj);
255 PyObject * libxml_xmlURIPtrWrap(xmlURIPtr uri);
256 PyObject * libxml_xmlOutputBufferPtrWrap(xmlOutputBufferPtr buffer);
257 PyObject * libxml_xmlParserInputBufferPtrWrap(xmlParserInputBufferPtr buffer);
258 #ifdef LIBXML_REGEXP_ENABLED
259 PyObject * libxml_xmlRegexpPtrWrap(xmlRegexpPtr regexp);
260 #endif /* LIBXML_REGEXP_ENABLED */
261 #ifdef LIBXML_READER_ENABLED
262 PyObject * libxml_xmlTextReaderPtrWrap(xmlTextReaderPtr reader);
263 PyObject * libxml_xmlTextReaderLocatorPtrWrap(xmlTextReaderLocatorPtr locator);
264 #endif
265
266 xmlXPathObjectPtr libxml_xmlXPathObjectPtrConvert(PyObject * obj);
267 #ifdef LIBXML_SCHEMAS_ENABLED
268 PyObject * libxml_xmlRelaxNGPtrWrap(xmlRelaxNGPtr ctxt);
269 PyObject * libxml_xmlRelaxNGParserCtxtPtrWrap(xmlRelaxNGParserCtxtPtr ctxt);
270 PyObject * libxml_xmlRelaxNGValidCtxtPtrWrap(xmlRelaxNGValidCtxtPtr valid);
271 PyObject * libxml_xmlSchemaPtrWrap(xmlSchemaPtr ctxt);
272 PyObject * libxml_xmlSchemaParserCtxtPtrWrap(xmlSchemaParserCtxtPtr ctxt);
273 PyObject * libxml_xmlSchemaValidCtxtPtrWrap(xmlSchemaValidCtxtPtr valid);
274 #endif /* LIBXML_SCHEMAS_ENABLED */
275 PyObject * libxml_xmlErrorPtrWrap(xmlErrorPtr error);
276 PyObject * libxml_xmlSchemaSetValidErrors(PyObject * self, PyObject * args);
277 PyObject * libxml_xmlRegisterInputCallback(PyObject *self, PyObject *args);
278 PyObject * libxml_xmlUnregisterInputCallback(PyObject *self, PyObject *args);
279 PyObject * libxml_xmlNodeRemoveNsDef(PyObject * self, PyObject * args);