Annotation of win32/gnome/gnome-xml/include/libxml/xpathInternals.h, revision 1.1

1.1     ! paf         1: /*
        !             2:  * xpathInternals.c: internal interfaces for XML Path Language implementation
        !             3:  *                   used to build new modules on top of XPath
        !             4:  *
        !             5:  * See COPYRIGHT for the status of this software
        !             6:  *
        !             7:  * Author: daniel@veillard.com
        !             8:  */
        !             9: 
        !            10: #ifndef __XML_XPATH_INTERNALS_H__
        !            11: #define __XML_XPATH_INTERNALS_H__
        !            12: 
        !            13: #include <libxml/xmlversion.h>
        !            14: #include <libxml/xpath.h>
        !            15: 
        !            16: #ifdef __cplusplus
        !            17: extern "C" {
        !            18: #endif
        !            19: 
        !            20: /************************************************************************
        !            21:  *                                                                     *
        !            22:  *                     Helpers                                         *
        !            23:  *                                                                     *
        !            24:  ************************************************************************/
        !            25: 
        !            26: /**
        !            27:  * Many of these macros may later turn into functions. They
        !            28:  * shouldn't be used in #ifdef's preprocessor instructions.
        !            29:  */
        !            30: /**
        !            31:  * xmlXPathSetError:
        !            32:  * @ctxt:  an XPath parser context
        !            33:  * @err:  an xmlXPathError code
        !            34:  *
        !            35:  * Raises an error.
        !            36:  */
        !            37: #define xmlXPathSetError(ctxt, err)                                    \
        !            38:     { xmlXPatherror((ctxt), __FILE__, __LINE__, (err));                        \
        !            39:       (ctxt)->error = (err); }
        !            40: 
        !            41: /**
        !            42:  * xmlXPathSetArityError:
        !            43:  * @ctxt:  an XPath parser context
        !            44:  *
        !            45:  * Raises an XPATH_INVALID_ARITY error.
        !            46:  */
        !            47: #define xmlXPathSetArityError(ctxt)                                    \
        !            48:     xmlXPathSetError((ctxt), XPATH_INVALID_ARITY)
        !            49: 
        !            50: /**
        !            51:  * xmlXPathSetTypeError:
        !            52:  * @ctxt:  an XPath parser context
        !            53:  *
        !            54:  * Raises an XPATH_INVALID_TYPE error.
        !            55:  */
        !            56: #define xmlXPathSetTypeError(ctxt)                                     \
        !            57:     xmlXPathSetError((ctxt), XPATH_INVALID_TYPE)
        !            58: 
        !            59: /**
        !            60:  * xmlXPathGetError:
        !            61:  * @ctxt:  an XPath parser context
        !            62:  *
        !            63:  * Get the error code of an XPath context.
        !            64:  *
        !            65:  * Returns the context error.
        !            66:  */
        !            67: #define xmlXPathGetError(ctxt)   ((ctxt)->error)
        !            68: 
        !            69: /**
        !            70:  * xmlXPathCheckError:
        !            71:  * @ctxt:  an XPath parser context
        !            72:  *
        !            73:  * Check if an XPath error was raised.
        !            74:  *
        !            75:  * Returns true if an error has been raised, false otherwise.
        !            76:  */
        !            77: #define xmlXPathCheckError(ctxt)  ((ctxt)->error != XPATH_EXPRESSION_OK)
        !            78: 
        !            79: /**
        !            80:  * xmlXPathGetDocument:
        !            81:  * @ctxt:  an XPath parser context
        !            82:  *
        !            83:  * Get the document of an XPath context.
        !            84:  *
        !            85:  * Returns the context document.
        !            86:  */
        !            87: #define xmlXPathGetDocument(ctxt)      ((ctxt)->context->doc)
        !            88: 
        !            89: /**
        !            90:  * xmlXPathGetContextNode:
        !            91:  * @ctxt: an XPath parser context
        !            92:  *
        !            93:  * Get the context node of an XPath context.
        !            94:  *
        !            95:  * Returns the context node.
        !            96:  */
        !            97: #define xmlXPathGetContextNode(ctxt)   ((ctxt)->context->node)
        !            98: 
        !            99: int            xmlXPathPopBoolean      (xmlXPathParserContextPtr ctxt);
        !           100: double         xmlXPathPopNumber       (xmlXPathParserContextPtr ctxt);
        !           101: xmlChar *      xmlXPathPopString       (xmlXPathParserContextPtr ctxt);
        !           102: xmlNodeSetPtr  xmlXPathPopNodeSet      (xmlXPathParserContextPtr ctxt);
        !           103: void *         xmlXPathPopExternal     (xmlXPathParserContextPtr ctxt);
        !           104: 
        !           105: /**
        !           106:  * xmlXPathReturnBoolean:
        !           107:  * @ctxt:  an XPath parser context
        !           108:  * @val:  a boolean
        !           109:  *
        !           110:  * Pushes the boolean @val on the context stack.
        !           111:  */
        !           112: #define xmlXPathReturnBoolean(ctxt, val)                               \
        !           113:     valuePush((ctxt), xmlXPathNewBoolean(val))
        !           114: 
        !           115: /**
        !           116:  * xmlXPathReturnTrue:
        !           117:  * @ctxt:  an XPath parser context
        !           118:  *
        !           119:  * Pushes true on the context stack.
        !           120:  */
        !           121: #define xmlXPathReturnTrue(ctxt)   xmlXPathReturnBoolean((ctxt), 1)
        !           122: 
        !           123: /**
        !           124:  * xmlXPathReturnFalse:
        !           125:  * @ctxt:  an XPath parser context
        !           126:  *
        !           127:  * Pushes false on the context stack.
        !           128:  */
        !           129: #define xmlXPathReturnFalse(ctxt)  xmlXPathReturnBoolean((ctxt), 0)
        !           130: 
        !           131: /**
        !           132:  * xmlXPathReturnNumber:
        !           133:  * @ctxt:  an XPath parser context
        !           134:  * @val:  a double
        !           135:  *
        !           136:  * Pushes the double @val on the context stack.
        !           137:  */
        !           138: #define xmlXPathReturnNumber(ctxt, val)                                        \
        !           139:     valuePush((ctxt), xmlXPathNewFloat(val))
        !           140: 
        !           141: /**
        !           142:  * xmlXPathReturnString:
        !           143:  * @ctxt:  an XPath parser context
        !           144:  * @str:  a string
        !           145:  *
        !           146:  * Pushes the string @str on the context stack.
        !           147:  */
        !           148: #define xmlXPathReturnString(ctxt, str)                                        \
        !           149:     valuePush((ctxt), xmlXPathWrapString(str))
        !           150: 
        !           151: /**
        !           152:  * xmlXPathReturnEmptyString:
        !           153:  * @ctxt:  an XPath parser context
        !           154:  *
        !           155:  * Pushes an empty string on the stack.
        !           156:  */
        !           157: #define xmlXPathReturnEmptyString(ctxt)                                        \
        !           158:     valuePush((ctxt), xmlXPathNewCString(""))
        !           159: 
        !           160: /**
        !           161:  * xmlXPathReturnNodeSet:
        !           162:  * @ctxt:  an XPath parser context
        !           163:  * @ns:  a node-set
        !           164:  *
        !           165:  * Pushes the node-set @ns on the context stack.
        !           166:  */
        !           167: #define xmlXPathReturnNodeSet(ctxt, ns)                                        \
        !           168:     valuePush((ctxt), xmlXPathWrapNodeSet(ns))
        !           169: 
        !           170: /**
        !           171:  * xmlXPathReturnEmptyNodeSet:
        !           172:  * @ctxt:  an XPath parser context
        !           173:  *
        !           174:  * Pushes an empty node-set on the context stack.
        !           175:  */
        !           176: #define xmlXPathReturnEmptyNodeSet(ctxt)                               \
        !           177:     valuePush((ctxt), xmlXPathNewNodeSet(NULL))
        !           178: 
        !           179: /**
        !           180:  * xmlXPathReturnExternal:
        !           181:  * @ctxt:  an XPath parser context
        !           182:  * @val:  user data
        !           183:  *
        !           184:  * Pushes user data on the context stack.
        !           185:  */
        !           186: #define xmlXPathReturnExternal(ctxt, val)                              \
        !           187:     valuePush((ctxt), xmlXPathWrapExternal(val))
        !           188: 
        !           189: /**
        !           190:  * xmlXPathStackIsNodeSet:
        !           191:  * @ctxt: an XPath parser context
        !           192:  *
        !           193:  * Check if the current value on the XPath stack is a node set or
        !           194:  * an XSLT value tree.
        !           195:  *
        !           196:  * Returns true if the current object on the stack is a node-set.
        !           197:  */
        !           198: #define xmlXPathStackIsNodeSet(ctxt)                                   \
        !           199:     (((ctxt)->value != NULL)                                           \
        !           200:      && (((ctxt)->value->type == XPATH_NODESET)                                \
        !           201:          || ((ctxt)->value->type == XPATH_XSLT_TREE)))
        !           202: 
        !           203: /**
        !           204:  * xmlXPathStackIsExternal:
        !           205:  * @ctxt: an XPath parser context
        !           206:  *
        !           207:  * Checks if the current value on the XPath stack is an external
        !           208:  * object.
        !           209:  *
        !           210:  * Returns true if the current object on the stack is an external
        !           211:  * object.
        !           212:  */
        !           213: #define xmlXPathStackIsExternal(ctxt)                                  \
        !           214:        ((ctxt->value != NULL) && (ctxt->value->type == XPATH_USERS))
        !           215: 
        !           216: /**
        !           217:  * xmlXPathEmptyNodeSet:
        !           218:  * @ns:  a node-set
        !           219:  *
        !           220:  * Empties a node-set.
        !           221:  */
        !           222: #define xmlXPathEmptyNodeSet(ns)                                       \
        !           223:     { while ((ns)->nodeNr > 0) (ns)->nodeTab[(ns)->nodeNr--] = NULL; }
        !           224: 
        !           225: /**
        !           226:  * CHECK_ERROR:
        !           227:  *
        !           228:  * Macro to return from the function if an XPath error was detected.
        !           229:  */
        !           230: #define CHECK_ERROR                                                    \
        !           231:     if (ctxt->error != XPATH_EXPRESSION_OK) return
        !           232: 
        !           233: /**
        !           234:  * CHECK_ERROR0:
        !           235:  *
        !           236:  * Macro to return 0 from the function if an XPath error was detected.
        !           237:  */
        !           238: #define CHECK_ERROR0                                                   \
        !           239:     if (ctxt->error != XPATH_EXPRESSION_OK) return(0)
        !           240: 
        !           241: /**
        !           242:  * XP_ERROR:
        !           243:  * @X:  the error code
        !           244:  *
        !           245:  * Macro to raise an XPath error and return.
        !           246:  */
        !           247: #define XP_ERROR(X)                                                    \
        !           248:     { xmlXPatherror(ctxt, __FILE__, __LINE__, X);                      \
        !           249:       ctxt->error = (X); return; }
        !           250: 
        !           251: /**
        !           252:  * XP_ERROR0:
        !           253:  * @X:  the error code
        !           254:  *
        !           255:  * Macro to raise an XPath error and return 0.
        !           256:  */
        !           257: #define XP_ERROR0(X)                                                   \
        !           258:     { xmlXPatherror(ctxt, __FILE__, __LINE__, X);                      \
        !           259:       ctxt->error = (X); return(0); }
        !           260: 
        !           261: /**
        !           262:  * CHECK_TYPE:
        !           263:  * @typeval:  the XPath type
        !           264:  *
        !           265:  * Macro to check that the value on top of the XPath stack is of a given
        !           266:  * type.
        !           267:  */
        !           268: #define CHECK_TYPE(typeval)                                            \
        !           269:     if ((ctxt->value == NULL) || (ctxt->value->type != typeval))       \
        !           270:         XP_ERROR(XPATH_INVALID_TYPE)
        !           271: 
        !           272: /**
        !           273:  * CHECK_TYPE0:
        !           274:  * @typeval:  the XPath type
        !           275:  *
        !           276:  * Macro to check that the value on top of the XPath stack is of a given
        !           277:  * type. Return(0) in case of failure
        !           278:  */
        !           279: #define CHECK_TYPE0(typeval)                                           \
        !           280:     if ((ctxt->value == NULL) || (ctxt->value->type != typeval))       \
        !           281:         XP_ERROR0(XPATH_INVALID_TYPE)
        !           282: 
        !           283: /**
        !           284:  * CHECK_ARITY:
        !           285:  * @x:  the number of expected args
        !           286:  *
        !           287:  * Macro to check that the number of args passed to an XPath function matches.
        !           288:  */
        !           289: #define CHECK_ARITY(x)                                                 \
        !           290:     if (nargs != (x))                                                  \
        !           291:         XP_ERROR(XPATH_INVALID_ARITY);
        !           292: 
        !           293: /**
        !           294:  * CAST_TO_STRING:
        !           295:  *
        !           296:  * Macro to try to cast the value on the top of the XPath stack to a string.
        !           297:  */
        !           298: #define CAST_TO_STRING                                                 \
        !           299:     if ((ctxt->value != NULL) && (ctxt->value->type != XPATH_STRING))  \
        !           300:         xmlXPathStringFunction(ctxt, 1);
        !           301: 
        !           302: /**
        !           303:  * CAST_TO_NUMBER:
        !           304:  *
        !           305:  * Macro to try to cast the value on the top of the XPath stack to a number.
        !           306:  */
        !           307: #define CAST_TO_NUMBER                                                 \
        !           308:     if ((ctxt->value != NULL) && (ctxt->value->type != XPATH_NUMBER))  \
        !           309:         xmlXPathNumberFunction(ctxt, 1);
        !           310: 
        !           311: /**
        !           312:  * CAST_TO_BOOLEAN:
        !           313:  *
        !           314:  * Macro to try to cast the value on the top of the XPath stack to a boolean.
        !           315:  */
        !           316: #define CAST_TO_BOOLEAN                                                        \
        !           317:     if ((ctxt->value != NULL) && (ctxt->value->type != XPATH_BOOLEAN)) \
        !           318:         xmlXPathBooleanFunction(ctxt, 1);
        !           319: 
        !           320: /*
        !           321:  * Variable Lookup forwarding.
        !           322:  */
        !           323: /**
        !           324:  * xmlXPathVariableLookupFunc:
        !           325:  * @ctxt:  an XPath context
        !           326:  * @name:  name of the variable
        !           327:  * @ns_uri:  the namespace name hosting this variable
        !           328:  *
        !           329:  * Prototype for callbacks used to plug variable lookup in the XPath
        !           330:  * engine.
        !           331:  *
        !           332:  * Returns the XPath object value or NULL if not found.
        !           333:  */
        !           334: typedef xmlXPathObjectPtr (*xmlXPathVariableLookupFunc) (void *ctxt,
        !           335:                                         const xmlChar *name,
        !           336:                                         const xmlChar *ns_uri);
        !           337: 
        !           338: void   xmlXPathRegisterVariableLookup  (xmlXPathContextPtr ctxt,
        !           339:                                         xmlXPathVariableLookupFunc f,
        !           340:                                         void *data);
        !           341: 
        !           342: /*
        !           343:  * Function Lookup forwarding.
        !           344:  */
        !           345: /**
        !           346:  * xmlXPathFuncLookupFunc:
        !           347:  * @ctxt:  an XPath context
        !           348:  * @name:  name of the function
        !           349:  * @ns_uri:  the namespace name hosting this function
        !           350:  *
        !           351:  * Prototype for callbacks used to plug function lookup in the XPath
        !           352:  * engine.
        !           353:  *
        !           354:  * Returns the XPath function or NULL if not found.
        !           355:  */
        !           356: typedef xmlXPathFunction (*xmlXPathFuncLookupFunc) (void *ctxt,
        !           357:                                         const xmlChar *name,
        !           358:                                         const xmlChar *ns_uri);
        !           359: 
        !           360: void   xmlXPathRegisterFuncLookup      (xmlXPathContextPtr ctxt,
        !           361:                                         xmlXPathFuncLookupFunc f,
        !           362:                                         void *funcCtxt);
        !           363: 
        !           364: /*
        !           365:  * Error reporting.
        !           366:  */
        !           367: void           xmlXPatherror   (xmlXPathParserContextPtr ctxt,
        !           368:                                 const char *file,
        !           369:                                 int line,
        !           370:                                 int no);
        !           371: 
        !           372: void           xmlXPathDebugDumpObject (FILE *output,
        !           373:                                         xmlXPathObjectPtr cur,
        !           374:                                         int depth);
        !           375: void           xmlXPathDebugDumpCompExpr(FILE *output,
        !           376:                                         xmlXPathCompExprPtr comp,
        !           377:                                         int depth);
        !           378: 
        !           379: /**
        !           380:  * NodeSet handling.
        !           381:  */
        !           382: int            xmlXPathNodeSetContains         (xmlNodeSetPtr cur,
        !           383:                                                 xmlNodePtr val);
        !           384: xmlNodeSetPtr  xmlXPathDifference              (xmlNodeSetPtr nodes1,
        !           385:                                                 xmlNodeSetPtr nodes2);
        !           386: xmlNodeSetPtr  xmlXPathIntersection            (xmlNodeSetPtr nodes1,
        !           387:                                                 xmlNodeSetPtr nodes2);
        !           388: 
        !           389: xmlNodeSetPtr  xmlXPathDistinctSorted          (xmlNodeSetPtr nodes);
        !           390: xmlNodeSetPtr  xmlXPathDistinct                (xmlNodeSetPtr nodes);
        !           391: 
        !           392: int            xmlXPathHasSameNodes            (xmlNodeSetPtr nodes1,
        !           393:                                                 xmlNodeSetPtr nodes2);
        !           394: 
        !           395: xmlNodeSetPtr  xmlXPathNodeLeadingSorted       (xmlNodeSetPtr nodes,
        !           396:                                                 xmlNodePtr node);
        !           397: xmlNodeSetPtr  xmlXPathLeadingSorted           (xmlNodeSetPtr nodes1,
        !           398:                                                 xmlNodeSetPtr nodes2);
        !           399: xmlNodeSetPtr  xmlXPathNodeLeading             (xmlNodeSetPtr nodes,
        !           400:                                                 xmlNodePtr node);
        !           401: xmlNodeSetPtr  xmlXPathLeading                 (xmlNodeSetPtr nodes1,
        !           402:                                                 xmlNodeSetPtr nodes2);
        !           403: 
        !           404: xmlNodeSetPtr  xmlXPathNodeTrailingSorted      (xmlNodeSetPtr nodes,
        !           405:                                                 xmlNodePtr node);
        !           406: xmlNodeSetPtr  xmlXPathTrailingSorted          (xmlNodeSetPtr nodes1,
        !           407:                                                 xmlNodeSetPtr nodes2);
        !           408: xmlNodeSetPtr  xmlXPathNodeTrailing            (xmlNodeSetPtr nodes,
        !           409:                                                 xmlNodePtr node);
        !           410: xmlNodeSetPtr  xmlXPathTrailing                (xmlNodeSetPtr nodes1,
        !           411:                                                 xmlNodeSetPtr nodes2);
        !           412: 
        !           413: 
        !           414: /**
        !           415:  * Extending a context.
        !           416:  */
        !           417: 
        !           418: int               xmlXPathRegisterNs           (xmlXPathContextPtr ctxt,
        !           419:                                                 const xmlChar *prefix,
        !           420:                                                 const xmlChar *ns_uri);
        !           421: const xmlChar *           xmlXPathNsLookup             (xmlXPathContextPtr ctxt,
        !           422:                                                 const xmlChar *prefix);
        !           423: void              xmlXPathRegisteredNsCleanup  (xmlXPathContextPtr ctxt);
        !           424: 
        !           425: int               xmlXPathRegisterFunc         (xmlXPathContextPtr ctxt,
        !           426:                                                 const xmlChar *name,
        !           427:                                                 xmlXPathFunction f);
        !           428: int               xmlXPathRegisterFuncNS       (xmlXPathContextPtr ctxt,
        !           429:                                                 const xmlChar *name,
        !           430:                                                 const xmlChar *ns_uri,
        !           431:                                                 xmlXPathFunction f);
        !           432: int               xmlXPathRegisterVariable     (xmlXPathContextPtr ctxt,
        !           433:                                                 const xmlChar *name,
        !           434:                                                 xmlXPathObjectPtr value);
        !           435: int               xmlXPathRegisterVariableNS   (xmlXPathContextPtr ctxt,
        !           436:                                                 const xmlChar *name,
        !           437:                                                 const xmlChar *ns_uri,
        !           438:                                                 xmlXPathObjectPtr value);
        !           439: xmlXPathFunction   xmlXPathFunctionLookup      (xmlXPathContextPtr ctxt,
        !           440:                                                 const xmlChar *name);
        !           441: xmlXPathFunction   xmlXPathFunctionLookupNS    (xmlXPathContextPtr ctxt,
        !           442:                                                 const xmlChar *name,
        !           443:                                                 const xmlChar *ns_uri);
        !           444: void              xmlXPathRegisteredFuncsCleanup(xmlXPathContextPtr ctxt);
        !           445: xmlXPathObjectPtr  xmlXPathVariableLookup      (xmlXPathContextPtr ctxt,
        !           446:                                                 const xmlChar *name);
        !           447: xmlXPathObjectPtr  xmlXPathVariableLookupNS    (xmlXPathContextPtr ctxt,
        !           448:                                                 const xmlChar *name,
        !           449:                                                 const xmlChar *ns_uri);
        !           450: void              xmlXPathRegisteredVariablesCleanup(xmlXPathContextPtr ctxt);
        !           451: 
        !           452: /**
        !           453:  * Utilities to extend XPath.
        !           454:  */
        !           455: xmlXPathParserContextPtr
        !           456:                  xmlXPathNewParserContext      (const xmlChar *str,
        !           457:                                                 xmlXPathContextPtr ctxt);
        !           458: void             xmlXPathFreeParserContext     (xmlXPathParserContextPtr ctxt);
        !           459: 
        !           460: /* TODO: remap to xmlXPathValuePop and Push. */
        !           461: xmlXPathObjectPtr valuePop                     (xmlXPathParserContextPtr ctxt);
        !           462: int              valuePush                     (xmlXPathParserContextPtr ctxt,
        !           463:                                                xmlXPathObjectPtr value);
        !           464: 
        !           465: xmlXPathObjectPtr xmlXPathNewString            (const xmlChar *val);
        !           466: xmlXPathObjectPtr xmlXPathNewCString           (const char *val);
        !           467: xmlXPathObjectPtr xmlXPathWrapString           (xmlChar *val);
        !           468: xmlXPathObjectPtr xmlXPathWrapCString          (char * val);
        !           469: xmlXPathObjectPtr xmlXPathNewFloat             (double val);
        !           470: xmlXPathObjectPtr xmlXPathNewBoolean           (int val);
        !           471: xmlXPathObjectPtr xmlXPathNewNodeSet           (xmlNodePtr val);
        !           472: xmlXPathObjectPtr xmlXPathNewValueTree         (xmlNodePtr val);
        !           473: void             xmlXPathNodeSetAdd            (xmlNodeSetPtr cur,
        !           474:                                                 xmlNodePtr val);
        !           475: void              xmlXPathNodeSetAddUnique     (xmlNodeSetPtr cur,
        !           476:                                                 xmlNodePtr val);
        !           477: void             xmlXPathNodeSetAddNs          (xmlNodeSetPtr cur, 
        !           478:                                                 xmlNodePtr node, 
        !           479:                                                 xmlNsPtr ns);
        !           480: void              xmlXPathNodeSetSort          (xmlNodeSetPtr set);
        !           481: 
        !           482: void             xmlXPathRoot                  (xmlXPathParserContextPtr ctxt);
        !           483: void             xmlXPathEvalExpr              (xmlXPathParserContextPtr ctxt);
        !           484: xmlChar *        xmlXPathParseName             (xmlXPathParserContextPtr ctxt);
        !           485: xmlChar *        xmlXPathParseNCName           (xmlXPathParserContextPtr ctxt);
        !           486: 
        !           487: /*
        !           488:  * Existing functions.
        !           489:  */
        !           490: double xmlXPathStringEvalNumber(const xmlChar *str);
        !           491: int xmlXPathEvaluatePredicateResult(xmlXPathParserContextPtr ctxt, 
        !           492:                                     xmlXPathObjectPtr res);
        !           493: void xmlXPathRegisterAllFunctions(xmlXPathContextPtr ctxt);
        !           494: xmlNodeSetPtr xmlXPathNodeSetMerge(xmlNodeSetPtr val1, xmlNodeSetPtr val2);
        !           495: void xmlXPathNodeSetDel(xmlNodeSetPtr cur, xmlNodePtr val);
        !           496: void xmlXPathNodeSetRemove(xmlNodeSetPtr cur, int val);
        !           497: xmlXPathObjectPtr xmlXPathNewNodeSetList(xmlNodeSetPtr val);
        !           498: xmlXPathObjectPtr xmlXPathWrapNodeSet(xmlNodeSetPtr val);
        !           499: xmlXPathObjectPtr xmlXPathWrapExternal(void *val);
        !           500: 
        !           501: int xmlXPathEqualValues(xmlXPathParserContextPtr ctxt);
        !           502: int xmlXPathNotEqualValues(xmlXPathParserContextPtr ctxt);
        !           503: int xmlXPathCompareValues(xmlXPathParserContextPtr ctxt, int inf, int strict);
        !           504: void xmlXPathValueFlipSign(xmlXPathParserContextPtr ctxt);
        !           505: void xmlXPathAddValues(xmlXPathParserContextPtr ctxt);
        !           506: void xmlXPathSubValues(xmlXPathParserContextPtr ctxt);
        !           507: void xmlXPathMultValues(xmlXPathParserContextPtr ctxt);
        !           508: void xmlXPathDivValues(xmlXPathParserContextPtr ctxt);
        !           509: void xmlXPathModValues(xmlXPathParserContextPtr ctxt);
        !           510: 
        !           511: int xmlXPathIsNodeType(const xmlChar *name);
        !           512: 
        !           513: /*
        !           514:  * Some of the axis navigation routines.
        !           515:  */
        !           516: xmlNodePtr xmlXPathNextSelf(xmlXPathParserContextPtr ctxt,
        !           517:                        xmlNodePtr cur);
        !           518: xmlNodePtr xmlXPathNextChild(xmlXPathParserContextPtr ctxt,
        !           519:                        xmlNodePtr cur);
        !           520: xmlNodePtr xmlXPathNextDescendant(xmlXPathParserContextPtr ctxt,
        !           521:                        xmlNodePtr cur);
        !           522: xmlNodePtr xmlXPathNextDescendantOrSelf(xmlXPathParserContextPtr ctxt,
        !           523:                        xmlNodePtr cur);
        !           524: xmlNodePtr xmlXPathNextParent(xmlXPathParserContextPtr ctxt,
        !           525:                        xmlNodePtr cur);
        !           526: xmlNodePtr xmlXPathNextAncestorOrSelf(xmlXPathParserContextPtr ctxt,
        !           527:                        xmlNodePtr cur);
        !           528: xmlNodePtr xmlXPathNextFollowingSibling(xmlXPathParserContextPtr ctxt,
        !           529:                        xmlNodePtr cur);
        !           530: xmlNodePtr xmlXPathNextFollowing(xmlXPathParserContextPtr ctxt,
        !           531:                        xmlNodePtr cur);
        !           532: xmlNodePtr xmlXPathNextNamespace(xmlXPathParserContextPtr ctxt,
        !           533:                        xmlNodePtr cur);
        !           534: xmlNodePtr xmlXPathNextAttribute(xmlXPathParserContextPtr ctxt,
        !           535:                        xmlNodePtr cur);
        !           536: xmlNodePtr xmlXPathNextPreceding(xmlXPathParserContextPtr ctxt,
        !           537:                        xmlNodePtr cur);
        !           538: xmlNodePtr xmlXPathNextAncestor(xmlXPathParserContextPtr ctxt,
        !           539:                        xmlNodePtr cur);
        !           540: xmlNodePtr xmlXPathNextPrecedingSibling(xmlXPathParserContextPtr ctxt,
        !           541:                        xmlNodePtr cur);
        !           542: /*
        !           543:  * The official core of XPath functions.
        !           544:  */
        !           545: void xmlXPathLastFunction(xmlXPathParserContextPtr ctxt, int nargs);
        !           546: void xmlXPathPositionFunction(xmlXPathParserContextPtr ctxt, int nargs);
        !           547: void xmlXPathCountFunction(xmlXPathParserContextPtr ctxt, int nargs);
        !           548: void xmlXPathIdFunction(xmlXPathParserContextPtr ctxt, int nargs);
        !           549: void xmlXPathLocalNameFunction(xmlXPathParserContextPtr ctxt, int nargs);
        !           550: void xmlXPathNamespaceURIFunction(xmlXPathParserContextPtr ctxt, int nargs);
        !           551: void xmlXPathStringFunction(xmlXPathParserContextPtr ctxt, int nargs);
        !           552: void xmlXPathStringLengthFunction(xmlXPathParserContextPtr ctxt, int nargs);
        !           553: void xmlXPathConcatFunction(xmlXPathParserContextPtr ctxt, int nargs);
        !           554: void xmlXPathContainsFunction(xmlXPathParserContextPtr ctxt, int nargs);
        !           555: void xmlXPathStartsWithFunction(xmlXPathParserContextPtr ctxt, int nargs);
        !           556: void xmlXPathSubstringFunction(xmlXPathParserContextPtr ctxt, int nargs);
        !           557: void xmlXPathSubstringBeforeFunction(xmlXPathParserContextPtr ctxt, int nargs);
        !           558: void xmlXPathSubstringAfterFunction(xmlXPathParserContextPtr ctxt, int nargs);
        !           559: void xmlXPathNormalizeFunction(xmlXPathParserContextPtr ctxt, int nargs);
        !           560: void xmlXPathTranslateFunction(xmlXPathParserContextPtr ctxt, int nargs);
        !           561: void xmlXPathNotFunction(xmlXPathParserContextPtr ctxt, int nargs);
        !           562: void xmlXPathTrueFunction(xmlXPathParserContextPtr ctxt, int nargs);
        !           563: void xmlXPathFalseFunction(xmlXPathParserContextPtr ctxt, int nargs);
        !           564: void xmlXPathLangFunction(xmlXPathParserContextPtr ctxt, int nargs);
        !           565: void xmlXPathNumberFunction(xmlXPathParserContextPtr ctxt, int nargs);
        !           566: void xmlXPathSumFunction(xmlXPathParserContextPtr ctxt, int nargs);
        !           567: void xmlXPathFloorFunction(xmlXPathParserContextPtr ctxt, int nargs);
        !           568: void xmlXPathCeilingFunction(xmlXPathParserContextPtr ctxt, int nargs);
        !           569: void xmlXPathRoundFunction(xmlXPathParserContextPtr ctxt, int nargs);
        !           570: void xmlXPathBooleanFunction(xmlXPathParserContextPtr ctxt, int nargs);
        !           571: 
        !           572: /**
        !           573:  * Really internal functions
        !           574:  */
        !           575: void xmlXPathNodeSetFreeNs(xmlNsPtr ns);
        !           576:  
        !           577: #ifdef __cplusplus
        !           578: }
        !           579: #endif
        !           580: #endif /* ! __XML_XPATH_INTERNALS_H__ */

E-mail: