Annotation of XML/xpathInternals.h, revision 1.2

1.1       veillard    1: /*
                      2:  * xpath.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@w3.org
                      8:  */
                      9: 
                     10: #ifndef __XML_XPATH_INTERNALS_H__
                     11: #define __XML_XPATH_INTERNALS_H__
                     12: 
                     13: #include <libxml/xpath.h>
                     14: 
                     15: #ifdef __cplusplus
                     16: extern "C" {
                     17: #endif
                     18: 
                     19: /************************************************************************
                     20:  *                                                                     *
                     21:  *                     Helpers                                         *
                     22:  *                                                                     *
                     23:  ************************************************************************/
                     24: 
                     25: #define CHECK_ERROR                                                    \
                     26:     if (ctxt->error != XPATH_EXPRESSION_OK) return
                     27: 
                     28: #define CHECK_ERROR0                                                   \
                     29:     if (ctxt->error != XPATH_EXPRESSION_OK) return(0)
                     30: 
                     31: #define XP_ERROR(X)                                                    \
                     32:     { xmlXPatherror(ctxt, __FILE__, __LINE__, X);                      \
                     33:       ctxt->error = (X); return; }
                     34: 
                     35: #define XP_ERROR0(X)                                                   \
                     36:     { xmlXPatherror(ctxt, __FILE__, __LINE__, X);                      \
                     37:       ctxt->error = (X); return(0); }
                     38: 
                     39: #define CHECK_TYPE(typeval)                                            \
                     40:     if ((ctxt->value == NULL) || (ctxt->value->type != typeval))       \
                     41:         XP_ERROR(XPATH_INVALID_TYPE)                                   \
                     42: 
                     43: #define CHECK_ARITY(x)                                                 \
                     44:     if (nargs != (x)) {                                                        \
                     45:         XP_ERROR(XPATH_INVALID_ARITY);                                 \
                     46:     }                                                                  \
                     47: 
                     48: void           xmlXPatherror   (xmlXPathParserContextPtr ctxt,
                     49:                                 const char *file,
                     50:                                 int line,
                     51:                                 int no);
                     52: 
                     53: void           xmlXPathDebugDumpObject (FILE *output,
                     54:                                         xmlXPathObjectPtr cur,
                     55:                                         int depth);
                     56: 
                     57: /**
                     58:  * Extending a context
                     59:  */
                     60: int               xmlXPathRegisterFunc         (xmlXPathContextPtr ctxt,
                     61:                                                 const xmlChar *name,
                     62:                                                 xmlXPathFunction f);
                     63: int               xmlXPathRegisterVariable     (xmlXPathContextPtr ctxt,
                     64:                                                 const xmlChar *name,
                     65:                                                 xmlXPathObjectPtr value);
                     66: xmlXPathFunction   xmlXPathFunctionLookup      (xmlXPathContextPtr ctxt,
                     67:                                                 const xmlChar *name);
                     68: void              xmlXPathRegisteredFuncsCleanup(xmlXPathContextPtr ctxt);
                     69: xmlXPathObjectPtr  xmlXPathVariableLookup      (xmlXPathContextPtr ctxt,
                     70:                                                 const xmlChar *name);
                     71: void              xmlXPathRegisteredVariablesCleanup(xmlXPathContextPtr ctxt);
                     72: 
                     73: /**
                     74:  * Utilities to extend XPath
                     75:  */
                     76: xmlXPathParserContextPtr
                     77:                  xmlXPathNewParserContext      (const xmlChar *str,
                     78:                                                 xmlXPathContextPtr ctxt);
                     79: void             xmlXPathFreeParserContext     (xmlXPathParserContextPtr ctxt);
                     80: 
                     81: xmlXPathObjectPtr valuePop                     (xmlXPathParserContextPtr ctxt);
                     82: int              valuePush                     (xmlXPathParserContextPtr ctxt,
                     83:                                                xmlXPathObjectPtr value);
                     84: 
                     85: xmlXPathObjectPtr xmlXPathNewString            (const xmlChar *val);
                     86: xmlXPathObjectPtr xmlXPathNewCString           (const char *val);
                     87: xmlXPathObjectPtr xmlXPathNewFloat             (double val);
                     88: xmlXPathObjectPtr xmlXPathNewBoolean           (int val);
                     89: xmlXPathObjectPtr xmlXPathNewNodeSet           (xmlNodePtr val);
                     90: void             xmlXPathNodeSetAdd            (xmlNodeSetPtr cur,
                     91:                                                 xmlNodePtr val);
                     92: 
                     93: 
                     94: void             xmlXPathIdFunction            (xmlXPathParserContextPtr ctxt,
                     95:                                                int nargs);
                     96: void             xmlXPathRoot                  (xmlXPathParserContextPtr ctxt);
                     97: void             xmlXPathEvalExpr              (xmlXPathParserContextPtr ctxt);
                     98: xmlChar *        xmlXPathParseName             (xmlXPathParserContextPtr ctxt);
                     99: 
                    100: /*
                    101:  * Debug
                    102:  */
                    103: #ifdef LIBXML_DEBUG_ENABLED
                    104: double xmlXPathStringEvalNumber(const xmlChar *str);
                    105: void xmlXPathDebugDumpObject(FILE *output, xmlXPathObjectPtr cur, int depth);
                    106: #endif
                    107: /*
                    108:  * Existing functions
                    109:  */
                    110: 
                    111: void xmlXPathInit(void);
                    112: void xmlXPathStringFunction(xmlXPathParserContextPtr ctxt, int nargs);
                    113: void xmlXPathRegisterAllFunctions(xmlXPathContextPtr ctxt);
                    114: xmlNodeSetPtr xmlXPathNodeSetCreate(xmlNodePtr val);
                    115: void xmlXPathNodeSetAdd(xmlNodeSetPtr cur, xmlNodePtr val);
                    116: xmlNodeSetPtr xmlXPathNodeSetMerge(xmlNodeSetPtr val1, xmlNodeSetPtr val2);
                    117: void xmlXPathNodeSetDel(xmlNodeSetPtr cur, xmlNodePtr val);
                    118: void xmlXPathNodeSetRemove(xmlNodeSetPtr cur, int val);
                    119: void xmlXPathFreeNodeSet(xmlNodeSetPtr obj);
                    120: xmlXPathObjectPtr xmlXPathNewNodeSet(xmlNodePtr val);
                    121: xmlXPathObjectPtr xmlXPathNewNodeSetList(xmlNodeSetPtr val);
                    122: xmlXPathObjectPtr xmlXPathWrapNodeSet(xmlNodeSetPtr val);
                    123: void xmlXPathFreeNodeSetList(xmlXPathObjectPtr obj);
                    124: 
                    125: 
                    126: xmlXPathObjectPtr xmlXPathNewFloat(double val);
                    127: xmlXPathObjectPtr xmlXPathNewBoolean(int val);
                    128: xmlXPathObjectPtr xmlXPathNewString(const xmlChar *val);
                    129: xmlXPathObjectPtr xmlXPathNewCString(const char *val);
                    130: void xmlXPathFreeObject(xmlXPathObjectPtr obj);
                    131: xmlXPathContextPtr xmlXPathNewContext(xmlDocPtr doc);
                    132: void xmlXPathFreeContext(xmlXPathContextPtr ctxt);
                    133: 
                    134: int xmlXPathEqualValues(xmlXPathParserContextPtr ctxt);
                    135: int xmlXPathCompareValues(xmlXPathParserContextPtr ctxt, int inf, int strict);
                    136: void xmlXPathValueFlipSign(xmlXPathParserContextPtr ctxt);
                    137: void xmlXPathAddValues(xmlXPathParserContextPtr ctxt);
                    138: void xmlXPathSubValues(xmlXPathParserContextPtr ctxt);
                    139: void xmlXPathMultValues(xmlXPathParserContextPtr ctxt);
                    140: void xmlXPathDivValues(xmlXPathParserContextPtr ctxt);
                    141: void xmlXPathModValues(xmlXPathParserContextPtr ctxt);
                    142: 
                    143: /*
                    144:  * The official core of XPath functions
                    145:  */
                    146: void xmlXPathRoot(xmlXPathParserContextPtr ctxt);
                    147: void xmlXPathLastFunction(xmlXPathParserContextPtr ctxt, int nargs);
                    148: void xmlXPathPositionFunction(xmlXPathParserContextPtr ctxt, int nargs);
                    149: void xmlXPathCountFunction(xmlXPathParserContextPtr ctxt, int nargs);
                    150: void xmlXPathIdFunction(xmlXPathParserContextPtr ctxt, int nargs);
1.2     ! veillard  151: void xmlXPathLocalNameFunction(xmlXPathParserContextPtr ctxt, int nargs);
        !           152: void xmlXPathNamespaceURIFunction(xmlXPathParserContextPtr ctxt, int nargs);
1.1       veillard  153: void xmlXPathStringFunction(xmlXPathParserContextPtr ctxt, int nargs);
                    154: void xmlXPathStringLengthFunction(xmlXPathParserContextPtr ctxt, int nargs);
                    155: void xmlXPathConcatFunction(xmlXPathParserContextPtr ctxt, int nargs);
                    156: void xmlXPathContainsFunction(xmlXPathParserContextPtr ctxt, int nargs);
                    157: void xmlXPathStartsWithFunction(xmlXPathParserContextPtr ctxt, int nargs);
                    158: void xmlXPathSubstringFunction(xmlXPathParserContextPtr ctxt, int nargs);
                    159: void xmlXPathSubstringBeforeFunction(xmlXPathParserContextPtr ctxt, int nargs);
                    160: void xmlXPathSubstringAfterFunction(xmlXPathParserContextPtr ctxt, int nargs);
                    161: void xmlXPathNormalizeFunction(xmlXPathParserContextPtr ctxt, int nargs);
                    162: void xmlXPathTranslateFunction(xmlXPathParserContextPtr ctxt, int nargs);
                    163: void xmlXPathNotFunction(xmlXPathParserContextPtr ctxt, int nargs);
                    164: void xmlXPathTrueFunction(xmlXPathParserContextPtr ctxt, int nargs);
                    165: void xmlXPathFalseFunction(xmlXPathParserContextPtr ctxt, int nargs);
                    166: void xmlXPathLangFunction(xmlXPathParserContextPtr ctxt, int nargs);
                    167: void xmlXPathNumberFunction(xmlXPathParserContextPtr ctxt, int nargs);
                    168: void xmlXPathSumFunction(xmlXPathParserContextPtr ctxt, int nargs);
                    169: void xmlXPathFloorFunction(xmlXPathParserContextPtr ctxt, int nargs);
                    170: void xmlXPathCeilingFunction(xmlXPathParserContextPtr ctxt, int nargs);
                    171: void xmlXPathRoundFunction(xmlXPathParserContextPtr ctxt, int nargs);
                    172: #ifdef __cplusplus
                    173: }
                    174: #endif
                    175: #endif /* ! __XML_XPATH_INTERNALS_H__ */

Webmaster