@helm2/poc_jenki_rce 0.0.1

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of @helm2/poc_jenki_rce might be problematic. Click here for more details.

Files changed (160) hide show
  1. package/LICENSE +19 -0
  2. package/Makefile +18 -0
  3. package/README.md +52 -0
  4. package/binding.gyp +81 -0
  5. package/index.d.ts +273 -0
  6. package/index.js +45 -0
  7. package/lib/bindings.js +1 -0
  8. package/lib/document.js +118 -0
  9. package/lib/element.js +82 -0
  10. package/lib/sax_parser.js +38 -0
  11. package/package.json +70 -0
  12. package/src/html_document.cc +7 -0
  13. package/src/html_document.h +18 -0
  14. package/src/libxmljs.cc +252 -0
  15. package/src/libxmljs.h +53 -0
  16. package/src/xml_attribute.cc +173 -0
  17. package/src/xml_attribute.h +40 -0
  18. package/src/xml_comment.cc +117 -0
  19. package/src/xml_comment.h +30 -0
  20. package/src/xml_document.cc +810 -0
  21. package/src/xml_document.h +67 -0
  22. package/src/xml_element.cc +565 -0
  23. package/src/xml_element.h +61 -0
  24. package/src/xml_namespace.cc +158 -0
  25. package/src/xml_namespace.h +39 -0
  26. package/src/xml_node.cc +761 -0
  27. package/src/xml_node.h +73 -0
  28. package/src/xml_pi.cc +161 -0
  29. package/src/xml_pi.h +34 -0
  30. package/src/xml_sax_parser.cc +424 -0
  31. package/src/xml_sax_parser.h +73 -0
  32. package/src/xml_syntax_error.cc +66 -0
  33. package/src/xml_syntax_error.h +25 -0
  34. package/src/xml_text.cc +320 -0
  35. package/src/xml_text.h +48 -0
  36. package/src/xml_textwriter.cc +315 -0
  37. package/src/xml_textwriter.h +62 -0
  38. package/src/xml_xpath_context.cc +70 -0
  39. package/src/xml_xpath_context.h +23 -0
  40. package/vendor/libxml/Copyright +23 -0
  41. package/vendor/libxml/DOCBparser.c +305 -0
  42. package/vendor/libxml/HTMLparser.c +7287 -0
  43. package/vendor/libxml/HTMLtree.c +1200 -0
  44. package/vendor/libxml/Makefile +2983 -0
  45. package/vendor/libxml/SAX.c +180 -0
  46. package/vendor/libxml/SAX2.c +3036 -0
  47. package/vendor/libxml/buf.c +1351 -0
  48. package/vendor/libxml/buf.h +72 -0
  49. package/vendor/libxml/c14n.c +2234 -0
  50. package/vendor/libxml/catalog.c +3828 -0
  51. package/vendor/libxml/chvalid.c +336 -0
  52. package/vendor/libxml/config.h +294 -0
  53. package/vendor/libxml/config.h.gch +0 -0
  54. package/vendor/libxml/debugXML.c +3423 -0
  55. package/vendor/libxml/dict.c +1298 -0
  56. package/vendor/libxml/elfgcchack.h +17818 -0
  57. package/vendor/libxml/enc.h +32 -0
  58. package/vendor/libxml/encoding.c +3975 -0
  59. package/vendor/libxml/entities.c +1163 -0
  60. package/vendor/libxml/error.c +998 -0
  61. package/vendor/libxml/globals.c +1126 -0
  62. package/vendor/libxml/hash.c +1146 -0
  63. package/vendor/libxml/include/libxml/DOCBparser.h +96 -0
  64. package/vendor/libxml/include/libxml/HTMLparser.h +306 -0
  65. package/vendor/libxml/include/libxml/HTMLtree.h +147 -0
  66. package/vendor/libxml/include/libxml/Makefile +725 -0
  67. package/vendor/libxml/include/libxml/Makefile.am +54 -0
  68. package/vendor/libxml/include/libxml/Makefile.in +725 -0
  69. package/vendor/libxml/include/libxml/SAX.h +173 -0
  70. package/vendor/libxml/include/libxml/SAX2.h +178 -0
  71. package/vendor/libxml/include/libxml/c14n.h +128 -0
  72. package/vendor/libxml/include/libxml/catalog.h +182 -0
  73. package/vendor/libxml/include/libxml/chvalid.h +230 -0
  74. package/vendor/libxml/include/libxml/debugXML.h +217 -0
  75. package/vendor/libxml/include/libxml/dict.h +79 -0
  76. package/vendor/libxml/include/libxml/encoding.h +245 -0
  77. package/vendor/libxml/include/libxml/entities.h +151 -0
  78. package/vendor/libxml/include/libxml/globals.h +508 -0
  79. package/vendor/libxml/include/libxml/hash.h +236 -0
  80. package/vendor/libxml/include/libxml/list.h +137 -0
  81. package/vendor/libxml/include/libxml/nanoftp.h +163 -0
  82. package/vendor/libxml/include/libxml/nanohttp.h +81 -0
  83. package/vendor/libxml/include/libxml/parser.h +1243 -0
  84. package/vendor/libxml/include/libxml/parserInternals.h +644 -0
  85. package/vendor/libxml/include/libxml/pattern.h +100 -0
  86. package/vendor/libxml/include/libxml/relaxng.h +217 -0
  87. package/vendor/libxml/include/libxml/schemasInternals.h +958 -0
  88. package/vendor/libxml/include/libxml/schematron.h +142 -0
  89. package/vendor/libxml/include/libxml/threads.h +89 -0
  90. package/vendor/libxml/include/libxml/tree.h +1311 -0
  91. package/vendor/libxml/include/libxml/uri.h +94 -0
  92. package/vendor/libxml/include/libxml/valid.h +458 -0
  93. package/vendor/libxml/include/libxml/xinclude.h +129 -0
  94. package/vendor/libxml/include/libxml/xlink.h +189 -0
  95. package/vendor/libxml/include/libxml/xmlIO.h +368 -0
  96. package/vendor/libxml/include/libxml/xmlautomata.h +146 -0
  97. package/vendor/libxml/include/libxml/xmlerror.h +945 -0
  98. package/vendor/libxml/include/libxml/xmlexports.h +77 -0
  99. package/vendor/libxml/include/libxml/xmlmemory.h +224 -0
  100. package/vendor/libxml/include/libxml/xmlmodule.h +57 -0
  101. package/vendor/libxml/include/libxml/xmlreader.h +428 -0
  102. package/vendor/libxml/include/libxml/xmlregexp.h +222 -0
  103. package/vendor/libxml/include/libxml/xmlsave.h +88 -0
  104. package/vendor/libxml/include/libxml/xmlschemas.h +246 -0
  105. package/vendor/libxml/include/libxml/xmlschemastypes.h +151 -0
  106. package/vendor/libxml/include/libxml/xmlstring.h +140 -0
  107. package/vendor/libxml/include/libxml/xmlunicode.h +202 -0
  108. package/vendor/libxml/include/libxml/xmlversion.h +484 -0
  109. package/vendor/libxml/include/libxml/xmlwin32version.h +239 -0
  110. package/vendor/libxml/include/libxml/xmlwriter.h +488 -0
  111. package/vendor/libxml/include/libxml/xpath.h +564 -0
  112. package/vendor/libxml/include/libxml/xpathInternals.h +632 -0
  113. package/vendor/libxml/include/libxml/xpointer.h +114 -0
  114. package/vendor/libxml/include/win32config.h +122 -0
  115. package/vendor/libxml/include/wsockcompat.h +54 -0
  116. package/vendor/libxml/legacy.c +1343 -0
  117. package/vendor/libxml/libxml.h +134 -0
  118. package/vendor/libxml/list.c +779 -0
  119. package/vendor/libxml/nanoftp.c +2118 -0
  120. package/vendor/libxml/nanohttp.c +1899 -0
  121. package/vendor/libxml/parser.c +15553 -0
  122. package/vendor/libxml/parserInternals.c +2164 -0
  123. package/vendor/libxml/pattern.c +2621 -0
  124. package/vendor/libxml/relaxng.c +11101 -0
  125. package/vendor/libxml/rngparser.c +1595 -0
  126. package/vendor/libxml/runsuite.c +1157 -0
  127. package/vendor/libxml/save.h +36 -0
  128. package/vendor/libxml/schematron.c +1787 -0
  129. package/vendor/libxml/threads.c +1049 -0
  130. package/vendor/libxml/timsort.h +601 -0
  131. package/vendor/libxml/tree.c +10183 -0
  132. package/vendor/libxml/trio.c +6895 -0
  133. package/vendor/libxml/trio.h +230 -0
  134. package/vendor/libxml/triodef.h +228 -0
  135. package/vendor/libxml/trionan.c +914 -0
  136. package/vendor/libxml/trionan.h +84 -0
  137. package/vendor/libxml/triop.h +150 -0
  138. package/vendor/libxml/triostr.c +2112 -0
  139. package/vendor/libxml/triostr.h +144 -0
  140. package/vendor/libxml/uri.c +2561 -0
  141. package/vendor/libxml/valid.c +7138 -0
  142. package/vendor/libxml/xinclude.c +2657 -0
  143. package/vendor/libxml/xlink.c +183 -0
  144. package/vendor/libxml/xmlIO.c +4135 -0
  145. package/vendor/libxml/xmlcatalog.c +624 -0
  146. package/vendor/libxml/xmllint.c +3796 -0
  147. package/vendor/libxml/xmlmemory.c +1163 -0
  148. package/vendor/libxml/xmlmodule.c +468 -0
  149. package/vendor/libxml/xmlreader.c +6033 -0
  150. package/vendor/libxml/xmlregexp.c +8271 -0
  151. package/vendor/libxml/xmlsave.c +2735 -0
  152. package/vendor/libxml/xmlschemas.c +29173 -0
  153. package/vendor/libxml/xmlschemastypes.c +6276 -0
  154. package/vendor/libxml/xmlstring.c +1050 -0
  155. package/vendor/libxml/xmlunicode.c +3179 -0
  156. package/vendor/libxml/xmlwriter.c +4738 -0
  157. package/vendor/libxml/xpath.c +14734 -0
  158. package/vendor/libxml/xpointer.c +2969 -0
  159. package/vendor/libxml/xzlib.c +815 -0
  160. package/vendor/libxml/xzlib.h +19 -0
