12#ifndef __XML_XPATH_INTERNALS_H__
13#define __XML_XPATH_INTERNALS_H__
19#ifdef LIBXML_XPATH_ENABLED
42#define xmlXPathSetError(ctxt, err) \
43 { xmlXPatherror((ctxt), __FILE__, __LINE__, (err)); \
44 if ((ctxt) != NULL) (ctxt)->error = (err); }
52#define xmlXPathSetArityError(ctxt) \
53 xmlXPathSetError((ctxt), XPATH_INVALID_ARITY)
61#define xmlXPathSetTypeError(ctxt) \
62 xmlXPathSetError((ctxt), XPATH_INVALID_TYPE)
72#define xmlXPathGetError(ctxt) ((ctxt)->error)
82#define xmlXPathCheckError(ctxt) ((ctxt)->error != XPATH_EXPRESSION_OK)
92#define xmlXPathGetDocument(ctxt) ((ctxt)->context->doc)
102#define xmlXPathGetContextNode(ctxt) ((ctxt)->context->node)
105 xmlXPathPopBoolean (xmlXPathParserContextPtr ctxt);
107 xmlXPathPopNumber (xmlXPathParserContextPtr ctxt);
109 xmlXPathPopString (xmlXPathParserContextPtr ctxt);
111 xmlXPathPopNodeSet (xmlXPathParserContextPtr ctxt);
113 xmlXPathPopExternal (xmlXPathParserContextPtr ctxt);
122#define xmlXPathReturnBoolean(ctxt, val) \
123 valuePush((ctxt), xmlXPathNewBoolean(val))
131#define xmlXPathReturnTrue(ctxt) xmlXPathReturnBoolean((ctxt), 1)
139#define xmlXPathReturnFalse(ctxt) xmlXPathReturnBoolean((ctxt), 0)
148#define xmlXPathReturnNumber(ctxt, val) \
149 valuePush((ctxt), xmlXPathNewFloat(val))
158#define xmlXPathReturnString(ctxt, str) \
159 valuePush((ctxt), xmlXPathWrapString(str))
167#define xmlXPathReturnEmptyString(ctxt) \
168 valuePush((ctxt), xmlXPathNewCString(""))
177#define xmlXPathReturnNodeSet(ctxt, ns) \
178 valuePush((ctxt), xmlXPathWrapNodeSet(ns))
186#define xmlXPathReturnEmptyNodeSet(ctxt) \
187 valuePush((ctxt), xmlXPathNewNodeSet(NULL))
196#define xmlXPathReturnExternal(ctxt, val) \
197 valuePush((ctxt), xmlXPathWrapExternal(val))
208#define xmlXPathStackIsNodeSet(ctxt) \
209 (((ctxt)->value != NULL) \
210 && (((ctxt)->value->type == XPATH_NODESET) \
211 || ((ctxt)->value->type == XPATH_XSLT_TREE)))
223#define xmlXPathStackIsExternal(ctxt) \
224 ((ctxt->value != NULL) && (ctxt->value->type == XPATH_USERS))
232#define xmlXPathEmptyNodeSet(ns) \
233 { while ((ns)->nodeNr > 0) (ns)->nodeTab[--(ns)->nodeNr] = NULL; }
241 if (ctxt->error != XPATH_EXPRESSION_OK) return
248#define CHECK_ERROR0 \
249 if (ctxt->error != XPATH_EXPRESSION_OK) return(0)
258 { xmlXPathErr(ctxt, X); return; }
266#define XP_ERROR0(X) \
267 { xmlXPathErr(ctxt, X); return(0); }
276#define CHECK_TYPE(typeval) \
277 if ((ctxt->value == NULL) || (ctxt->value->type != typeval)) \
278 XP_ERROR(XPATH_INVALID_TYPE)
287#define CHECK_TYPE0(typeval) \
288 if ((ctxt->value == NULL) || (ctxt->value->type != typeval)) \
289 XP_ERROR0(XPATH_INVALID_TYPE)
297#define CHECK_ARITY(x) \
298 if (ctxt == NULL) return; \
300 XP_ERROR(XPATH_INVALID_ARITY); \
301 if (ctxt->valueNr < (x)) \
302 XP_ERROR(XPATH_STACK_ERROR);
309#define CAST_TO_STRING \
310 if ((ctxt->value != NULL) && (ctxt->value->type != XPATH_STRING)) \
311 xmlXPathStringFunction(ctxt, 1);
318#define CAST_TO_NUMBER \
319 if ((ctxt->value != NULL) && (ctxt->value->type != XPATH_NUMBER)) \
320 xmlXPathNumberFunction(ctxt, 1);
327#define CAST_TO_BOOLEAN \
328 if ((ctxt->value != NULL) && (ctxt->value->type != XPATH_BOOLEAN)) \
329 xmlXPathBooleanFunction(ctxt, 1);
336 xmlXPathRegisterVariableLookup (xmlXPathContextPtr ctxt,
337 xmlXPathVariableLookupFunc
f,
345 xmlXPathRegisterFuncLookup (xmlXPathContextPtr ctxt,
346 xmlXPathFuncLookupFunc
f,
353 xmlXPatherror (xmlXPathParserContextPtr ctxt,
359 xmlXPathErr (xmlXPathParserContextPtr ctxt,
362#ifdef LIBXML_DEBUG_ENABLED
364 xmlXPathDebugDumpObject (
FILE *output,
365 xmlXPathObjectPtr
cur,
368 xmlXPathDebugDumpCompExpr(
FILE *output,
369 xmlXPathCompExprPtr comp,
376 xmlXPathNodeSetContains (xmlNodeSetPtr
cur,
379 xmlXPathDifference (xmlNodeSetPtr nodes1,
380 xmlNodeSetPtr nodes2);
382 xmlXPathIntersection (xmlNodeSetPtr nodes1,
383 xmlNodeSetPtr nodes2);
386 xmlXPathDistinctSorted (xmlNodeSetPtr nodes);
388 xmlXPathDistinct (xmlNodeSetPtr nodes);
391 xmlXPathHasSameNodes (xmlNodeSetPtr nodes1,
392 xmlNodeSetPtr nodes2);
395 xmlXPathNodeLeadingSorted (xmlNodeSetPtr nodes,
398 xmlXPathLeadingSorted (xmlNodeSetPtr nodes1,
399 xmlNodeSetPtr nodes2);
401 xmlXPathNodeLeading (xmlNodeSetPtr nodes,
404 xmlXPathLeading (xmlNodeSetPtr nodes1,
405 xmlNodeSetPtr nodes2);
408 xmlXPathNodeTrailingSorted (xmlNodeSetPtr nodes,
411 xmlXPathTrailingSorted (xmlNodeSetPtr nodes1,
412 xmlNodeSetPtr nodes2);
414 xmlXPathNodeTrailing (xmlNodeSetPtr nodes,
417 xmlXPathTrailing (xmlNodeSetPtr nodes1,
418 xmlNodeSetPtr nodes2);
426 xmlXPathRegisterNs (xmlXPathContextPtr ctxt,
430 xmlXPathNsLookup (xmlXPathContextPtr ctxt,
433 xmlXPathRegisteredNsCleanup (xmlXPathContextPtr ctxt);
436 xmlXPathRegisterFunc (xmlXPathContextPtr ctxt,
440 xmlXPathRegisterFuncNS (xmlXPathContextPtr ctxt,
445 xmlXPathRegisterVariable (xmlXPathContextPtr ctxt,
447 xmlXPathObjectPtr
value);
449 xmlXPathRegisterVariableNS (xmlXPathContextPtr ctxt,
452 xmlXPathObjectPtr
value);
454 xmlXPathFunctionLookup (xmlXPathContextPtr ctxt,
457 xmlXPathFunctionLookupNS (xmlXPathContextPtr ctxt,
461 xmlXPathRegisteredFuncsCleanup (xmlXPathContextPtr ctxt);
463 xmlXPathVariableLookup (xmlXPathContextPtr ctxt,
466 xmlXPathVariableLookupNS (xmlXPathContextPtr ctxt,
470 xmlXPathRegisteredVariablesCleanup(xmlXPathContextPtr ctxt);
477 xmlXPathContextPtr ctxt);
479 xmlXPathFreeParserContext (xmlXPathParserContextPtr ctxt);
483 valuePop (xmlXPathParserContextPtr ctxt);
485 valuePush (xmlXPathParserContextPtr ctxt,
486 xmlXPathObjectPtr
value);
491 xmlXPathNewCString (
const char *
val);
495 xmlXPathWrapCString (
char *
val);
497 xmlXPathNewFloat (
double val);
499 xmlXPathNewBoolean (
int val);
501 xmlXPathNewNodeSet (xmlNodePtr
val);
503 xmlXPathNewValueTree (xmlNodePtr
val);
505 xmlXPathNodeSetAdd (xmlNodeSetPtr
cur,
508 xmlXPathNodeSetAddUnique (xmlNodeSetPtr
cur,
511 xmlXPathNodeSetAddNs (xmlNodeSetPtr
cur,
515 xmlXPathNodeSetSort (xmlNodeSetPtr
set);
518 xmlXPathRoot (xmlXPathParserContextPtr ctxt);
520 xmlXPathEvalExpr (xmlXPathParserContextPtr ctxt);
522 xmlXPathParseName (xmlXPathParserContextPtr ctxt);
524 xmlXPathParseNCName (xmlXPathParserContextPtr ctxt);
530 xmlXPathStringEvalNumber (
const xmlChar *
str);
532 xmlXPathEvaluatePredicateResult (xmlXPathParserContextPtr ctxt,
533 xmlXPathObjectPtr
res);
535 xmlXPathRegisterAllFunctions (xmlXPathContextPtr ctxt);
537 xmlXPathNodeSetMerge (xmlNodeSetPtr val1,
540 xmlXPathNodeSetDel (xmlNodeSetPtr
cur,
543 xmlXPathNodeSetRemove (xmlNodeSetPtr
cur,
546 xmlXPathNewNodeSetList (xmlNodeSetPtr
val);
548 xmlXPathWrapNodeSet (xmlNodeSetPtr
val);
550 xmlXPathWrapExternal (
void *
val);
552XMLPUBFUN int xmlXPathEqualValues(xmlXPathParserContextPtr ctxt);
553XMLPUBFUN int xmlXPathNotEqualValues(xmlXPathParserContextPtr ctxt);
554XMLPUBFUN int xmlXPathCompareValues(xmlXPathParserContextPtr ctxt,
int inf,
int strict);
555XMLPUBFUN void xmlXPathValueFlipSign(xmlXPathParserContextPtr ctxt);
556XMLPUBFUN void xmlXPathAddValues(xmlXPathParserContextPtr ctxt);
557XMLPUBFUN void xmlXPathSubValues(xmlXPathParserContextPtr ctxt);
558XMLPUBFUN void xmlXPathMultValues(xmlXPathParserContextPtr ctxt);
559XMLPUBFUN void xmlXPathDivValues(xmlXPathParserContextPtr ctxt);
560XMLPUBFUN void xmlXPathModValues(xmlXPathParserContextPtr ctxt);
567XMLPUBFUN xmlNodePtr xmlXPathNextSelf(xmlXPathParserContextPtr ctxt,
569XMLPUBFUN xmlNodePtr xmlXPathNextChild(xmlXPathParserContextPtr ctxt,
571XMLPUBFUN xmlNodePtr xmlXPathNextDescendant(xmlXPathParserContextPtr ctxt,
573XMLPUBFUN xmlNodePtr xmlXPathNextDescendantOrSelf(xmlXPathParserContextPtr ctxt,
575XMLPUBFUN xmlNodePtr xmlXPathNextParent(xmlXPathParserContextPtr ctxt,
577XMLPUBFUN xmlNodePtr xmlXPathNextAncestorOrSelf(xmlXPathParserContextPtr ctxt,
579XMLPUBFUN xmlNodePtr xmlXPathNextFollowingSibling(xmlXPathParserContextPtr ctxt,
581XMLPUBFUN xmlNodePtr xmlXPathNextFollowing(xmlXPathParserContextPtr ctxt,
583XMLPUBFUN xmlNodePtr xmlXPathNextNamespace(xmlXPathParserContextPtr ctxt,
585XMLPUBFUN xmlNodePtr xmlXPathNextAttribute(xmlXPathParserContextPtr ctxt,
587XMLPUBFUN xmlNodePtr xmlXPathNextPreceding(xmlXPathParserContextPtr ctxt,
589XMLPUBFUN xmlNodePtr xmlXPathNextAncestor(xmlXPathParserContextPtr ctxt,
591XMLPUBFUN xmlNodePtr xmlXPathNextPrecedingSibling(xmlXPathParserContextPtr ctxt,
596XMLPUBFUN void xmlXPathLastFunction(xmlXPathParserContextPtr ctxt,
int nargs);
597XMLPUBFUN void xmlXPathPositionFunction(xmlXPathParserContextPtr ctxt,
int nargs);
598XMLPUBFUN void xmlXPathCountFunction(xmlXPathParserContextPtr ctxt,
int nargs);
599XMLPUBFUN void xmlXPathIdFunction(xmlXPathParserContextPtr ctxt,
int nargs);
600XMLPUBFUN void xmlXPathLocalNameFunction(xmlXPathParserContextPtr ctxt,
int nargs);
601XMLPUBFUN void xmlXPathNamespaceURIFunction(xmlXPathParserContextPtr ctxt,
int nargs);
602XMLPUBFUN void xmlXPathStringFunction(xmlXPathParserContextPtr ctxt,
int nargs);
603XMLPUBFUN void xmlXPathStringLengthFunction(xmlXPathParserContextPtr ctxt,
int nargs);
604XMLPUBFUN void xmlXPathConcatFunction(xmlXPathParserContextPtr ctxt,
int nargs);
605XMLPUBFUN void xmlXPathContainsFunction(xmlXPathParserContextPtr ctxt,
int nargs);
606XMLPUBFUN void xmlXPathStartsWithFunction(xmlXPathParserContextPtr ctxt,
int nargs);
607XMLPUBFUN void xmlXPathSubstringFunction(xmlXPathParserContextPtr ctxt,
int nargs);
608XMLPUBFUN void xmlXPathSubstringBeforeFunction(xmlXPathParserContextPtr ctxt,
int nargs);
609XMLPUBFUN void xmlXPathSubstringAfterFunction(xmlXPathParserContextPtr ctxt,
int nargs);
610XMLPUBFUN void xmlXPathNormalizeFunction(xmlXPathParserContextPtr ctxt,
int nargs);
611XMLPUBFUN void xmlXPathTranslateFunction(xmlXPathParserContextPtr ctxt,
int nargs);
612XMLPUBFUN void xmlXPathNotFunction(xmlXPathParserContextPtr ctxt,
int nargs);
613XMLPUBFUN void xmlXPathTrueFunction(xmlXPathParserContextPtr ctxt,
int nargs);
614XMLPUBFUN void xmlXPathFalseFunction(xmlXPathParserContextPtr ctxt,
int nargs);
615XMLPUBFUN void xmlXPathLangFunction(xmlXPathParserContextPtr ctxt,
int nargs);
616XMLPUBFUN void xmlXPathNumberFunction(xmlXPathParserContextPtr ctxt,
int nargs);
617XMLPUBFUN void xmlXPathSumFunction(xmlXPathParserContextPtr ctxt,
int nargs);
618XMLPUBFUN void xmlXPathFloorFunction(xmlXPathParserContextPtr ctxt,
int nargs);
619XMLPUBFUN void xmlXPathCeilingFunction(xmlXPathParserContextPtr ctxt,
int nargs);
620XMLPUBFUN void xmlXPathRoundFunction(xmlXPathParserContextPtr ctxt,
int nargs);
621XMLPUBFUN void xmlXPathBooleanFunction(xmlXPathParserContextPtr ctxt,
int nargs);
static WCHAR no[MAX_STRING_RESOURCE_LEN]
GLint GLint GLsizei GLsizei GLsizei depth
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
Character const *const prefix