Team Ai
Datasetpublic

codekingpro/portable-devtools

sourceHugging Faceupdated 5mo agoView on Hugging Face
1likes15kdownloads
xpathInternals.h633 linesDownload Raw Back to libxml
1/*2 * Summary: internal interfaces for XML Path Language implementation3 * Description: internal interfaces for XML Path Language implementation4 *              used to build new modules on top of XPath like XPointer and5 *              XSLT6 *7 * Copy: See Copyright for the status of this software.8 *9 * Author: Daniel Veillard10 */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_ENABLED19 20#ifdef __cplusplus21extern "C" {22#endif23 24/************************************************************************25 *									*26 *			Helpers						*27 *									*28 ************************************************************************/29 30/*31 * Many of these macros may later turn into functions. They32 * shouldn't be used in #ifdef's preprocessor instructions.33 */34/**35 * xmlXPathSetError:36 * @ctxt:  an XPath parser context37 * @err:  an xmlXPathError code38 *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 context48 *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 context57 *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 context66 *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 context76 *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 context86 *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 context96 *97 * Get the context node of an XPath context.98 *99 * Returns the context node.100 */101#define xmlXPathGetContextNode(ctxt)	((ctxt)->context->node)102 103XMLPUBFUN int104		xmlXPathPopBoolean	(xmlXPathParserContextPtr ctxt);105XMLPUBFUN double106		xmlXPathPopNumber	(xmlXPathParserContextPtr ctxt);107XMLPUBFUN xmlChar *108		xmlXPathPopString	(xmlXPathParserContextPtr ctxt);109XMLPUBFUN xmlNodeSetPtr110		xmlXPathPopNodeSet	(xmlXPathParserContextPtr ctxt);111XMLPUBFUN void *112		xmlXPathPopExternal	(xmlXPathParserContextPtr ctxt);113 114/**115 * xmlXPathReturnBoolean:116 * @ctxt:  an XPath parser context117 * @val:  a boolean118 *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 context127 *128 * Pushes true on the context stack.129 */130#define xmlXPathReturnTrue(ctxt)   xmlXPathReturnBoolean((ctxt), 1)131 132/**133 * xmlXPathReturnFalse:134 * @ctxt:  an XPath parser context135 *136 * Pushes false on the context stack.137 */138#define xmlXPathReturnFalse(ctxt)  xmlXPathReturnBoolean((ctxt), 0)139 140/**141 * xmlXPathReturnNumber:142 * @ctxt:  an XPath parser context143 * @val:  a double144 *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 context153 * @str:  a string154 *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 context163 *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 context172 * @ns:  a node-set173 *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 context182 *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 context191 * @val:  user data192 *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 context201 *202 * Check if the current value on the XPath stack is a node set or203 * 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 context215 *216 * Checks if the current value on the XPath stack is an external217 * object.218 *219 * Returns true if the current object on the stack is an external220 * object.221 */222#define xmlXPathStackIsExternal(ctxt)					\223	((ctxt->value != NULL) && (ctxt->value->type == XPATH_USERS))224 225/**226 * xmlXPathEmptyNodeSet:227 * @ns:  a node-set228 *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) return241 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 code253 *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 code262 *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 type271 *272 * Macro to check that the value on top of the XPath stack is of a given273 * 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 type282 *283 * Macro to check that the value on top of the XPath stack is of a given284 * type. Return(0) in case of failure285 */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 args293 *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    if (ctxt->valueNr < ctxt->valueFrame + (x))				\301        XP_ERROR(XPATH_STACK_ERROR);302 303/**304 * CAST_TO_STRING:305 *306 * Macro to try to cast the value on the top of the XPath stack to a string.307 */308#define CAST_TO_STRING							\309    if ((ctxt->value != NULL) && (ctxt->value->type != XPATH_STRING))	\310        xmlXPathStringFunction(ctxt, 1);311 312/**313 * CAST_TO_NUMBER:314 *315 * Macro to try to cast the value on the top of the XPath stack to a number.316 */317#define CAST_TO_NUMBER							\318    if ((ctxt->value != NULL) && (ctxt->value->type != XPATH_NUMBER))	\319        xmlXPathNumberFunction(ctxt, 1);320 321/**322 * CAST_TO_BOOLEAN:323 *324 * Macro to try to cast the value on the top of the XPath stack to a boolean.325 */326#define CAST_TO_BOOLEAN							\327    if ((ctxt->value != NULL) && (ctxt->value->type != XPATH_BOOLEAN))	\328        xmlXPathBooleanFunction(ctxt, 1);329 330/*331 * Variable Lookup forwarding.332 */333 334XMLPUBFUN void335	xmlXPathRegisterVariableLookup	(xmlXPathContextPtr ctxt,336					 xmlXPathVariableLookupFunc f,337					 void *data);338 339/*340 * Function Lookup forwarding.341 */342 343XMLPUBFUN void344	    xmlXPathRegisterFuncLookup	(xmlXPathContextPtr ctxt,345					 xmlXPathFuncLookupFunc f,346					 void *funcCtxt);347 348/*349 * Error reporting.350 */351XMLPUBFUN void352		xmlXPatherror	(xmlXPathParserContextPtr ctxt,353				 const char *file,354				 int line,355				 int no);356 357XMLPUBFUN void358		xmlXPathErr	(xmlXPathParserContextPtr ctxt,359				 int error);360 361#ifdef LIBXML_DEBUG_ENABLED362XMLPUBFUN void363		xmlXPathDebugDumpObject	(FILE *output,364					 xmlXPathObjectPtr cur,365					 int depth);366XMLPUBFUN void367	    xmlXPathDebugDumpCompExpr(FILE *output,368					 xmlXPathCompExprPtr comp,369					 int depth);370#endif371/**372 * NodeSet handling.373 */374XMLPUBFUN int375		xmlXPathNodeSetContains		(xmlNodeSetPtr cur,376						 xmlNodePtr val);377XMLPUBFUN xmlNodeSetPtr378		xmlXPathDifference		(xmlNodeSetPtr nodes1,379						 xmlNodeSetPtr nodes2);380XMLPUBFUN xmlNodeSetPtr381		xmlXPathIntersection		(xmlNodeSetPtr nodes1,382						 xmlNodeSetPtr nodes2);383 384XMLPUBFUN xmlNodeSetPtr385		xmlXPathDistinctSorted		(xmlNodeSetPtr nodes);386XMLPUBFUN xmlNodeSetPtr387		xmlXPathDistinct		(xmlNodeSetPtr nodes);388 389XMLPUBFUN int390		xmlXPathHasSameNodes		(xmlNodeSetPtr nodes1,391						 xmlNodeSetPtr nodes2);392 393XMLPUBFUN xmlNodeSetPtr394		xmlXPathNodeLeadingSorted	(xmlNodeSetPtr nodes,395						 xmlNodePtr node);396XMLPUBFUN xmlNodeSetPtr397		xmlXPathLeadingSorted		(xmlNodeSetPtr nodes1,398						 xmlNodeSetPtr nodes2);399XMLPUBFUN xmlNodeSetPtr400		xmlXPathNodeLeading		(xmlNodeSetPtr nodes,401						 xmlNodePtr node);402XMLPUBFUN xmlNodeSetPtr403		xmlXPathLeading			(xmlNodeSetPtr nodes1,404						 xmlNodeSetPtr nodes2);405 406XMLPUBFUN xmlNodeSetPtr407		xmlXPathNodeTrailingSorted	(xmlNodeSetPtr nodes,408						 xmlNodePtr node);409XMLPUBFUN xmlNodeSetPtr410		xmlXPathTrailingSorted		(xmlNodeSetPtr nodes1,411						 xmlNodeSetPtr nodes2);412XMLPUBFUN xmlNodeSetPtr413		xmlXPathNodeTrailing		(xmlNodeSetPtr nodes,414						 xmlNodePtr node);415XMLPUBFUN xmlNodeSetPtr416		xmlXPathTrailing		(xmlNodeSetPtr nodes1,417						 xmlNodeSetPtr nodes2);418 419 420/**421 * Extending a context.422 */423 424XMLPUBFUN int425		xmlXPathRegisterNs		(xmlXPathContextPtr ctxt,426						 const xmlChar *prefix,427						 const xmlChar *ns_uri);428XMLPUBFUN const xmlChar *429		xmlXPathNsLookup		(xmlXPathContextPtr ctxt,430						 const xmlChar *prefix);431XMLPUBFUN void432		xmlXPathRegisteredNsCleanup	(xmlXPathContextPtr ctxt);433 434XMLPUBFUN int435		xmlXPathRegisterFunc		(xmlXPathContextPtr ctxt,436						 const xmlChar *name,437						 xmlXPathFunction f);438XMLPUBFUN int439		xmlXPathRegisterFuncNS		(xmlXPathContextPtr ctxt,440						 const xmlChar *name,441						 const xmlChar *ns_uri,442						 xmlXPathFunction f);443XMLPUBFUN int444		xmlXPathRegisterVariable	(xmlXPathContextPtr ctxt,445						 const xmlChar *name,446						 xmlXPathObjectPtr value);447XMLPUBFUN int448		xmlXPathRegisterVariableNS	(xmlXPathContextPtr ctxt,449						 const xmlChar *name,450						 const xmlChar *ns_uri,451						 xmlXPathObjectPtr value);452XMLPUBFUN xmlXPathFunction453		xmlXPathFunctionLookup		(xmlXPathContextPtr ctxt,454						 const xmlChar *name);455XMLPUBFUN xmlXPathFunction456		xmlXPathFunctionLookupNS	(xmlXPathContextPtr ctxt,457						 const xmlChar *name,458						 const xmlChar *ns_uri);459XMLPUBFUN void460		xmlXPathRegisteredFuncsCleanup	(xmlXPathContextPtr ctxt);461XMLPUBFUN xmlXPathObjectPtr462		xmlXPathVariableLookup		(xmlXPathContextPtr ctxt,463						 const xmlChar *name);464XMLPUBFUN xmlXPathObjectPtr465		xmlXPathVariableLookupNS	(xmlXPathContextPtr ctxt,466						 const xmlChar *name,467						 const xmlChar *ns_uri);468XMLPUBFUN void469		xmlXPathRegisteredVariablesCleanup(xmlXPathContextPtr ctxt);470 471/**472 * Utilities to extend XPath.473 */474XMLPUBFUN xmlXPathParserContextPtr475		  xmlXPathNewParserContext	(const xmlChar *str,476						 xmlXPathContextPtr ctxt);477XMLPUBFUN void478		xmlXPathFreeParserContext	(xmlXPathParserContextPtr ctxt);479 480/* TODO: remap to xmlXPathValuePop and Push. */481XMLPUBFUN xmlXPathObjectPtr482		valuePop			(xmlXPathParserContextPtr ctxt);483XMLPUBFUN int484		valuePush			(xmlXPathParserContextPtr ctxt,485						 xmlXPathObjectPtr value);486 487XMLPUBFUN xmlXPathObjectPtr488		xmlXPathNewString		(const xmlChar *val);489XMLPUBFUN xmlXPathObjectPtr490		xmlXPathNewCString		(const char *val);491XMLPUBFUN xmlXPathObjectPtr492		xmlXPathWrapString		(xmlChar *val);493XMLPUBFUN xmlXPathObjectPtr494		xmlXPathWrapCString		(char * val);495XMLPUBFUN xmlXPathObjectPtr496		xmlXPathNewFloat		(double val);497XMLPUBFUN xmlXPathObjectPtr498		xmlXPathNewBoolean		(int val);499XMLPUBFUN xmlXPathObjectPtr500		xmlXPathNewNodeSet		(xmlNodePtr val);501XMLPUBFUN xmlXPathObjectPtr502		xmlXPathNewValueTree		(xmlNodePtr val);503XMLPUBFUN int504		xmlXPathNodeSetAdd		(xmlNodeSetPtr cur,505						 xmlNodePtr val);506XMLPUBFUN int507		xmlXPathNodeSetAddUnique	(xmlNodeSetPtr cur,508						 xmlNodePtr val);509XMLPUBFUN int510		xmlXPathNodeSetAddNs		(xmlNodeSetPtr cur,511						 xmlNodePtr node,512						 xmlNsPtr ns);513XMLPUBFUN void514		xmlXPathNodeSetSort		(xmlNodeSetPtr set);515 516XMLPUBFUN void517		xmlXPathRoot			(xmlXPathParserContextPtr ctxt);518XMLPUBFUN void519		xmlXPathEvalExpr		(xmlXPathParserContextPtr ctxt);520XMLPUBFUN xmlChar *521		xmlXPathParseName		(xmlXPathParserContextPtr ctxt);522XMLPUBFUN xmlChar *523		xmlXPathParseNCName		(xmlXPathParserContextPtr ctxt);524 525/*526 * Existing functions.527 */528XMLPUBFUN double529		xmlXPathStringEvalNumber	(const xmlChar *str);530XMLPUBFUN int531		xmlXPathEvaluatePredicateResult (xmlXPathParserContextPtr ctxt,532						 xmlXPathObjectPtr res);533XMLPUBFUN void534		xmlXPathRegisterAllFunctions	(xmlXPathContextPtr ctxt);535XMLPUBFUN xmlNodeSetPtr536		xmlXPathNodeSetMerge		(xmlNodeSetPtr val1,537						 xmlNodeSetPtr val2);538XMLPUBFUN void539		xmlXPathNodeSetDel		(xmlNodeSetPtr cur,540						 xmlNodePtr val);541XMLPUBFUN void542		xmlXPathNodeSetRemove		(xmlNodeSetPtr cur,543						 int val);544XMLPUBFUN xmlXPathObjectPtr545		xmlXPathNewNodeSetList		(xmlNodeSetPtr val);546XMLPUBFUN xmlXPathObjectPtr547		xmlXPathWrapNodeSet		(xmlNodeSetPtr val);548XMLPUBFUN xmlXPathObjectPtr549		xmlXPathWrapExternal		(void *val);550 551XMLPUBFUN int xmlXPathEqualValues(xmlXPathParserContextPtr ctxt);552XMLPUBFUN int xmlXPathNotEqualValues(xmlXPathParserContextPtr ctxt);553XMLPUBFUN int xmlXPathCompareValues(xmlXPathParserContextPtr ctxt, int inf, int strict);554XMLPUBFUN void xmlXPathValueFlipSign(xmlXPathParserContextPtr ctxt);555XMLPUBFUN void xmlXPathAddValues(xmlXPathParserContextPtr ctxt);556XMLPUBFUN void xmlXPathSubValues(xmlXPathParserContextPtr ctxt);557XMLPUBFUN void xmlXPathMultValues(xmlXPathParserContextPtr ctxt);558XMLPUBFUN void xmlXPathDivValues(xmlXPathParserContextPtr ctxt);559XMLPUBFUN void xmlXPathModValues(xmlXPathParserContextPtr ctxt);560 561XMLPUBFUN int xmlXPathIsNodeType(const xmlChar *name);562 563/*564 * Some of the axis navigation routines.565 */566XMLPUBFUN xmlNodePtr xmlXPathNextSelf(xmlXPathParserContextPtr ctxt,567			xmlNodePtr cur);568XMLPUBFUN xmlNodePtr xmlXPathNextChild(xmlXPathParserContextPtr ctxt,569			xmlNodePtr cur);570XMLPUBFUN xmlNodePtr xmlXPathNextDescendant(xmlXPathParserContextPtr ctxt,571			xmlNodePtr cur);572XMLPUBFUN xmlNodePtr xmlXPathNextDescendantOrSelf(xmlXPathParserContextPtr ctxt,573			xmlNodePtr cur);574XMLPUBFUN xmlNodePtr xmlXPathNextParent(xmlXPathParserContextPtr ctxt,575			xmlNodePtr cur);576XMLPUBFUN xmlNodePtr xmlXPathNextAncestorOrSelf(xmlXPathParserContextPtr ctxt,577			xmlNodePtr cur);578XMLPUBFUN xmlNodePtr xmlXPathNextFollowingSibling(xmlXPathParserContextPtr ctxt,579			xmlNodePtr cur);580XMLPUBFUN xmlNodePtr xmlXPathNextFollowing(xmlXPathParserContextPtr ctxt,581			xmlNodePtr cur);582XMLPUBFUN xmlNodePtr xmlXPathNextNamespace(xmlXPathParserContextPtr ctxt,583			xmlNodePtr cur);584XMLPUBFUN xmlNodePtr xmlXPathNextAttribute(xmlXPathParserContextPtr ctxt,585			xmlNodePtr cur);586XMLPUBFUN xmlNodePtr xmlXPathNextPreceding(xmlXPathParserContextPtr ctxt,587			xmlNodePtr cur);588XMLPUBFUN xmlNodePtr xmlXPathNextAncestor(xmlXPathParserContextPtr ctxt,589			xmlNodePtr cur);590XMLPUBFUN xmlNodePtr xmlXPathNextPrecedingSibling(xmlXPathParserContextPtr ctxt,591			xmlNodePtr cur);592/*593 * The official core of XPath functions.594 */595XMLPUBFUN void xmlXPathLastFunction(xmlXPathParserContextPtr ctxt, int nargs);596XMLPUBFUN void xmlXPathPositionFunction(xmlXPathParserContextPtr ctxt, int nargs);597XMLPUBFUN void xmlXPathCountFunction(xmlXPathParserContextPtr ctxt, int nargs);598XMLPUBFUN void xmlXPathIdFunction(xmlXPathParserContextPtr ctxt, int nargs);599XMLPUBFUN void xmlXPathLocalNameFunction(xmlXPathParserContextPtr ctxt, int nargs);600XMLPUBFUN void xmlXPathNamespaceURIFunction(xmlXPathParserContextPtr ctxt, int nargs);601XMLPUBFUN void xmlXPathStringFunction(xmlXPathParserContextPtr ctxt, int nargs);602XMLPUBFUN void xmlXPathStringLengthFunction(xmlXPathParserContextPtr ctxt, int nargs);603XMLPUBFUN void xmlXPathConcatFunction(xmlXPathParserContextPtr ctxt, int nargs);604XMLPUBFUN void xmlXPathContainsFunction(xmlXPathParserContextPtr ctxt, int nargs);605XMLPUBFUN void xmlXPathStartsWithFunction(xmlXPathParserContextPtr ctxt, int nargs);606XMLPUBFUN void xmlXPathSubstringFunction(xmlXPathParserContextPtr ctxt, int nargs);607XMLPUBFUN void xmlXPathSubstringBeforeFunction(xmlXPathParserContextPtr ctxt, int nargs);608XMLPUBFUN void xmlXPathSubstringAfterFunction(xmlXPathParserContextPtr ctxt, int nargs);609XMLPUBFUN void xmlXPathNormalizeFunction(xmlXPathParserContextPtr ctxt, int nargs);610XMLPUBFUN void xmlXPathTranslateFunction(xmlXPathParserContextPtr ctxt, int nargs);611XMLPUBFUN void xmlXPathNotFunction(xmlXPathParserContextPtr ctxt, int nargs);612XMLPUBFUN void xmlXPathTrueFunction(xmlXPathParserContextPtr ctxt, int nargs);613XMLPUBFUN void xmlXPathFalseFunction(xmlXPathParserContextPtr ctxt, int nargs);614XMLPUBFUN void xmlXPathLangFunction(xmlXPathParserContextPtr ctxt, int nargs);615XMLPUBFUN void xmlXPathNumberFunction(xmlXPathParserContextPtr ctxt, int nargs);616XMLPUBFUN void xmlXPathSumFunction(xmlXPathParserContextPtr ctxt, int nargs);617XMLPUBFUN void xmlXPathFloorFunction(xmlXPathParserContextPtr ctxt, int nargs);618XMLPUBFUN void xmlXPathCeilingFunction(xmlXPathParserContextPtr ctxt, int nargs);619XMLPUBFUN void xmlXPathRoundFunction(xmlXPathParserContextPtr ctxt, int nargs);620XMLPUBFUN void xmlXPathBooleanFunction(xmlXPathParserContextPtr ctxt, int nargs);621 622/**623 * Really internal functions624 */625XMLPUBFUN void xmlXPathNodeSetFreeNs(xmlNsPtr ns);626 627#ifdef __cplusplus628}629#endif630 631#endif /* LIBXML_XPATH_ENABLED */632#endif /* ! __XML_XPATH_INTERNALS_H__ */633 
codekingpro/portable-devtools · Team Ai