Annotation of embedaddon/libxml2/include/libxml/xpathInternals.h, revision 1.1

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

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>