Index: third_party/libxml/src/python/libxml_wrap.h |
diff --git a/third_party/libxml/src/python/libxml_wrap.h b/third_party/libxml/src/python/libxml_wrap.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..53a061807e9ddcde35244a5add014f0b7e89a80d |
--- /dev/null |
+++ b/third_party/libxml/src/python/libxml_wrap.h |
@@ -0,0 +1,279 @@ |
+#include <Python.h> |
+#include <libxml/tree.h> |
+#include <libxml/parser.h> |
+#include <libxml/parserInternals.h> |
+#include <libxml/catalog.h> |
+#include <libxml/threads.h> |
+#include <libxml/nanoftp.h> |
+#include <libxml/nanohttp.h> |
+#include <libxml/uri.h> |
+#include <libxml/xpath.h> |
+#include <libxml/xpathInternals.h> |
+#include <libxml/debugXML.h> |
+#include <libxml/HTMLparser.h> |
+#include <libxml/HTMLtree.h> |
+#include <libxml/xinclude.h> |
+#include <libxml/xpointer.h> |
+#include <libxml/xmlunicode.h> |
+#include <libxml/xmlregexp.h> |
+#include <libxml/xmlautomata.h> |
+#include <libxml/xmlreader.h> |
+#ifdef LIBXML_SCHEMAS_ENABLED |
+#include <libxml/relaxng.h> |
+#include <libxml/xmlschemas.h> |
+#endif |
+ |
+/* |
+ * for older versions of Python, we don't use PyBytes, but keep PyString |
+ * and don't use Capsule but CObjects |
+ */ |
+#if PY_VERSION_HEX < 0x02070000 |
+#ifndef PyBytes_Check |
+#define PyBytes_Check PyString_Check |
+#define PyBytes_Size PyString_Size |
+#define PyBytes_AsString PyString_AsString |
+#define PyBytes_AS_STRING PyString_AS_STRING |
+#define PyBytes_GET_SIZE PyString_GET_SIZE |
+#endif |
+#ifndef PyCapsule_New |
+#define PyCapsule_New PyCObject_FromVoidPtrAndDesc |
+#define PyCapsule_CheckExact PyCObject_Check |
+#define PyCapsule_GetPointer(o, n) PyCObject_GetDesc((o)) |
+#endif |
+#endif |
+ |
+/** |
+ * ATTRIBUTE_UNUSED: |
+ * |
+ * Macro used to signal to GCC unused function parameters |
+ * Repeated here since the definition is not available when |
+ * compiled outside the libxml2 build tree. |
+ */ |
+#ifdef __GNUC__ |
+#ifdef ATTRIBUTE_UNUSED |
+#undef ATTRIBUTE_UNUSED |
+#endif |
+#ifndef ATTRIBUTE_UNUSED |
+#define ATTRIBUTE_UNUSED __attribute__ ((__unused__)) |
+#endif /* ATTRIBUTE_UNUSED */ |
+#else |
+#define ATTRIBUTE_UNUSED |
+#endif |
+ |
+#define PyxmlNode_Get(v) (((v) == Py_None) ? NULL : \ |
+ (((PyxmlNode_Object *)(v))->obj)) |
+ |
+typedef struct { |
+ PyObject_HEAD |
+ xmlNodePtr obj; |
+} PyxmlNode_Object; |
+ |
+#define PyxmlXPathContext_Get(v) (((v) == Py_None) ? NULL : \ |
+ (((PyxmlXPathContext_Object *)(v))->obj)) |
+ |
+typedef struct { |
+ PyObject_HEAD |
+ xmlXPathContextPtr obj; |
+} PyxmlXPathContext_Object; |
+ |
+#define PyxmlXPathParserContext_Get(v) (((v) == Py_None) ? NULL : \ |
+ (((PyxmlXPathParserContext_Object *)(v))->obj)) |
+ |
+typedef struct { |
+ PyObject_HEAD |
+ xmlXPathParserContextPtr obj; |
+} PyxmlXPathParserContext_Object; |
+ |
+#define PyparserCtxt_Get(v) (((v) == Py_None) ? NULL : \ |
+ (((PyparserCtxt_Object *)(v))->obj)) |
+ |
+typedef struct { |
+ PyObject_HEAD |
+ xmlParserCtxtPtr obj; |
+} PyparserCtxt_Object; |
+ |
+#define PyValidCtxt_Get(v) (((v) == Py_None) ? NULL : \ |
+ (((PyValidCtxt_Object *)(v))->obj)) |
+ |
+typedef struct { |
+ PyObject_HEAD |
+ xmlValidCtxtPtr obj; |
+} PyValidCtxt_Object; |
+ |
+#define Pycatalog_Get(v) (((v) == Py_None) ? NULL : \ |
+ (((Pycatalog_Object *)(v))->obj)) |
+ |
+typedef struct { |
+ PyObject_HEAD |
+ xmlCatalogPtr obj; |
+} Pycatalog_Object; |
+ |
+#ifdef LIBXML_REGEXP_ENABLED |
+#define PyxmlReg_Get(v) (((v) == Py_None) ? NULL : \ |
+ (((PyxmlReg_Object *)(v))->obj)) |
+ |
+typedef struct { |
+ PyObject_HEAD |
+ xmlRegexpPtr obj; |
+} PyxmlReg_Object; |
+#endif /* LIBXML_REGEXP_ENABLED */ |
+ |
+#ifdef LIBXML_READER_ENABLED |
+#define PyxmlTextReader_Get(v) (((v) == Py_None) ? NULL : \ |
+ (((PyxmlTextReader_Object *)(v))->obj)) |
+ |
+typedef struct { |
+ PyObject_HEAD |
+ xmlTextReaderPtr obj; |
+} PyxmlTextReader_Object; |
+ |
+#define PyxmlTextReaderLocator_Get(v) (((v) == Py_None) ? NULL : \ |
+ (((PyxmlTextReaderLocator_Object *)(v))->obj)) |
+ |
+typedef struct { |
+ PyObject_HEAD |
+ xmlTextReaderLocatorPtr obj; |
+} PyxmlTextReaderLocator_Object; |
+#endif |
+ |
+#define PyURI_Get(v) (((v) == Py_None) ? NULL : \ |
+ (((PyURI_Object *)(v))->obj)) |
+ |
+typedef struct { |
+ PyObject_HEAD |
+ xmlErrorPtr obj; |
+} PyError_Object; |
+ |
+#define PyError_Get(v) (((v) == Py_None) ? NULL : \ |
+ (((PyError_Object *)(v))->obj)) |
+ |
+typedef struct { |
+ PyObject_HEAD |
+ xmlOutputBufferPtr obj; |
+} PyoutputBuffer_Object; |
+ |
+#define PyoutputBuffer_Get(v) (((v) == Py_None) ? NULL : \ |
+ (((PyoutputBuffer_Object *)(v))->obj)) |
+ |
+typedef struct { |
+ PyObject_HEAD |
+ xmlParserInputBufferPtr obj; |
+} PyinputBuffer_Object; |
+ |
+#define PyinputBuffer_Get(v) (((v) == Py_None) ? NULL : \ |
+ (((PyinputBuffer_Object *)(v))->obj)) |
+ |
+typedef struct { |
+ PyObject_HEAD |
+ xmlURIPtr obj; |
+} PyURI_Object; |
+ |
+/* FILE * have their own internal representation */ |
+#if PY_MAJOR_VERSION >= 3 |
+FILE *libxml_PyFileGet(PyObject *f); |
+void libxml_PyFileRelease(FILE *f); |
+#define PyFile_Get(v) (((v) == Py_None) ? NULL : libxml_PyFileGet(v)) |
+#define PyFile_Release(f) libxml_PyFileRelease(f) |
+#else |
+#define PyFile_Get(v) (((v) == Py_None) ? NULL : \ |
+ (PyFile_Check(v) ? (PyFile_AsFile(v)) : stdout)) |
+#define PyFile_Release(f) |
+#endif |
+ |
+#ifdef LIBXML_SCHEMAS_ENABLED |
+typedef struct { |
+ PyObject_HEAD |
+ xmlRelaxNGPtr obj; |
+} PyrelaxNgSchema_Object; |
+ |
+#define PyrelaxNgSchema_Get(v) (((v) == Py_None) ? NULL : \ |
+ (((PyrelaxNgSchema_Object *)(v))->obj)) |
+ |
+typedef struct { |
+ PyObject_HEAD |
+ xmlRelaxNGParserCtxtPtr obj; |
+} PyrelaxNgParserCtxt_Object; |
+ |
+#define PyrelaxNgParserCtxt_Get(v) (((v) == Py_None) ? NULL : \ |
+ (((PyrelaxNgParserCtxt_Object *)(v))->obj)) |
+ |
+typedef struct { |
+ PyObject_HEAD |
+ xmlRelaxNGValidCtxtPtr obj; |
+} PyrelaxNgValidCtxt_Object; |
+ |
+#define PyrelaxNgValidCtxt_Get(v) (((v) == Py_None) ? NULL : \ |
+ (((PyrelaxNgValidCtxt_Object *)(v))->obj)) |
+ |
+typedef struct { |
+ PyObject_HEAD |
+ xmlSchemaPtr obj; |
+} PySchema_Object; |
+ |
+#define PySchema_Get(v) (((v) == Py_None) ? NULL : \ |
+ (((PySchema_Object *)(v))->obj)) |
+ |
+typedef struct { |
+ PyObject_HEAD |
+ xmlSchemaParserCtxtPtr obj; |
+} PySchemaParserCtxt_Object; |
+ |
+#define PySchemaParserCtxt_Get(v) (((v) == Py_None) ? NULL : \ |
+ (((PySchemaParserCtxt_Object *)(v))->obj)) |
+ |
+typedef struct { |
+ PyObject_HEAD |
+ xmlSchemaValidCtxtPtr obj; |
+} PySchemaValidCtxt_Object; |
+ |
+#define PySchemaValidCtxt_Get(v) (((v) == Py_None) ? NULL : \ |
+ (((PySchemaValidCtxt_Object *)(v))->obj)) |
+ |
+#endif /* LIBXML_SCHEMAS_ENABLED */ |
+ |
+PyObject * libxml_intWrap(int val); |
+PyObject * libxml_longWrap(long val); |
+PyObject * libxml_xmlCharPtrWrap(xmlChar *str); |
+PyObject * libxml_constxmlCharPtrWrap(const xmlChar *str); |
+PyObject * libxml_charPtrWrap(char *str); |
+PyObject * libxml_constcharPtrWrap(const char *str); |
+PyObject * libxml_charPtrConstWrap(const char *str); |
+PyObject * libxml_xmlCharPtrConstWrap(const xmlChar *str); |
+PyObject * libxml_xmlDocPtrWrap(xmlDocPtr doc); |
+PyObject * libxml_xmlNodePtrWrap(xmlNodePtr node); |
+PyObject * libxml_xmlAttrPtrWrap(xmlAttrPtr attr); |
+PyObject * libxml_xmlNsPtrWrap(xmlNsPtr ns); |
+PyObject * libxml_xmlAttributePtrWrap(xmlAttributePtr ns); |
+PyObject * libxml_xmlElementPtrWrap(xmlElementPtr ns); |
+PyObject * libxml_doubleWrap(double val); |
+PyObject * libxml_xmlXPathContextPtrWrap(xmlXPathContextPtr ctxt); |
+PyObject * libxml_xmlParserCtxtPtrWrap(xmlParserCtxtPtr ctxt); |
+PyObject * libxml_xmlXPathParserContextPtrWrap(xmlXPathParserContextPtr ctxt); |
+PyObject * libxml_xmlXPathObjectPtrWrap(xmlXPathObjectPtr obj); |
+PyObject * libxml_xmlValidCtxtPtrWrap(xmlValidCtxtPtr valid); |
+PyObject * libxml_xmlCatalogPtrWrap(xmlCatalogPtr obj); |
+PyObject * libxml_xmlURIPtrWrap(xmlURIPtr uri); |
+PyObject * libxml_xmlOutputBufferPtrWrap(xmlOutputBufferPtr buffer); |
+PyObject * libxml_xmlParserInputBufferPtrWrap(xmlParserInputBufferPtr buffer); |
+#ifdef LIBXML_REGEXP_ENABLED |
+PyObject * libxml_xmlRegexpPtrWrap(xmlRegexpPtr regexp); |
+#endif /* LIBXML_REGEXP_ENABLED */ |
+#ifdef LIBXML_READER_ENABLED |
+PyObject * libxml_xmlTextReaderPtrWrap(xmlTextReaderPtr reader); |
+PyObject * libxml_xmlTextReaderLocatorPtrWrap(xmlTextReaderLocatorPtr locator); |
+#endif |
+ |
+xmlXPathObjectPtr libxml_xmlXPathObjectPtrConvert(PyObject * obj); |
+#ifdef LIBXML_SCHEMAS_ENABLED |
+PyObject * libxml_xmlRelaxNGPtrWrap(xmlRelaxNGPtr ctxt); |
+PyObject * libxml_xmlRelaxNGParserCtxtPtrWrap(xmlRelaxNGParserCtxtPtr ctxt); |
+PyObject * libxml_xmlRelaxNGValidCtxtPtrWrap(xmlRelaxNGValidCtxtPtr valid); |
+PyObject * libxml_xmlSchemaPtrWrap(xmlSchemaPtr ctxt); |
+PyObject * libxml_xmlSchemaParserCtxtPtrWrap(xmlSchemaParserCtxtPtr ctxt); |
+PyObject * libxml_xmlSchemaValidCtxtPtrWrap(xmlSchemaValidCtxtPtr valid); |
+#endif /* LIBXML_SCHEMAS_ENABLED */ |
+PyObject * libxml_xmlErrorPtrWrap(xmlErrorPtr error); |
+PyObject * libxml_xmlSchemaSetValidErrors(PyObject * self, PyObject * args); |
+PyObject * libxml_xmlRegisterInputCallback(PyObject *self, PyObject *args); |
+PyObject * libxml_xmlUnregisterInputCallback(PyObject *self, PyObject *args); |
+PyObject * libxml_xmlNodeRemoveNsDef(PyObject * self, PyObject * args); |