Annotation of XML/xpathInternals.h, revision 1.1

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);
        !           151: void xmlXPathLocalPartFunction(xmlXPathParserContextPtr ctxt, int nargs);
        !           152: void xmlXPathNamespaceFunction(xmlXPathParserContextPtr ctxt, int nargs);
        !           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