/ lib / lxml / etree.h
etree.h
  1  /* Generated by Cython 0.29.32 */
  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":338
 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":354
 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":703
 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":1872
 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":2618
 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":2649
 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 */