summaryrefslogtreecommitdiff
path: root/src/lxml/includes/xpath.pxd
blob: 22069eb7cbb576b6236f53912f8529863a07cd08 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
from lxml.includes cimport tree
from lxml.includes cimport xmlerror

from libc.string cimport const_char
from lxml.includes.tree cimport xmlChar, const_xmlChar


cdef extern from "libxml/xpath.h" nogil:
    ctypedef enum xmlXPathObjectType:
        XPATH_UNDEFINED = 0
        XPATH_NODESET = 1
        XPATH_BOOLEAN = 2
        XPATH_NUMBER = 3
        XPATH_STRING = 4
        XPATH_POINT = 5
        XPATH_RANGE = 6
        XPATH_LOCATIONSET = 7
        XPATH_USERS = 8
        XPATH_XSLT_TREE = 9

    ctypedef enum xmlXPathError:
        XPATH_EXPRESSION_OK = 0
        XPATH_NUMBER_ERROR = 1
        XPATH_UNFINISHED_LITERAL_ERROR = 2
        XPATH_START_LITERAL_ERROR = 3
        XPATH_VARIABLE_REF_ERROR = 4
        XPATH_UNDEF_VARIABLE_ERROR = 5
        XPATH_INVALID_PREDICATE_ERROR = 6
        XPATH_EXPR_ERROR = 7
        XPATH_UNCLOSED_ERROR = 8
        XPATH_UNKNOWN_FUNC_ERROR = 9
        XPATH_INVALID_OPERAND = 10
        XPATH_INVALID_TYPE = 11
        XPATH_INVALID_ARITY = 12
        XPATH_INVALID_CTXT_SIZE = 13
        XPATH_INVALID_CTXT_POSITION = 14
        XPATH_MEMORY_ERROR = 15
        XPTR_SYNTAX_ERROR = 16
        XPTR_RESOURCE_ERROR = 17
        XPTR_SUB_RESOURCE_ERROR = 18
        XPATH_UNDEF_PREFIX_ERROR = 19
        XPATH_ENCODING_ERROR = 20
        XPATH_INVALID_CHAR_ERROR = 21
        XPATH_INVALID_CTXT = 22

    ctypedef struct xmlNodeSet:
        int nodeNr
        int nodeMax
        tree.xmlNode** nodeTab
        
    ctypedef struct xmlXPathObject:
        xmlXPathObjectType type
        xmlNodeSet* nodesetval
        bint boolval
        double floatval
        xmlChar* stringval

    ctypedef struct xmlXPathContext:
        tree.xmlDoc* doc
        tree.xmlNode* node
        tree.xmlDict* dict
        tree.xmlHashTable* nsHash
        const_xmlChar* function
        const_xmlChar* functionURI
        xmlerror.xmlStructuredErrorFunc error
        xmlerror.xmlError lastError
        void* userData

    ctypedef struct xmlXPathParserContext:
        xmlXPathContext* context
        xmlXPathObject* value
        tree.xmlNode* ancestor
        int error

    ctypedef struct xmlXPathCompExpr

    ctypedef void (*xmlXPathFunction)(xmlXPathParserContext* ctxt, int nargs)
    ctypedef xmlXPathFunction (*xmlXPathFuncLookupFunc)(void* ctxt,
                                                        const_xmlChar* name,
                                                        const_xmlChar* ns_uri)
    
    cdef xmlXPathContext* xmlXPathNewContext(tree.xmlDoc* doc)
    cdef xmlXPathObject* xmlXPathEvalExpression(const_xmlChar* str,
                                                xmlXPathContext* ctxt)
    cdef xmlXPathObject* xmlXPathCompiledEval(xmlXPathCompExpr* comp,
                                              xmlXPathContext* ctxt)
    cdef xmlXPathCompExpr* xmlXPathCompile(const_xmlChar* str)
    cdef xmlXPathCompExpr* xmlXPathCtxtCompile(xmlXPathContext* ctxt,
                                               const_xmlChar* str)
    cdef void xmlXPathFreeContext(xmlXPathContext* ctxt)
    cdef void xmlXPathFreeCompExpr(xmlXPathCompExpr* comp)
    cdef void xmlXPathFreeObject(xmlXPathObject* obj)
    cdef int xmlXPathRegisterNs(xmlXPathContext* ctxt,
                                const_xmlChar* prefix, const_xmlChar* ns_uri)
    
    cdef xmlNodeSet* xmlXPathNodeSetCreate(tree.xmlNode* val)
    cdef void xmlXPathFreeNodeSet(xmlNodeSet* val)


cdef extern from "libxml/xpathInternals.h" nogil:
    cdef int xmlXPathRegisterFunc(xmlXPathContext* ctxt,
                                  const_xmlChar* name,
                                  xmlXPathFunction f)
    cdef int xmlXPathRegisterFuncNS(xmlXPathContext* ctxt,
                                    const_xmlChar* name,
                                    const_xmlChar* ns_uri,
                                    xmlXPathFunction f)
    cdef void xmlXPathRegisterFuncLookup(xmlXPathContext *ctxt,
                                         xmlXPathFuncLookupFunc f,
                                         void *funcCtxt)
    cdef int xmlXPathRegisterVariable(xmlXPathContext *ctxt, 
                                      const_xmlChar* name,
                                      xmlXPathObject* value)
    cdef int xmlXPathRegisterVariableNS(xmlXPathContext *ctxt, 
                                        const_xmlChar* name,
                                        const_xmlChar* ns_uri,
                                        xmlXPathObject* value)
    cdef void xmlXPathRegisteredVariablesCleanup(xmlXPathContext *ctxt)
    cdef void xmlXPathRegisteredNsCleanup(xmlXPathContext *ctxt)
    cdef xmlXPathObject* valuePop (xmlXPathParserContext *ctxt)
    cdef int valuePush(xmlXPathParserContext* ctxt, xmlXPathObject *value)
    
    cdef xmlXPathObject* xmlXPathNewCString(const_char *val)
    cdef xmlXPathObject* xmlXPathWrapCString(const_char * val)
    cdef xmlXPathObject* xmlXPathNewString(const_xmlChar *val)
    cdef xmlXPathObject* xmlXPathWrapString(const_xmlChar * val)
    cdef xmlXPathObject* xmlXPathNewFloat(double val)
    cdef xmlXPathObject* xmlXPathNewBoolean(int val)
    cdef xmlXPathObject* xmlXPathNewNodeSet(tree.xmlNode* val)
    cdef xmlXPathObject* xmlXPathNewValueTree(tree.xmlNode* val)
    cdef void xmlXPathNodeSetAdd(xmlNodeSet* cur,
                                  tree.xmlNode* val)
    cdef void xmlXPathNodeSetAddUnique(xmlNodeSet* cur,
                                        tree.xmlNode* val)
    cdef xmlXPathObject* xmlXPathWrapNodeSet(xmlNodeSet* val)
    cdef void xmlXPathErr(xmlXPathParserContext* ctxt, int error)