Imported Upstream version 4.5.2
[platform/upstream/python-lxml.git] / src / lxml / lxml.etree.h
1 /* Generated by Cython 0.29.21 */
2
3 #ifndef __PYX_HAVE__lxml__etree
4 #define __PYX_HAVE__lxml__etree
5
6 #include "Python.h"
7 struct LxmlDocument;
8 struct LxmlElement;
9 struct LxmlElementTree;
10 struct LxmlElementTagMatcher;
11 struct LxmlElementIterator;
12 struct LxmlElementBase;
13 struct LxmlElementClassLookup;
14 struct LxmlFallbackElementClassLookup;
15
16 /* "lxml/etree.pyx":322
17  * 
18  * # type of a function that steps from node to node
19  * ctypedef public xmlNode* (*_node_to_node_function)(xmlNode*)             # <<<<<<<<<<<<<<
20  * 
21  * 
22  */
23 typedef xmlNode *(*_node_to_node_function)(xmlNode *);
24
25 /* "lxml/etree.pyx":338
26  * @cython.final
27  * @cython.freelist(8)
28  * cdef public class _Document [ type LxmlDocumentType, object LxmlDocument ]:             # <<<<<<<<<<<<<<
29  *     u"""Internal base class to reference a libxml document.
30  * 
31  */
32 struct LxmlDocument {
33   PyObject_HEAD
34   struct __pyx_vtabstruct_4lxml_5etree__Document *__pyx_vtab;
35   int _ns_counter;
36   PyObject *_prefix_tail;
37   xmlDoc *_c_doc;
38   struct __pyx_obj_4lxml_5etree__BaseParser *_parser;
39 };
40
41 /* "lxml/etree.pyx":687
42  * 
43  * @cython.no_gc_clear
44  * cdef public class _Element [ type LxmlElementType, object LxmlElement ]:             # <<<<<<<<<<<<<<
45  *     u"""Element class.
46  * 
47  */
48 struct LxmlElement {
49   PyObject_HEAD
50   struct LxmlDocument *_doc;
51   xmlNode *_c_node;
52   PyObject *_tag;
53 };
54
55 /* "lxml/etree.pyx":1854
56  * 
57  * 
58  * cdef public class _ElementTree [ type LxmlElementTreeType,             # <<<<<<<<<<<<<<
59  *                                  object LxmlElementTree ]:
60  *     cdef _Document _doc
61  */
62 struct LxmlElementTree {
63   PyObject_HEAD
64   struct __pyx_vtabstruct_4lxml_5etree__ElementTree *__pyx_vtab;
65   struct LxmlDocument *_doc;
66   struct LxmlElement *_context_node;
67 };
68
69 /* "lxml/etree.pyx":2598
70  * 
71  * 
72  * cdef public class _ElementTagMatcher [ object LxmlElementTagMatcher,             # <<<<<<<<<<<<<<
73  *                                        type LxmlElementTagMatcherType ]:
74  *     """
75  */
76 struct LxmlElementTagMatcher {
77   PyObject_HEAD
78   struct __pyx_vtabstruct_4lxml_5etree__ElementTagMatcher *__pyx_vtab;
79   PyObject *_pystrings;
80   int _node_type;
81   char *_href;
82   char *_name;
83 };
84
85 /* "lxml/etree.pyx":2629
86  *                 self._name = NULL
87  * 
88  * cdef public class _ElementIterator(_ElementTagMatcher) [             # <<<<<<<<<<<<<<
89  *     object LxmlElementIterator, type LxmlElementIteratorType ]:
90  *     """
91  */
92 struct LxmlElementIterator {
93   struct LxmlElementTagMatcher __pyx_base;
94   struct LxmlElement *_node;
95   _node_to_node_function _next_element;
96 };
97
98 /* "src/lxml/classlookup.pxi":6
99  * # Custom Element classes
100  * 
101  * cdef public class ElementBase(_Element) [ type LxmlElementBaseType,             # <<<<<<<<<<<<<<
102  *                                           object LxmlElementBase ]:
103  *     u"""ElementBase(*children, attrib=None, nsmap=None, **_extra)
104  */
105 struct LxmlElementBase {
106   struct LxmlElement __pyx_base;
107 };
108
109 /* "src/lxml/classlookup.pxi":210
110  * # Element class lookup
111  * 
112  * ctypedef public object (*_element_class_lookup_function)(object, _Document, xmlNode*)             # <<<<<<<<<<<<<<
113  * 
114  * # class to store element class lookup functions
115  */
116 typedef PyObject *(*_element_class_lookup_function)(PyObject *, struct LxmlDocument *, xmlNode *);
117
118 /* "src/lxml/classlookup.pxi":213
119  * 
120  * # class to store element class lookup functions
121  * cdef public class ElementClassLookup [ type LxmlElementClassLookupType,             # <<<<<<<<<<<<<<
122  *                                        object LxmlElementClassLookup ]:
123  *     u"""ElementClassLookup(self)
124  */
125 struct LxmlElementClassLookup {
126   PyObject_HEAD
127   _element_class_lookup_function _lookup_function;
128 };
129
130 /* "src/lxml/classlookup.pxi":221
131  * 
132  * 
133  * cdef public class FallbackElementClassLookup(ElementClassLookup) \             # <<<<<<<<<<<<<<
134  *          [ type LxmlFallbackElementClassLookupType,
135  *            object LxmlFallbackElementClassLookup ]:
136  */
137 struct LxmlFallbackElementClassLookup {
138   struct LxmlElementClassLookup __pyx_base;
139   struct __pyx_vtabstruct_4lxml_5etree_FallbackElementClassLookup *__pyx_vtab;
140   struct LxmlElementClassLookup *fallback;
141   _element_class_lookup_function _fallback_function;
142 };
143
144 #ifndef __PYX_HAVE_API__lxml__etree
145
146 #ifndef __PYX_EXTERN_C
147   #ifdef __cplusplus
148     #define __PYX_EXTERN_C extern "C"
149   #else
150     #define __PYX_EXTERN_C extern
151   #endif
152 #endif
153
154 #ifndef DL_IMPORT
155   #define DL_IMPORT(_T) _T
156 #endif
157
158 __PYX_EXTERN_C DL_IMPORT(PyTypeObject) LxmlDocumentType;
159 __PYX_EXTERN_C DL_IMPORT(PyTypeObject) LxmlElementType;
160 __PYX_EXTERN_C DL_IMPORT(PyTypeObject) LxmlElementTreeType;
161 __PYX_EXTERN_C DL_IMPORT(PyTypeObject) LxmlElementTagMatcherType;
162 __PYX_EXTERN_C DL_IMPORT(PyTypeObject) LxmlElementIteratorType;
163 __PYX_EXTERN_C DL_IMPORT(PyTypeObject) LxmlElementBaseType;
164 __PYX_EXTERN_C DL_IMPORT(PyTypeObject) LxmlElementClassLookupType;
165 __PYX_EXTERN_C DL_IMPORT(PyTypeObject) LxmlFallbackElementClassLookupType;
166
167 __PYX_EXTERN_C struct LxmlElement *deepcopyNodeToDocument(struct LxmlDocument *, xmlNode *);
168 __PYX_EXTERN_C struct LxmlElementTree *elementTreeFactory(struct LxmlElement *);
169 __PYX_EXTERN_C struct LxmlElementTree *newElementTree(struct LxmlElement *, PyObject *);
170 __PYX_EXTERN_C struct LxmlElementTree *adoptExternalDocument(xmlDoc *, PyObject *, int);
171 __PYX_EXTERN_C struct LxmlElement *elementFactory(struct LxmlDocument *, xmlNode *);
172 __PYX_EXTERN_C struct LxmlElement *makeElement(PyObject *, struct LxmlDocument *, PyObject *, PyObject *, PyObject *, PyObject *, PyObject *);
173 __PYX_EXTERN_C struct LxmlElement *makeSubElement(struct LxmlElement *, PyObject *, PyObject *, PyObject *, PyObject *, PyObject *);
174 __PYX_EXTERN_C void setElementClassLookupFunction(_element_class_lookup_function, PyObject *);
175 __PYX_EXTERN_C PyObject *lookupDefaultElementClass(PyObject *, PyObject *, xmlNode *);
176 __PYX_EXTERN_C PyObject *lookupNamespaceElementClass(PyObject *, PyObject *, xmlNode *);
177 __PYX_EXTERN_C PyObject *callLookupFallback(struct LxmlFallbackElementClassLookup *, struct LxmlDocument *, xmlNode *);
178 __PYX_EXTERN_C int tagMatches(xmlNode *, const xmlChar *, const xmlChar *);
179 __PYX_EXTERN_C struct LxmlDocument *documentOrRaise(PyObject *);
180 __PYX_EXTERN_C struct LxmlElement *rootNodeOrRaise(PyObject *);
181 __PYX_EXTERN_C int hasText(xmlNode *);
182 __PYX_EXTERN_C int hasTail(xmlNode *);
183 __PYX_EXTERN_C PyObject *textOf(xmlNode *);
184 __PYX_EXTERN_C PyObject *tailOf(xmlNode *);
185 __PYX_EXTERN_C int setNodeText(xmlNode *, PyObject *);
186 __PYX_EXTERN_C int setTailText(xmlNode *, PyObject *);
187 __PYX_EXTERN_C PyObject *attributeValue(xmlNode *, xmlAttr *);
188 __PYX_EXTERN_C PyObject *attributeValueFromNsName(xmlNode *, const xmlChar *, const xmlChar *);
189 __PYX_EXTERN_C PyObject *getAttributeValue(struct LxmlElement *, PyObject *, PyObject *);
190 __PYX_EXTERN_C PyObject *iterattributes(struct LxmlElement *, int);
191 __PYX_EXTERN_C PyObject *collectAttributes(xmlNode *, int);
192 __PYX_EXTERN_C int setAttributeValue(struct LxmlElement *, PyObject *, PyObject *);
193 __PYX_EXTERN_C int delAttribute(struct LxmlElement *, PyObject *);
194 __PYX_EXTERN_C int delAttributeFromNsName(xmlNode *, const xmlChar *, const xmlChar *);
195 __PYX_EXTERN_C int hasChild(xmlNode *);
196 __PYX_EXTERN_C xmlNode *findChild(xmlNode *, Py_ssize_t);
197 __PYX_EXTERN_C xmlNode *findChildForwards(xmlNode *, Py_ssize_t);
198 __PYX_EXTERN_C xmlNode *findChildBackwards(xmlNode *, Py_ssize_t);
199 __PYX_EXTERN_C xmlNode *nextElement(xmlNode *);
200 __PYX_EXTERN_C xmlNode *previousElement(xmlNode *);
201 __PYX_EXTERN_C void appendChild(struct LxmlElement *, struct LxmlElement *);
202 __PYX_EXTERN_C int appendChildToElement(struct LxmlElement *, struct LxmlElement *);
203 __PYX_EXTERN_C PyObject *pyunicode(const xmlChar *);
204 __PYX_EXTERN_C PyObject *utf8(PyObject *);
205 __PYX_EXTERN_C PyObject *getNsTag(PyObject *);
206 __PYX_EXTERN_C PyObject *getNsTagWithEmptyNs(PyObject *);
207 __PYX_EXTERN_C PyObject *namespacedName(xmlNode *);
208 __PYX_EXTERN_C PyObject *namespacedNameFromNsName(const xmlChar *, const xmlChar *);
209 __PYX_EXTERN_C void iteratorStoreNext(struct LxmlElementIterator *, struct LxmlElement *);
210 __PYX_EXTERN_C void initTagMatch(struct LxmlElementTagMatcher *, PyObject *);
211 __PYX_EXTERN_C xmlNs *findOrBuildNodeNsPrefix(struct LxmlDocument *, xmlNode *, const xmlChar *, const xmlChar *);
212
213 #endif /* !__PYX_HAVE_API__lxml__etree */
214
215 /* WARNING: the interface of the module init function changed in CPython 3.5. */
216 /* It now returns a PyModuleDef instance instead of a PyModule instance. */
217
218 #if PY_MAJOR_VERSION < 3
219 PyMODINIT_FUNC initetree(void);
220 #else
221 PyMODINIT_FUNC PyInit_etree(void);
222 #endif
223
224 #endif /* !__PYX_HAVE__lxml__etree */