Annotation of embedaddon/libxml2/include/libxml/xpathInternals.h, revision 1.1.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>