blob: efa79d047c23d68d055ae9f6d80c7c77a5dba473 [file] [log] [blame]
Daniel Veillard3ce52572002-02-03 15:08:05 +00001#include <Python.h>
Daniel Veillardd2897fd2002-01-30 16:37:32 +00002#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>
Daniel Veillard96fe0952002-01-30 20:52:23 +000013#include <libxml/HTMLparser.h>
14#include <libxml/HTMLtree.h>
15#include <libxml/xinclude.h>
Daniel Veillard1971ee22002-01-31 20:29:19 +000016#include <libxml/xpointer.h>
Daniel Veillardbd9afb52002-09-25 22:25:35 +000017#include <libxml/xmlunicode.h>
18#include <libxml/xmlregexp.h>
19#include <libxml/xmlautomata.h>
Daniel Veillard96fe0952002-01-30 20:52:23 +000020
Daniel Veillard36eea2d2002-02-04 00:17:01 +000021#define PyxmlNode_Get(v) (((v) == Py_None) ? NULL : \
22 (((PyxmlNode_Object *)(v))->obj))
Daniel Veillard96fe0952002-01-30 20:52:23 +000023
24typedef struct {
25 PyObject_HEAD
26 xmlNodePtr obj;
27} PyxmlNode_Object;
Daniel Veillardd2897fd2002-01-30 16:37:32 +000028
Daniel Veillard36eea2d2002-02-04 00:17:01 +000029#define PyxmlXPathContext_Get(v) (((v) == Py_None) ? NULL : \
30 (((PyxmlXPathContext_Object *)(v))->obj))
31
Daniel Veillard1971ee22002-01-31 20:29:19 +000032typedef struct {
33 PyObject_HEAD
34 xmlXPathContextPtr obj;
35} PyxmlXPathContext_Object;
36
Daniel Veillard7db38712002-02-07 16:39:11 +000037#define PyxmlXPathParserContext_Get(v) (((v) == Py_None) ? NULL : \
38 (((PyxmlXPathParserContext_Object *)(v))->obj))
39
40typedef struct {
41 PyObject_HEAD
42 xmlXPathParserContextPtr obj;
43} PyxmlXPathParserContext_Object;
44
Daniel Veillard36eea2d2002-02-04 00:17:01 +000045#define PyparserCtxt_Get(v) (((v) == Py_None) ? NULL : \
46 (((PyparserCtxt_Object *)(v))->obj))
47
Daniel Veillard3ce52572002-02-03 15:08:05 +000048typedef struct {
49 PyObject_HEAD
50 xmlParserCtxtPtr obj;
51} PyparserCtxt_Object;
52
Daniel Veillard7db38712002-02-07 16:39:11 +000053#define Pycatalog_Get(v) (((v) == Py_None) ? NULL : \
54 (((Pycatalog_Object *)(v))->obj))
55
56typedef struct {
57 PyObject_HEAD
58 xmlCatalogPtr obj;
59} Pycatalog_Object;
60
Daniel Veillardbd9afb52002-09-25 22:25:35 +000061#define PyxmlReg_Get(v) (((v) == Py_None) ? NULL : \
62 (((PyxmlReg_Object *)(v))->obj))
63
64typedef struct {
65 PyObject_HEAD
66 xmlRegexpPtr obj;
67} PyxmlReg_Object;
68
Daniel Veillard6361da02002-02-23 10:10:33 +000069#define PyURI_Get(v) (((v) == Py_None) ? NULL : \
70 (((PyURI_Object *)(v))->obj))
71
72typedef struct {
73 PyObject_HEAD
Daniel Veillardc6d4a932002-09-12 15:00:57 +000074 xmlOutputBufferPtr obj;
75} PyoutputBuffer_Object;
76
77#define PyoutputBuffer_Get(v) (((v) == Py_None) ? NULL : \
78 (((PyURI_Object *)(v))->obj))
79
80typedef struct {
81 PyObject_HEAD
82 xmlParserInputBufferPtr obj;
83} PyinputBuffer_Object;
84
85#define PyinputBuffer_Get(v) (((v) == Py_None) ? NULL : \
86 (((PyURI_Object *)(v))->obj))
87
88typedef struct {
89 PyObject_HEAD
Daniel Veillard6361da02002-02-23 10:10:33 +000090 xmlURIPtr obj;
91} PyURI_Object;
92
93/* FILE * have their own internal representation */
Daniel Veillard7db38712002-02-07 16:39:11 +000094#define PyFile_Get(v) (((v) == Py_None) ? NULL : \
Daniel Veillardbd9afb52002-09-25 22:25:35 +000095 (PyFile_Check(v) ? (PyFile_AsFile(v)) : stdout))
Daniel Veillard7db38712002-02-07 16:39:11 +000096
Daniel Veillard6361da02002-02-23 10:10:33 +000097
Daniel Veillardd2897fd2002-01-30 16:37:32 +000098PyObject * libxml_intWrap(int val);
Daniel Veillard4e1b26c2002-02-03 20:13:06 +000099PyObject * libxml_longWrap(long val);
Daniel Veillard1971ee22002-01-31 20:29:19 +0000100PyObject * libxml_xmlCharPtrWrap(xmlChar *str);
101PyObject * libxml_constxmlCharPtrWrap(const xmlChar *str);
102PyObject * libxml_charPtrWrap(char *str);
103PyObject * libxml_constcharPtrWrap(const char *str);
Daniel Veillardc575b992002-02-08 13:28:40 +0000104PyObject * libxml_charPtrConstWrap(const char *str);
105PyObject * libxml_xmlCharPtrConstWrap(const xmlChar *str);
Daniel Veillardd2897fd2002-01-30 16:37:32 +0000106PyObject * libxml_xmlDocPtrWrap(xmlDocPtr doc);
107PyObject * libxml_xmlNodePtrWrap(xmlNodePtr node);
108PyObject * libxml_xmlAttrPtrWrap(xmlAttrPtr attr);
Daniel Veillard1971ee22002-01-31 20:29:19 +0000109PyObject * libxml_xmlNsPtrWrap(xmlNsPtr ns);
110PyObject * libxml_xmlAttributePtrWrap(xmlAttributePtr ns);
111PyObject * libxml_xmlElementPtrWrap(xmlElementPtr ns);
Daniel Veillard96fe0952002-01-30 20:52:23 +0000112PyObject * libxml_doubleWrap(double val);
Daniel Veillard1971ee22002-01-31 20:29:19 +0000113PyObject * libxml_xmlXPathContextPtrWrap(xmlXPathContextPtr ctxt);
Daniel Veillard3ce52572002-02-03 15:08:05 +0000114PyObject * libxml_xmlParserCtxtPtrWrap(xmlParserCtxtPtr ctxt);
Daniel Veillard7db38712002-02-07 16:39:11 +0000115PyObject * libxml_xmlXPathParserContextPtrWrap(xmlXPathParserContextPtr ctxt);
Daniel Veillard1971ee22002-01-31 20:29:19 +0000116PyObject * libxml_xmlXPathObjectPtrWrap(xmlXPathObjectPtr obj);
Daniel Veillard7db38712002-02-07 16:39:11 +0000117PyObject * libxml_xmlCatalogPtrWrap(xmlCatalogPtr obj);
Daniel Veillard6361da02002-02-23 10:10:33 +0000118PyObject * libxml_xmlURIPtrWrap(xmlURIPtr uri);
Daniel Veillardc6d4a932002-09-12 15:00:57 +0000119PyObject * libxml_xmlOutputBufferPtrWrap(xmlOutputBufferPtr buffer);
120PyObject * libxml_xmlParserInputBufferPtrWrap(xmlParserInputBufferPtr buffer);
Daniel Veillardbd9afb52002-09-25 22:25:35 +0000121PyObject * libxml_xmlRegexpPtrWrap(xmlRegexpPtr regexp);
Daniel Veillard96fe0952002-01-30 20:52:23 +0000122
Daniel Veillard3ce52572002-02-03 15:08:05 +0000123xmlXPathObjectPtr libxml_xmlXPathObjectPtrConvert(PyObject * obj);