@@ -0,0 +1,564 @@
1
+ /*
2
+ * Summary: XML Path Language implementation
3
+ * Description: API for the XML Path Language implementation
4
+ *
5
+ * XML Path Language implementation
6
+ * XPath is a language for addressing parts of an XML document,
7
+ * designed to be used by both XSLT and XPointer
8
+ * http://www.w3.org/TR/xpath
9
+ *
10
+ * Implements
11
+ * W3C Recommendation 16 November 1999
12
+ * http://www.w3.org/TR/1999/REC-xpath-19991116
13
+ *
14
+ * Copy: See Copyright for the status of this software.
15
+ *
16
+ * Author: Daniel Veillard
17
+ */
18
+
19
+ #ifndef __XML_XPATH_H__
20
+ #define __XML_XPATH_H__
21
+
22
+ #include <libxml/xmlversion.h>
23
+
24
+ #ifdef LIBXML_XPATH_ENABLED
25
+
26
+ #include <libxml/xmlerror.h>
27
+ #include <libxml/tree.h>
28
+ #include <libxml/hash.h>
29
+ #endif /* LIBXML_XPATH_ENABLED */
30
+
31
+ #if defined(LIBXML_XPATH_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED)
32
+ #ifdef __cplusplus
33
+ extern "C" {
34
+ #endif
35
+ #endif /* LIBXML_XPATH_ENABLED or LIBXML_SCHEMAS_ENABLED */
36
+
37
+ #ifdef LIBXML_XPATH_ENABLED
38
+
39
+ typedef struct _xmlXPathContext xmlXPathContext;
40
+ typedef xmlXPathContext *xmlXPathContextPtr;
41
+ typedef struct _xmlXPathParserContext xmlXPathParserContext;
42
+ typedef xmlXPathParserContext *xmlXPathParserContextPtr;
43
+
44
+ /**
45
+ * The set of XPath error codes.
46
+ */
47
+
48
+ typedef enum {
49
+ XPATH_EXPRESSION_OK = 0,
50
+ XPATH_NUMBER_ERROR,
51
+ XPATH_UNFINISHED_LITERAL_ERROR,
52
+ XPATH_START_LITERAL_ERROR,
53
+ XPATH_VARIABLE_REF_ERROR,
54
+ XPATH_UNDEF_VARIABLE_ERROR,
55
+ XPATH_INVALID_PREDICATE_ERROR,
56
+ XPATH_EXPR_ERROR,
57
+ XPATH_UNCLOSED_ERROR,
58
+ XPATH_UNKNOWN_FUNC_ERROR,
59
+ XPATH_INVALID_OPERAND,
60
+ XPATH_INVALID_TYPE,
61
+ XPATH_INVALID_ARITY,
62
+ XPATH_INVALID_CTXT_SIZE,
63
+ XPATH_INVALID_CTXT_POSITION,
64
+ XPATH_MEMORY_ERROR,
65
+ XPTR_SYNTAX_ERROR,
66
+ XPTR_RESOURCE_ERROR,
67
+ XPTR_SUB_RESOURCE_ERROR,
68
+ XPATH_UNDEF_PREFIX_ERROR,
69
+ XPATH_ENCODING_ERROR,
70
+ XPATH_INVALID_CHAR_ERROR,
71
+ XPATH_INVALID_CTXT,
72
+ XPATH_STACK_ERROR,
73
+ XPATH_FORBID_VARIABLE_ERROR,
74
+ XPATH_OP_LIMIT_EXCEEDED,
75
+ XPATH_RECURSION_LIMIT_EXCEEDED
76
+ } xmlXPathError;
77
+
78
+ /*
79
+ * A node-set (an unordered collection of nodes without duplicates).
80
+ */
81
+ typedef struct _xmlNodeSet xmlNodeSet;
82
+ typedef xmlNodeSet *xmlNodeSetPtr;
83
+ struct _xmlNodeSet {
84
+ int nodeNr; /* number of nodes in the set */
85
+ int nodeMax; /* size of the array as allocated */
86
+ xmlNodePtr *nodeTab; /* array of nodes in no particular order */
87
+ /* @@ with_ns to check whether namespace nodes should be looked at @@ */
88
+ };
89
+
90
+ /*
91
+ * An expression is evaluated to yield an object, which
92
+ * has one of the following four basic types:
93
+ * - node-set
94
+ * - boolean
95
+ * - number
96
+ * - string
97
+ *
98
+ * @@ XPointer will add more types !
99
+ */
100
+
101
+ typedef enum {
102
+ XPATH_UNDEFINED = 0,
103
+ XPATH_NODESET = 1,
104
+ XPATH_BOOLEAN = 2,
105
+ XPATH_NUMBER = 3,
106
+ XPATH_STRING = 4,
107
+ XPATH_POINT = 5,
108
+ XPATH_RANGE = 6,
109
+ XPATH_LOCATIONSET = 7,
110
+ XPATH_USERS = 8,
111
+ XPATH_XSLT_TREE = 9 /* An XSLT value tree, non modifiable */
112
+ } xmlXPathObjectType;
113
+
114
+ typedef struct _xmlXPathObject xmlXPathObject;
115
+ typedef xmlXPathObject *xmlXPathObjectPtr;
116
+ struct _xmlXPathObject {
117
+ xmlXPathObjectType type;
118
+ xmlNodeSetPtr nodesetval;
119
+ int boolval;
120
+ double floatval;
121
+ xmlChar *stringval;
122
+ void *user;
123
+ int index;
124
+ void *user2;
125
+ int index2;
126
+ };
127
+
128
+ /**
129
+ * xmlXPathConvertFunc:
130
+ * @obj: an XPath object
131
+ * @type: the number of the target type
132
+ *
133
+ * A conversion function is associated to a type and used to cast
134
+ * the new type to primitive values.
135
+ *
136
+ * Returns -1 in case of error, 0 otherwise
137
+ */
138
+ typedef int (*xmlXPathConvertFunc) (xmlXPathObjectPtr obj, int type);
139
+
140
+ /*
141
+ * Extra type: a name and a conversion function.
142
+ */
143
+
144
+ typedef struct _xmlXPathType xmlXPathType;
145
+ typedef xmlXPathType *xmlXPathTypePtr;
146
+ struct _xmlXPathType {
147
+ const xmlChar *name; /* the type name */
148
+ xmlXPathConvertFunc func; /* the conversion function */
149
+ };
150
+
151
+ /*
152
+ * Extra variable: a name and a value.
153
+ */
154
+
155
+ typedef struct _xmlXPathVariable xmlXPathVariable;
156
+ typedef xmlXPathVariable *xmlXPathVariablePtr;
157
+ struct _xmlXPathVariable {
158
+ const xmlChar *name; /* the variable name */
159
+ xmlXPathObjectPtr value; /* the value */
160
+ };
161
+
162
+ /**
163
+ * xmlXPathEvalFunc:
164
+ * @ctxt: an XPath parser context
165
+ * @nargs: the number of arguments passed to the function
166
+ *
167
+ * An XPath evaluation function, the parameters are on the XPath context stack.
168
+ */
169
+
170
+ typedef void (*xmlXPathEvalFunc)(xmlXPathParserContextPtr ctxt,
171
+ int nargs);
172
+
173
+ /*
174
+ * Extra function: a name and a evaluation function.
175
+ */
176
+
177
+ typedef struct _xmlXPathFunct xmlXPathFunct;
178
+ typedef xmlXPathFunct *xmlXPathFuncPtr;
179
+ struct _xmlXPathFunct {
180
+ const xmlChar *name; /* the function name */
181
+ xmlXPathEvalFunc func; /* the evaluation function */
182
+ };
183
+
184
+ /**
185
+ * xmlXPathAxisFunc:
186
+ * @ctxt: the XPath interpreter context
187
+ * @cur: the previous node being explored on that axis
188
+ *
189
+ * An axis traversal function. To traverse an axis, the engine calls
190
+ * the first time with cur == NULL and repeat until the function returns
191
+ * NULL indicating the end of the axis traversal.
192
+ *
193
+ * Returns the next node in that axis or NULL if at the end of the axis.
194
+ */
195
+
196
+ typedef xmlXPathObjectPtr (*xmlXPathAxisFunc) (xmlXPathParserContextPtr ctxt,
197
+ xmlXPathObjectPtr cur);
198
+
199
+ /*
200
+ * Extra axis: a name and an axis function.
201
+ */
202
+
203
+ typedef struct _xmlXPathAxis xmlXPathAxis;
204
+ typedef xmlXPathAxis *xmlXPathAxisPtr;
205
+ struct _xmlXPathAxis {
206
+ const xmlChar *name; /* the axis name */
207
+ xmlXPathAxisFunc func; /* the search function */
208
+ };
209
+
210
+ /**
211
+ * xmlXPathFunction:
212
+ * @ctxt: the XPath interprestation context
213
+ * @nargs: the number of arguments
214
+ *
215
+ * An XPath function.
216
+ * The arguments (if any) are popped out from the context stack
217
+ * and the result is pushed on the stack.
218
+ */
219
+
220
+ typedef void (*xmlXPathFunction) (xmlXPathParserContextPtr ctxt, int nargs);
221
+
222
+ /*
223
+ * Function and Variable Lookup.
224
+ */
225
+
226
+ /**
227
+ * xmlXPathVariableLookupFunc:
228
+ * @ctxt: an XPath context
229
+ * @name: name of the variable
230
+ * @ns_uri: the namespace name hosting this variable
231
+ *
232
+ * Prototype for callbacks used to plug variable lookup in the XPath
233
+ * engine.
234
+ *
235
+ * Returns the XPath object value or NULL if not found.
236
+ */
237
+ typedef xmlXPathObjectPtr (*xmlXPathVariableLookupFunc) (void *ctxt,
238
+ const xmlChar *name,
239
+ const xmlChar *ns_uri);
240
+
241
+ /**
242
+ * xmlXPathFuncLookupFunc:
243
+ * @ctxt: an XPath context
244
+ * @name: name of the function
245
+ * @ns_uri: the namespace name hosting this function
246
+ *
247
+ * Prototype for callbacks used to plug function lookup in the XPath
248
+ * engine.
249
+ *
250
+ * Returns the XPath function or NULL if not found.
251
+ */
252
+ typedef xmlXPathFunction (*xmlXPathFuncLookupFunc) (void *ctxt,
253
+ const xmlChar *name,
254
+ const xmlChar *ns_uri);
255
+
256
+ /**
257
+ * xmlXPathFlags:
258
+ * Flags for XPath engine compilation and runtime
259
+ */
260
+ /**
261
+ * XML_XPATH_CHECKNS:
262
+ *
263
+ * check namespaces at compilation
264
+ */
265
+ #define XML_XPATH_CHECKNS (1<<0)
266
+ /**
267
+ * XML_XPATH_NOVAR:
268
+ *
269
+ * forbid variables in expression
270
+ */
271
+ #define XML_XPATH_NOVAR (1<<1)
272
+
273
+ /**
274
+ * xmlXPathContext:
275
+ *
276
+ * Expression evaluation occurs with respect to a context.
277
+ * he context consists of:
278
+ * - a node (the context node)
279
+ * - a node list (the context node list)
280
+ * - a set of variable bindings
281
+ * - a function library
282
+ * - the set of namespace declarations in scope for the expression
283
+ * Following the switch to hash tables, this need to be trimmed up at
284
+ * the next binary incompatible release.
285
+ * The node may be modified when the context is passed to libxml2
286
+ * for an XPath evaluation so you may need to initialize it again
287
+ * before the next call.
288
+ */
289
+
290
+ struct _xmlXPathContext {
291
+ xmlDocPtr doc; /* The current document */
292
+ xmlNodePtr node; /* The current node */
293
+
294
+ int nb_variables_unused; /* unused (hash table) */
295
+ int max_variables_unused; /* unused (hash table) */
296
+ xmlHashTablePtr varHash; /* Hash table of defined variables */
297
+
298
+ int nb_types; /* number of defined types */
299
+ int max_types; /* max number of types */
300
+ xmlXPathTypePtr types; /* Array of defined types */
301
+
302
+ int nb_funcs_unused; /* unused (hash table) */
303
+ int max_funcs_unused; /* unused (hash table) */
304
+ xmlHashTablePtr funcHash; /* Hash table of defined funcs */
305
+
306
+ int nb_axis; /* number of defined axis */
307
+ int max_axis; /* max number of axis */
308
+ xmlXPathAxisPtr axis; /* Array of defined axis */
309
+
310
+ /* the namespace nodes of the context node */
311
+ xmlNsPtr *namespaces; /* Array of namespaces */
312
+ int nsNr; /* number of namespace in scope */
313
+ void *user; /* function to free */
314
+
315
+ /* extra variables */
316
+ int contextSize; /* the context size */
317
+ int proximityPosition; /* the proximity position */
318
+
319
+ /* extra stuff for XPointer */
320
+ int xptr; /* is this an XPointer context? */
321
+ xmlNodePtr here; /* for here() */
322
+ xmlNodePtr origin; /* for origin() */
323
+
324
+ /* the set of namespace declarations in scope for the expression */
325
+ xmlHashTablePtr nsHash; /* The namespaces hash table */
326
+ xmlXPathVariableLookupFunc varLookupFunc;/* variable lookup func */
327
+ void *varLookupData; /* variable lookup data */
328
+
329
+ /* Possibility to link in an extra item */
330
+ void *extra; /* needed for XSLT */
331
+
332
+ /* The function name and URI when calling a function */
333
+ const xmlChar *function;
334
+ const xmlChar *functionURI;
335
+
336
+ /* function lookup function and data */
337
+ xmlXPathFuncLookupFunc funcLookupFunc;/* function lookup func */
338
+ void *funcLookupData; /* function lookup data */
339
+
340
+ /* temporary namespace lists kept for walking the namespace axis */
341
+ xmlNsPtr *tmpNsList; /* Array of namespaces */
342
+ int tmpNsNr; /* number of namespaces in scope */
343
+
344
+ /* error reporting mechanism */
345
+ void *userData; /* user specific data block */
346
+ xmlStructuredErrorFunc error; /* the callback in case of errors */
347
+ xmlError lastError; /* the last error */
348
+ xmlNodePtr debugNode; /* the source node XSLT */
349
+
350
+ /* dictionary */
351
+ xmlDictPtr dict; /* dictionary if any */
352
+
353
+ int flags; /* flags to control compilation */
354
+
355
+ /* Cache for reusal of XPath objects */
356
+ void *cache;
357
+
358
+ /* Resource limits */
359
+ unsigned long opLimit;
360
+ unsigned long opCount;
361
+ int depth;
362
+ };
363
+
364
+ /*
365
+ * The structure of a compiled expression form is not public.
366
+ */
367
+
368
+ typedef struct _xmlXPathCompExpr xmlXPathCompExpr;
369
+ typedef xmlXPathCompExpr *xmlXPathCompExprPtr;
370
+
371
+ /**
372
+ * xmlXPathParserContext:
373
+ *
374
+ * An XPath parser context. It contains pure parsing information,
375
+ * an xmlXPathContext, and the stack of objects.
376
+ */
377
+ struct _xmlXPathParserContext {
378
+ const xmlChar *cur; /* the current char being parsed */
379
+ const xmlChar *base; /* the full expression */
380
+
381
+ int error; /* error code */
382
+
383
+ xmlXPathContextPtr context; /* the evaluation context */
384
+ xmlXPathObjectPtr value; /* the current value */
385
+ int valueNr; /* number of values stacked */
386
+ int valueMax; /* max number of values stacked */
387
+ xmlXPathObjectPtr *valueTab; /* stack of values */
388
+
389
+ xmlXPathCompExprPtr comp; /* the precompiled expression */
390
+ int xptr; /* it this an XPointer expression */
391
+ xmlNodePtr ancestor; /* used for walking preceding axis */
392
+
393
+ int valueFrame; /* used to limit Pop on the stack */
394
+ };
395
+
396
+ /************************************************************************
397
+ * *
398
+ * Public API *
399
+ * *
400
+ ************************************************************************/
401
+
402
+ /**
403
+ * Objects and Nodesets handling
404
+ */
405
+
406
+ XMLPUBVAR double xmlXPathNAN;
407
+ XMLPUBVAR double xmlXPathPINF;
408
+ XMLPUBVAR double xmlXPathNINF;
409
+
410
+ /* These macros may later turn into functions */
411
+ /**
412
+ * xmlXPathNodeSetGetLength:
413
+ * @ns: a node-set
414
+ *
415
+ * Implement a functionality similar to the DOM NodeList.length.
416
+ *
417
+ * Returns the number of nodes in the node-set.
418
+ */
419
+ #define xmlXPathNodeSetGetLength(ns) ((ns) ? (ns)->nodeNr : 0)
420
+ /**
421
+ * xmlXPathNodeSetItem:
422
+ * @ns: a node-set
423
+ * @index: index of a node in the set
424
+ *
425
+ * Implements a functionality similar to the DOM NodeList.item().
426
+ *
427
+ * Returns the xmlNodePtr at the given @index in @ns or NULL if
428
+ * @index is out of range (0 to length-1)
429
+ */
430
+ #define xmlXPathNodeSetItem(ns, index) \
431
+ ((((ns) != NULL) && \
432
+ ((index) >= 0) && ((index) < (ns)->nodeNr)) ? \
433
+ (ns)->nodeTab[(index)] \
434
+ : NULL)
435
+ /**
436
+ * xmlXPathNodeSetIsEmpty:
437
+ * @ns: a node-set
438
+ *
439
+ * Checks whether @ns is empty or not.
440
+ *
441
+ * Returns %TRUE if @ns is an empty node-set.
442
+ */
443
+ #define xmlXPathNodeSetIsEmpty(ns) \
444
+ (((ns) == NULL) || ((ns)->nodeNr == 0) || ((ns)->nodeTab == NULL))
445
+
446
+
447
+ XMLPUBFUN void XMLCALL
448
+ xmlXPathFreeObject (xmlXPathObjectPtr obj);
449
+ XMLPUBFUN xmlNodeSetPtr XMLCALL
450
+ xmlXPathNodeSetCreate (xmlNodePtr val);
451
+ XMLPUBFUN void XMLCALL
452
+ xmlXPathFreeNodeSetList (xmlXPathObjectPtr obj);
453
+ XMLPUBFUN void XMLCALL
454
+ xmlXPathFreeNodeSet (xmlNodeSetPtr obj);
455
+ XMLPUBFUN xmlXPathObjectPtr XMLCALL
456
+ xmlXPathObjectCopy (xmlXPathObjectPtr val);
457
+ XMLPUBFUN int XMLCALL
458
+ xmlXPathCmpNodes (xmlNodePtr node1,
459
+ xmlNodePtr node2);
460
+ /**
461
+ * Conversion functions to basic types.
462
+ */
463
+ XMLPUBFUN int XMLCALL
464
+ xmlXPathCastNumberToBoolean (double val);
465
+ XMLPUBFUN int XMLCALL
466
+ xmlXPathCastStringToBoolean (const xmlChar * val);
467
+ XMLPUBFUN int XMLCALL
468
+ xmlXPathCastNodeSetToBoolean(xmlNodeSetPtr ns);
469
+ XMLPUBFUN int XMLCALL
470
+ xmlXPathCastToBoolean (xmlXPathObjectPtr val);
471
+
472
+ XMLPUBFUN double XMLCALL
473
+ xmlXPathCastBooleanToNumber (int val);
474
+ XMLPUBFUN double XMLCALL
475
+ xmlXPathCastStringToNumber (const xmlChar * val);
476
+ XMLPUBFUN double XMLCALL
477
+ xmlXPathCastNodeToNumber (xmlNodePtr node);
478
+ XMLPUBFUN double XMLCALL
479
+ xmlXPathCastNodeSetToNumber (xmlNodeSetPtr ns);
480
+ XMLPUBFUN double XMLCALL
481
+ xmlXPathCastToNumber (xmlXPathObjectPtr val);
482
+
483
+ XMLPUBFUN xmlChar * XMLCALL
484
+ xmlXPathCastBooleanToString (int val);
485
+ XMLPUBFUN xmlChar * XMLCALL
486
+ xmlXPathCastNumberToString (double val);
487
+ XMLPUBFUN xmlChar * XMLCALL
488
+ xmlXPathCastNodeToString (xmlNodePtr node);
489
+ XMLPUBFUN xmlChar * XMLCALL
490
+ xmlXPathCastNodeSetToString (xmlNodeSetPtr ns);
491
+ XMLPUBFUN xmlChar * XMLCALL
492
+ xmlXPathCastToString (xmlXPathObjectPtr val);
493
+
494
+ XMLPUBFUN xmlXPathObjectPtr XMLCALL
495
+ xmlXPathConvertBoolean (xmlXPathObjectPtr val);
496
+ XMLPUBFUN xmlXPathObjectPtr XMLCALL
497
+ xmlXPathConvertNumber (xmlXPathObjectPtr val);
498
+ XMLPUBFUN xmlXPathObjectPtr XMLCALL
499
+ xmlXPathConvertString (xmlXPathObjectPtr val);
500
+
501
+ /**
502
+ * Context handling.
503
+ */
504
+ XMLPUBFUN xmlXPathContextPtr XMLCALL
505
+ xmlXPathNewContext (xmlDocPtr doc);
506
+ XMLPUBFUN void XMLCALL
507
+ xmlXPathFreeContext (xmlXPathContextPtr ctxt);
508
+ XMLPUBFUN int XMLCALL
509
+ xmlXPathContextSetCache(xmlXPathContextPtr ctxt,
510
+ int active,
511
+ int value,
512
+ int options);
513
+ /**
514
+ * Evaluation functions.
515
+ */
516
+ XMLPUBFUN long XMLCALL
517
+ xmlXPathOrderDocElems (xmlDocPtr doc);
518
+ XMLPUBFUN int XMLCALL
519
+ xmlXPathSetContextNode (xmlNodePtr node,
520
+ xmlXPathContextPtr ctx);
521
+ XMLPUBFUN xmlXPathObjectPtr XMLCALL
522
+ xmlXPathNodeEval (xmlNodePtr node,
523
+ const xmlChar *str,
524
+ xmlXPathContextPtr ctx);
525
+ XMLPUBFUN xmlXPathObjectPtr XMLCALL
526
+ xmlXPathEval (const xmlChar *str,
527
+ xmlXPathContextPtr ctx);
528
+ XMLPUBFUN xmlXPathObjectPtr XMLCALL
529
+ xmlXPathEvalExpression (const xmlChar *str,
530
+ xmlXPathContextPtr ctxt);
531
+ XMLPUBFUN int XMLCALL
532
+ xmlXPathEvalPredicate (xmlXPathContextPtr ctxt,
533
+ xmlXPathObjectPtr res);
534
+ /**
535
+ * Separate compilation/evaluation entry points.
536
+ */
537
+ XMLPUBFUN xmlXPathCompExprPtr XMLCALL
538
+ xmlXPathCompile (const xmlChar *str);
539
+ XMLPUBFUN xmlXPathCompExprPtr XMLCALL
540
+ xmlXPathCtxtCompile (xmlXPathContextPtr ctxt,
541
+ const xmlChar *str);
542
+ XMLPUBFUN xmlXPathObjectPtr XMLCALL
543
+ xmlXPathCompiledEval (xmlXPathCompExprPtr comp,
544
+ xmlXPathContextPtr ctx);
545
+ XMLPUBFUN int XMLCALL
546
+ xmlXPathCompiledEvalToBoolean(xmlXPathCompExprPtr comp,
547
+ xmlXPathContextPtr ctxt);
548
+ XMLPUBFUN void XMLCALL
549
+ xmlXPathFreeCompExpr (xmlXPathCompExprPtr comp);
550
+ #endif /* LIBXML_XPATH_ENABLED */
551
+ #if defined(LIBXML_XPATH_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED)
552
+ XMLPUBFUN void XMLCALL
553
+ xmlXPathInit (void);
554
+ XMLPUBFUN int XMLCALL
555
+ xmlXPathIsNaN (double val);
556
+ XMLPUBFUN int XMLCALL
557
+ xmlXPathIsInf (double val);
558
+
559
+ #ifdef __cplusplus
560
+ }
561
+ #endif
562
+
563
+ #endif /* LIBXML_XPATH_ENABLED or LIBXML_SCHEMAS_ENABLED*/
564
+ #endif /* ! __XML_XPATH_H__ */