eaa5e96998a618cef938c2d915d8945b477f1b70
[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  * ATTRIBUTE_UNUSED:
28  *
29  * Macro used to signal to GCC unused function parameters
30  * Repeated here since the definition is not available when
31  * compiled outside the libxml2 build tree.
32  */
33 #ifdef __GNUC__
34 #ifdef ATTRIBUTE_UNUSED
35 #undef ATTRIBUTE_UNUSED
36 #endif
37 #ifndef ATTRIBUTE_UNUSED
38 #define ATTRIBUTE_UNUSED __attribute__ ((__unused__))
39 #endif /* ATTRIBUTE_UNUSED */
40 #else
41 #define ATTRIBUTE_UNUSED
42 #endif
43
44 #define PyxmlNode_Get(v) (((v) == Py_None) ? NULL : \
45         (((PyxmlNode_Object *)(v))->obj))
46
47 typedef struct {
48     PyObject_HEAD
49     xmlNodePtr obj;
50 } PyxmlNode_Object;
51
52 #define PyxmlXPathContext_Get(v) (((v) == Py_None) ? NULL : \
53         (((PyxmlXPathContext_Object *)(v))->obj))
54
55 typedef struct {
56     PyObject_HEAD
57     xmlXPathContextPtr obj;
58 } PyxmlXPathContext_Object;
59
60 #define PyxmlXPathParserContext_Get(v) (((v) == Py_None) ? NULL : \
61         (((PyxmlXPathParserContext_Object *)(v))->obj))
62
63 typedef struct {
64     PyObject_HEAD
65     xmlXPathParserContextPtr obj;
66 } PyxmlXPathParserContext_Object;
67
68 #define PyparserCtxt_Get(v) (((v) == Py_None) ? NULL : \
69         (((PyparserCtxt_Object *)(v))->obj))
70
71 typedef struct {
72     PyObject_HEAD
73     xmlParserCtxtPtr obj;
74 } PyparserCtxt_Object;
75
76 #define PyValidCtxt_Get(v) (((v) == Py_None) ? NULL : \
77         (((PyValidCtxt_Object *)(v))->obj))
78
79 typedef struct {
80         PyObject_HEAD
81         xmlValidCtxtPtr obj;
82 } PyValidCtxt_Object;
83
84 #define Pycatalog_Get(v) (((v) == Py_None) ? NULL : \
85         (((Pycatalog_Object *)(v))->obj))
86
87 typedef struct {
88     PyObject_HEAD
89     xmlCatalogPtr obj;
90 } Pycatalog_Object;
91
92 #ifdef LIBXML_REGEXP_ENABLED
93 #define PyxmlReg_Get(v) (((v) == Py_None) ? NULL : \
94         (((PyxmlReg_Object *)(v))->obj))
95
96 typedef struct {
97     PyObject_HEAD
98     xmlRegexpPtr obj;
99 } PyxmlReg_Object;
100 #endif /* LIBXML_REGEXP_ENABLED */
101
102 #ifdef LIBXML_READER_ENABLED
103 #define PyxmlTextReader_Get(v) (((v) == Py_None) ? NULL : \
104         (((PyxmlTextReader_Object *)(v))->obj))
105
106 typedef struct {
107     PyObject_HEAD
108     xmlTextReaderPtr obj;
109 } PyxmlTextReader_Object;
110
111 #define PyxmlTextReaderLocator_Get(v) (((v) == Py_None) ? NULL : \
112         (((PyxmlTextReaderLocator_Object *)(v))->obj))
113
114 typedef struct {
115     PyObject_HEAD
116     xmlTextReaderLocatorPtr obj;
117 } PyxmlTextReaderLocator_Object;
118 #endif
119
120 #define PyURI_Get(v) (((v) == Py_None) ? NULL : \
121         (((PyURI_Object *)(v))->obj))
122
123 typedef struct {
124     PyObject_HEAD
125     xmlErrorPtr obj;
126 } PyError_Object;
127
128 #define PyError_Get(v) (((v) == Py_None) ? NULL : \
129         (((PyError_Object *)(v))->obj))
130
131 typedef struct {
132     PyObject_HEAD
133     xmlOutputBufferPtr obj;
134 } PyoutputBuffer_Object;
135
136 #define PyoutputBuffer_Get(v) (((v) == Py_None) ? NULL : \
137         (((PyoutputBuffer_Object *)(v))->obj))
138
139 typedef struct {
140     PyObject_HEAD
141     xmlParserInputBufferPtr obj;
142 } PyinputBuffer_Object;
143
144 #define PyinputBuffer_Get(v) (((v) == Py_None) ? NULL : \
145         (((PyinputBuffer_Object *)(v))->obj))
146
147 typedef struct {
148     PyObject_HEAD
149     xmlURIPtr obj;
150 } PyURI_Object;
151
152 /* FILE * have their own internal representation */
153 #define PyFile_Get(v) (((v) == Py_None) ? NULL : \
154         (PyFile_Check(v) ? (PyFile_AsFile(v)) : stdout))
155
156 #ifdef LIBXML_SCHEMAS_ENABLED
157 typedef struct {
158     PyObject_HEAD
159     xmlRelaxNGPtr obj;
160 } PyrelaxNgSchema_Object;
161
162 #define PyrelaxNgSchema_Get(v) (((v) == Py_None) ? NULL : \
163         (((PyrelaxNgSchema_Object *)(v))->obj))
164
165 typedef struct {
166     PyObject_HEAD
167     xmlRelaxNGParserCtxtPtr obj;
168 } PyrelaxNgParserCtxt_Object;
169
170 #define PyrelaxNgParserCtxt_Get(v) (((v) == Py_None) ? NULL : \
171         (((PyrelaxNgParserCtxt_Object *)(v))->obj))
172
173 typedef struct {
174     PyObject_HEAD
175     xmlRelaxNGValidCtxtPtr obj;
176 } PyrelaxNgValidCtxt_Object;
177
178 #define PyrelaxNgValidCtxt_Get(v) (((v) == Py_None) ? NULL : \
179         (((PyrelaxNgValidCtxt_Object *)(v))->obj))
180
181 typedef struct {
182         PyObject_HEAD
183         xmlSchemaPtr obj;
184 } PySchema_Object;
185
186 #define PySchema_Get(v) (((v) == Py_None) ? NULL : \
187         (((PySchema_Object *)(v))->obj))
188
189 typedef struct {
190         PyObject_HEAD
191         xmlSchemaParserCtxtPtr obj;
192 } PySchemaParserCtxt_Object;
193
194 #define PySchemaParserCtxt_Get(v) (((v) == Py_None) ? NULL : \
195         (((PySchemaParserCtxt_Object *)(v))->obj))
196
197 typedef struct {
198         PyObject_HEAD
199         xmlSchemaValidCtxtPtr obj;
200 } PySchemaValidCtxt_Object;
201
202 #define PySchemaValidCtxt_Get(v) (((v) == Py_None) ? NULL : \
203         (((PySchemaValidCtxt_Object *)(v))->obj))
204
205 #endif /* LIBXML_SCHEMAS_ENABLED */
206
207 PyObject * libxml_intWrap(int val);
208 PyObject * libxml_longWrap(long val);
209 PyObject * libxml_xmlCharPtrWrap(xmlChar *str);
210 PyObject * libxml_constxmlCharPtrWrap(const xmlChar *str);
211 PyObject * libxml_charPtrWrap(char *str);
212 PyObject * libxml_constcharPtrWrap(const char *str);
213 PyObject * libxml_charPtrConstWrap(const char *str);
214 PyObject * libxml_xmlCharPtrConstWrap(const xmlChar *str);
215 PyObject * libxml_xmlDocPtrWrap(xmlDocPtr doc);
216 PyObject * libxml_xmlNodePtrWrap(xmlNodePtr node);
217 PyObject * libxml_xmlAttrPtrWrap(xmlAttrPtr attr);
218 PyObject * libxml_xmlNsPtrWrap(xmlNsPtr ns);
219 PyObject * libxml_xmlAttributePtrWrap(xmlAttributePtr ns);
220 PyObject * libxml_xmlElementPtrWrap(xmlElementPtr ns);
221 PyObject * libxml_doubleWrap(double val);
222 PyObject * libxml_xmlXPathContextPtrWrap(xmlXPathContextPtr ctxt);
223 PyObject * libxml_xmlParserCtxtPtrWrap(xmlParserCtxtPtr ctxt);
224 PyObject * libxml_xmlXPathParserContextPtrWrap(xmlXPathParserContextPtr ctxt);
225 PyObject * libxml_xmlXPathObjectPtrWrap(xmlXPathObjectPtr obj);
226 PyObject * libxml_xmlValidCtxtPtrWrap(xmlValidCtxtPtr valid);
227 PyObject * libxml_xmlCatalogPtrWrap(xmlCatalogPtr obj);
228 PyObject * libxml_xmlURIPtrWrap(xmlURIPtr uri);
229 PyObject * libxml_xmlOutputBufferPtrWrap(xmlOutputBufferPtr buffer);
230 PyObject * libxml_xmlParserInputBufferPtrWrap(xmlParserInputBufferPtr buffer);
231 #ifdef LIBXML_REGEXP_ENABLED
232 PyObject * libxml_xmlRegexpPtrWrap(xmlRegexpPtr regexp);
233 #endif /* LIBXML_REGEXP_ENABLED */
234 #ifdef LIBXML_READER_ENABLED
235 PyObject * libxml_xmlTextReaderPtrWrap(xmlTextReaderPtr reader);
236 PyObject * libxml_xmlTextReaderLocatorPtrWrap(xmlTextReaderLocatorPtr locator);
237 #endif
238
239 xmlXPathObjectPtr libxml_xmlXPathObjectPtrConvert(PyObject * obj);
240 #ifdef LIBXML_SCHEMAS_ENABLED
241 PyObject * libxml_xmlRelaxNGPtrWrap(xmlRelaxNGPtr ctxt);
242 PyObject * libxml_xmlRelaxNGParserCtxtPtrWrap(xmlRelaxNGParserCtxtPtr ctxt);
243 PyObject * libxml_xmlRelaxNGValidCtxtPtrWrap(xmlRelaxNGValidCtxtPtr valid);
244 PyObject * libxml_xmlSchemaPtrWrap(xmlSchemaPtr ctxt);
245 PyObject * libxml_xmlSchemaParserCtxtPtrWrap(xmlSchemaParserCtxtPtr ctxt);
246 PyObject * libxml_xmlSchemaValidCtxtPtrWrap(xmlSchemaValidCtxtPtr valid);
247 #endif /* LIBXML_SCHEMAS_ENABLED */
248 PyObject * libxml_xmlErrorPtrWrap(xmlErrorPtr error);
249 PyObject * libxml_xmlSchemaSetValidErrors(PyObject * self, PyObject * args);