(root)/
gettext-0.22.4/
libtextstyle/
lib/
libxml/
xpath.in.h
       1  /* libxml2 - Library for parsing XML documents
       2   * Copyright (C) 2006-2019 Free Software Foundation, Inc.
       3   *
       4   * This file is not part of the GNU gettext program, but is used with
       5   * GNU gettext.
       6   *
       7   * The original copyright notice is as follows:
       8   */
       9  
      10  /*
      11   * Copyright (C) 1998-2012 Daniel Veillard.  All Rights Reserved.
      12   *
      13   * Permission is hereby granted, free of charge, to any person obtaining a copy
      14   * of this software and associated documentation files (the "Software"), to deal
      15   * in the Software without restriction, including without limitation the rights
      16   * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
      17   * copies of the Software, and to permit persons to whom the Software is fur-
      18   * nished to do so, subject to the following conditions:
      19   *
      20   * The above copyright notice and this permission notice shall be included in
      21   * all copies or substantial portions of the Software.
      22   *
      23   * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
      24   * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FIT-
      25   * NESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
      26   * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
      27   * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
      28   * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
      29   * THE SOFTWARE.
      30   *
      31   * Author: Daniel Veillard
      32   */
      33  
      34  /*
      35   * Summary: XML Path Language implementation
      36   * Description: API for the XML Path Language implementation
      37   *
      38   * XML Path Language implementation
      39   * XPath is a language for addressing parts of an XML document,
      40   * designed to be used by both XSLT and XPointer
      41   *     http://www.w3.org/TR/xpath
      42   *
      43   * Implements
      44   * W3C Recommendation 16 November 1999
      45   *     http://www.w3.org/TR/1999/REC-xpath-19991116
      46   */
      47  
      48  #ifndef __XML_XPATH_H__
      49  #define __XML_XPATH_H__
      50  
      51  #include <libxml/xmlversion.h>
      52  
      53  #ifdef LIBXML_XPATH_ENABLED
      54  
      55  #include <libxml/xmlerror.h>
      56  #include <libxml/tree.h>
      57  #include <libxml/hash.h>
      58  #endif /* LIBXML_XPATH_ENABLED */
      59  
      60  #if defined(LIBXML_XPATH_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED)
      61  #ifdef __cplusplus
      62  extern "C" {
      63  #endif
      64  #endif /* LIBXML_XPATH_ENABLED or LIBXML_SCHEMAS_ENABLED */
      65  
      66  #ifdef LIBXML_XPATH_ENABLED
      67  
      68  typedef struct _xmlXPathContext xmlXPathContext;
      69  typedef xmlXPathContext *xmlXPathContextPtr;
      70  typedef struct _xmlXPathParserContext xmlXPathParserContext;
      71  typedef xmlXPathParserContext *xmlXPathParserContextPtr;
      72  
      73  /**
      74   * The set of XPath error codes.
      75   */
      76  
      77  typedef enum {
      78      XPATH_EXPRESSION_OK = 0,
      79      XPATH_NUMBER_ERROR,
      80      XPATH_UNFINISHED_LITERAL_ERROR,
      81      XPATH_START_LITERAL_ERROR,
      82      XPATH_VARIABLE_REF_ERROR,
      83      XPATH_UNDEF_VARIABLE_ERROR,
      84      XPATH_INVALID_PREDICATE_ERROR,
      85      XPATH_EXPR_ERROR,
      86      XPATH_UNCLOSED_ERROR,
      87      XPATH_UNKNOWN_FUNC_ERROR,
      88      XPATH_INVALID_OPERAND,
      89      XPATH_INVALID_TYPE,
      90      XPATH_INVALID_ARITY,
      91      XPATH_INVALID_CTXT_SIZE,
      92      XPATH_INVALID_CTXT_POSITION,
      93      XPATH_MEMORY_ERROR,
      94      XPTR_SYNTAX_ERROR,
      95      XPTR_RESOURCE_ERROR,
      96      XPTR_SUB_RESOURCE_ERROR,
      97      XPATH_UNDEF_PREFIX_ERROR,
      98      XPATH_ENCODING_ERROR,
      99      XPATH_INVALID_CHAR_ERROR,
     100      XPATH_INVALID_CTXT,
     101      XPATH_STACK_ERROR,
     102      XPATH_FORBID_VARIABLE_ERROR
     103  } xmlXPathError;
     104  
     105  /*
     106   * A node-set (an unordered collection of nodes without duplicates).
     107   */
     108  typedef struct _xmlNodeSet xmlNodeSet;
     109  typedef xmlNodeSet *xmlNodeSetPtr;
     110  struct _xmlNodeSet {
     111      int nodeNr;			/* number of nodes in the set */
     112      int nodeMax;		/* size of the array as allocated */
     113      xmlNodePtr *nodeTab;	/* array of nodes in no particular order */
     114      /* @@ with_ns to check wether namespace nodes should be looked at @@ */
     115  };
     116  
     117  /*
     118   * An expression is evaluated to yield an object, which
     119   * has one of the following four basic types:
     120   *   - node-set
     121   *   - boolean
     122   *   - number
     123   *   - string
     124   *
     125   * @@ XPointer will add more types !
     126   */
     127  
     128  typedef enum {
     129      XPATH_UNDEFINED = 0,
     130      XPATH_NODESET = 1,
     131      XPATH_BOOLEAN = 2,
     132      XPATH_NUMBER = 3,
     133      XPATH_STRING = 4,
     134      XPATH_POINT = 5,
     135      XPATH_RANGE = 6,
     136      XPATH_LOCATIONSET = 7,
     137      XPATH_USERS = 8,
     138      XPATH_XSLT_TREE = 9  /* An XSLT value tree, non modifiable */
     139  } xmlXPathObjectType;
     140  
     141  typedef struct _xmlXPathObject xmlXPathObject;
     142  typedef xmlXPathObject *xmlXPathObjectPtr;
     143  struct _xmlXPathObject {
     144      xmlXPathObjectType type;
     145      xmlNodeSetPtr nodesetval;
     146      int boolval;
     147      double floatval;
     148      xmlChar *stringval;
     149      void *user;
     150      int index;
     151      void *user2;
     152      int index2;
     153  };
     154  
     155  /**
     156   * xmlXPathConvertFunc:
     157   * @obj:  an XPath object
     158   * @type:  the number of the target type
     159   *
     160   * A conversion function is associated to a type and used to cast
     161   * the new type to primitive values.
     162   *
     163   * Returns -1 in case of error, 0 otherwise
     164   */
     165  typedef int (*xmlXPathConvertFunc) (xmlXPathObjectPtr obj, int type);
     166  
     167  /*
     168   * Extra type: a name and a conversion function.
     169   */
     170  
     171  typedef struct _xmlXPathType xmlXPathType;
     172  typedef xmlXPathType *xmlXPathTypePtr;
     173  struct _xmlXPathType {
     174      const xmlChar         *name;		/* the type name */
     175      xmlXPathConvertFunc func;		/* the conversion function */
     176  };
     177  
     178  /*
     179   * Extra variable: a name and a value.
     180   */
     181  
     182  typedef struct _xmlXPathVariable xmlXPathVariable;
     183  typedef xmlXPathVariable *xmlXPathVariablePtr;
     184  struct _xmlXPathVariable {
     185      const xmlChar       *name;		/* the variable name */
     186      xmlXPathObjectPtr value;		/* the value */
     187  };
     188  
     189  /**
     190   * xmlXPathEvalFunc:
     191   * @ctxt: an XPath parser context
     192   * @nargs: the number of arguments passed to the function
     193   *
     194   * An XPath evaluation function, the parameters are on the XPath context stack.
     195   */
     196  
     197  typedef void (*xmlXPathEvalFunc)(xmlXPathParserContextPtr ctxt,
     198  	                         int nargs);
     199  
     200  /*
     201   * Extra function: a name and a evaluation function.
     202   */
     203  
     204  typedef struct _xmlXPathFunct xmlXPathFunct;
     205  typedef xmlXPathFunct *xmlXPathFuncPtr;
     206  struct _xmlXPathFunct {
     207      const xmlChar      *name;		/* the function name */
     208      xmlXPathEvalFunc func;		/* the evaluation function */
     209  };
     210  
     211  /**
     212   * xmlXPathAxisFunc:
     213   * @ctxt:  the XPath interpreter context
     214   * @cur:  the previous node being explored on that axis
     215   *
     216   * An axis traversal function. To traverse an axis, the engine calls
     217   * the first time with cur == NULL and repeat until the function returns
     218   * NULL indicating the end of the axis traversal.
     219   *
     220   * Returns the next node in that axis or NULL if at the end of the axis.
     221   */
     222  
     223  typedef xmlXPathObjectPtr (*xmlXPathAxisFunc) (xmlXPathParserContextPtr ctxt,
     224  				 xmlXPathObjectPtr cur);
     225  
     226  /*
     227   * Extra axis: a name and an axis function.
     228   */
     229  
     230  typedef struct _xmlXPathAxis xmlXPathAxis;
     231  typedef xmlXPathAxis *xmlXPathAxisPtr;
     232  struct _xmlXPathAxis {
     233      const xmlChar      *name;		/* the axis name */
     234      xmlXPathAxisFunc func;		/* the search function */
     235  };
     236  
     237  /**
     238   * xmlXPathFunction:
     239   * @ctxt:  the XPath interprestation context
     240   * @nargs:  the number of arguments
     241   *
     242   * An XPath function.
     243   * The arguments (if any) are popped out from the context stack
     244   * and the result is pushed on the stack.
     245   */
     246  
     247  typedef void (*xmlXPathFunction) (xmlXPathParserContextPtr ctxt, int nargs);
     248  
     249  /*
     250   * Function and Variable Lookup.
     251   */
     252  
     253  /**
     254   * xmlXPathVariableLookupFunc:
     255   * @ctxt:  an XPath context
     256   * @name:  name of the variable
     257   * @ns_uri:  the namespace name hosting this variable
     258   *
     259   * Prototype for callbacks used to plug variable lookup in the XPath
     260   * engine.
     261   *
     262   * Returns the XPath object value or NULL if not found.
     263   */
     264  typedef xmlXPathObjectPtr (*xmlXPathVariableLookupFunc) (void *ctxt,
     265                                           const xmlChar *name,
     266                                           const xmlChar *ns_uri);
     267  
     268  /**
     269   * xmlXPathFuncLookupFunc:
     270   * @ctxt:  an XPath context
     271   * @name:  name of the function
     272   * @ns_uri:  the namespace name hosting this function
     273   *
     274   * Prototype for callbacks used to plug function lookup in the XPath
     275   * engine.
     276   *
     277   * Returns the XPath function or NULL if not found.
     278   */
     279  typedef xmlXPathFunction (*xmlXPathFuncLookupFunc) (void *ctxt,
     280  					 const xmlChar *name,
     281  					 const xmlChar *ns_uri);
     282  
     283  /**
     284   * xmlXPathFlags:
     285   * Flags for XPath engine compilation and runtime
     286   */
     287  /**
     288   * XML_XPATH_CHECKNS:
     289   *
     290   * check namespaces at compilation
     291   */
     292  #define XML_XPATH_CHECKNS (1<<0)
     293  /**
     294   * XML_XPATH_NOVAR:
     295   *
     296   * forbid variables in expression
     297   */
     298  #define XML_XPATH_NOVAR	  (1<<1)
     299  
     300  /**
     301   * xmlXPathContext:
     302   *
     303   * Expression evaluation occurs with respect to a context.
     304   * he context consists of:
     305   *    - a node (the context node)
     306   *    - a node list (the context node list)
     307   *    - a set of variable bindings
     308   *    - a function library
     309   *    - the set of namespace declarations in scope for the expression
     310   * Following the switch to hash tables, this need to be trimmed up at
     311   * the next binary incompatible release.
     312   * The node may be modified when the context is passed to libxml2
     313   * for an XPath evaluation so you may need to initialize it again
     314   * before the next call.
     315   */
     316  
     317  struct _xmlXPathContext {
     318      xmlDocPtr doc;			/* The current document */
     319      xmlNodePtr node;			/* The current node */
     320  
     321      int nb_variables_unused;		/* unused (hash table) */
     322      int max_variables_unused;		/* unused (hash table) */
     323      xmlHashTablePtr varHash;		/* Hash table of defined variables */
     324  
     325      int nb_types;			/* number of defined types */
     326      int max_types;			/* max number of types */
     327      xmlXPathTypePtr types;		/* Array of defined types */
     328  
     329      int nb_funcs_unused;		/* unused (hash table) */
     330      int max_funcs_unused;		/* unused (hash table) */
     331      xmlHashTablePtr funcHash;		/* Hash table of defined funcs */
     332  
     333      int nb_axis;			/* number of defined axis */
     334      int max_axis;			/* max number of axis */
     335      xmlXPathAxisPtr axis;		/* Array of defined axis */
     336  
     337      /* the namespace nodes of the context node */
     338      xmlNsPtr *namespaces;		/* Array of namespaces */
     339      int nsNr;				/* number of namespace in scope */
     340      void *user;				/* function to free */
     341  
     342      /* extra variables */
     343      int contextSize;			/* the context size */
     344      int proximityPosition;		/* the proximity position */
     345  
     346      /* extra stuff for XPointer */
     347      int xptr;				/* is this an XPointer context? */
     348      xmlNodePtr here;			/* for here() */
     349      xmlNodePtr origin;			/* for origin() */
     350  
     351      /* the set of namespace declarations in scope for the expression */
     352      xmlHashTablePtr nsHash;		/* The namespaces hash table */
     353      xmlXPathVariableLookupFunc varLookupFunc;/* variable lookup func */
     354      void *varLookupData;		/* variable lookup data */
     355  
     356      /* Possibility to link in an extra item */
     357      void *extra;                        /* needed for XSLT */
     358  
     359      /* The function name and URI when calling a function */
     360      const xmlChar *function;
     361      const xmlChar *functionURI;
     362  
     363      /* function lookup function and data */
     364      xmlXPathFuncLookupFunc funcLookupFunc;/* function lookup func */
     365      void *funcLookupData;		/* function lookup data */
     366  
     367      /* temporary namespace lists kept for walking the namespace axis */
     368      xmlNsPtr *tmpNsList;		/* Array of namespaces */
     369      int tmpNsNr;			/* number of namespaces in scope */
     370  
     371      /* error reporting mechanism */
     372      void *userData;                     /* user specific data block */
     373      xmlStructuredErrorFunc error;       /* the callback in case of errors */
     374      xmlError lastError;			/* the last error */
     375      xmlNodePtr debugNode;		/* the source node XSLT */
     376  
     377      /* dictionary */
     378      xmlDictPtr dict;			/* dictionary if any */
     379  
     380      int flags;				/* flags to control compilation */
     381  
     382      /* Cache for reusal of XPath objects */
     383      void *cache;
     384  };
     385  
     386  /*
     387   * The structure of a compiled expression form is not public.
     388   */
     389  
     390  typedef struct _xmlXPathCompExpr xmlXPathCompExpr;
     391  typedef xmlXPathCompExpr *xmlXPathCompExprPtr;
     392  
     393  /**
     394   * xmlXPathParserContext:
     395   *
     396   * An XPath parser context. It contains pure parsing informations,
     397   * an xmlXPathContext, and the stack of objects.
     398   */
     399  struct _xmlXPathParserContext {
     400      const xmlChar *cur;			/* the current char being parsed */
     401      const xmlChar *base;			/* the full expression */
     402  
     403      int error;				/* error code */
     404  
     405      xmlXPathContextPtr  context;	/* the evaluation context */
     406      xmlXPathObjectPtr     value;	/* the current value */
     407      int                 valueNr;	/* number of values stacked */
     408      int                valueMax;	/* max number of values stacked */
     409      xmlXPathObjectPtr *valueTab;	/* stack of values */
     410  
     411      xmlXPathCompExprPtr comp;		/* the precompiled expression */
     412      int xptr;				/* it this an XPointer expression */
     413      xmlNodePtr         ancestor;	/* used for walking preceding axis */
     414  
     415      int              valueFrame;        /* used to limit Pop on the stack */
     416  };
     417  
     418  /************************************************************************
     419   *									*
     420   *			Public API					*
     421   *									*
     422   ************************************************************************/
     423  
     424  /**
     425   * Objects and Nodesets handling
     426   */
     427  
     428  XMLPUBVAR double xmlXPathNAN;
     429  XMLPUBVAR double xmlXPathPINF;
     430  XMLPUBVAR double xmlXPathNINF;
     431  
     432  /* These macros may later turn into functions */
     433  /**
     434   * xmlXPathNodeSetGetLength:
     435   * @ns:  a node-set
     436   *
     437   * Implement a functionality similar to the DOM NodeList.length.
     438   *
     439   * Returns the number of nodes in the node-set.
     440   */
     441  #define xmlXPathNodeSetGetLength(ns) ((ns) ? (ns)->nodeNr : 0)
     442  /**
     443   * xmlXPathNodeSetItem:
     444   * @ns:  a node-set
     445   * @index:  index of a node in the set
     446   *
     447   * Implements a functionality similar to the DOM NodeList.item().
     448   *
     449   * Returns the xmlNodePtr at the given @index in @ns or NULL if
     450   *         @index is out of range (0 to length-1)
     451   */
     452  #define xmlXPathNodeSetItem(ns, index)				\
     453  		((((ns) != NULL) &&				\
     454  		  ((index) >= 0) && ((index) < (ns)->nodeNr)) ?	\
     455  		 (ns)->nodeTab[(index)]				\
     456  		 : NULL)
     457  /**
     458   * xmlXPathNodeSetIsEmpty:
     459   * @ns: a node-set
     460   *
     461   * Checks whether @ns is empty or not.
     462   *
     463   * Returns %TRUE if @ns is an empty node-set.
     464   */
     465  #define xmlXPathNodeSetIsEmpty(ns)                                      \
     466      (((ns) == NULL) || ((ns)->nodeNr == 0) || ((ns)->nodeTab == NULL))
     467  
     468  
     469  XMLPUBFUN void XMLCALL
     470  		    xmlXPathFreeObject		(xmlXPathObjectPtr obj);
     471  XMLPUBFUN xmlNodeSetPtr XMLCALL
     472  		    xmlXPathNodeSetCreate	(xmlNodePtr val);
     473  XMLPUBFUN void XMLCALL
     474  		    xmlXPathFreeNodeSetList	(xmlXPathObjectPtr obj);
     475  XMLPUBFUN void XMLCALL
     476  		    xmlXPathFreeNodeSet		(xmlNodeSetPtr obj);
     477  XMLPUBFUN xmlXPathObjectPtr XMLCALL
     478  		    xmlXPathObjectCopy		(xmlXPathObjectPtr val);
     479  XMLPUBFUN int XMLCALL
     480  		    xmlXPathCmpNodes		(xmlNodePtr node1,
     481  						 xmlNodePtr node2);
     482  /**
     483   * Conversion functions to basic types.
     484   */
     485  XMLPUBFUN int XMLCALL
     486  		    xmlXPathCastNumberToBoolean	(double val);
     487  XMLPUBFUN int XMLCALL
     488  		    xmlXPathCastStringToBoolean	(const xmlChar * val);
     489  XMLPUBFUN int XMLCALL
     490  		    xmlXPathCastNodeSetToBoolean(xmlNodeSetPtr ns);
     491  XMLPUBFUN int XMLCALL
     492  		    xmlXPathCastToBoolean	(xmlXPathObjectPtr val);
     493  
     494  XMLPUBFUN double XMLCALL
     495  		    xmlXPathCastBooleanToNumber	(int val);
     496  XMLPUBFUN double XMLCALL
     497  		    xmlXPathCastStringToNumber	(const xmlChar * val);
     498  XMLPUBFUN double XMLCALL
     499  		    xmlXPathCastNodeToNumber	(xmlNodePtr node);
     500  XMLPUBFUN double XMLCALL
     501  		    xmlXPathCastNodeSetToNumber	(xmlNodeSetPtr ns);
     502  XMLPUBFUN double XMLCALL
     503  		    xmlXPathCastToNumber	(xmlXPathObjectPtr val);
     504  
     505  XMLPUBFUN xmlChar * XMLCALL
     506  		    xmlXPathCastBooleanToString	(int val);
     507  XMLPUBFUN xmlChar * XMLCALL
     508  		    xmlXPathCastNumberToString	(double val);
     509  XMLPUBFUN xmlChar * XMLCALL
     510  		    xmlXPathCastNodeToString	(xmlNodePtr node);
     511  XMLPUBFUN xmlChar * XMLCALL
     512  		    xmlXPathCastNodeSetToString	(xmlNodeSetPtr ns);
     513  XMLPUBFUN xmlChar * XMLCALL
     514  		    xmlXPathCastToString	(xmlXPathObjectPtr val);
     515  
     516  XMLPUBFUN xmlXPathObjectPtr XMLCALL
     517  		    xmlXPathConvertBoolean	(xmlXPathObjectPtr val);
     518  XMLPUBFUN xmlXPathObjectPtr XMLCALL
     519  		    xmlXPathConvertNumber	(xmlXPathObjectPtr val);
     520  XMLPUBFUN xmlXPathObjectPtr XMLCALL
     521  		    xmlXPathConvertString	(xmlXPathObjectPtr val);
     522  
     523  /**
     524   * Context handling.
     525   */
     526  XMLPUBFUN xmlXPathContextPtr XMLCALL
     527  		    xmlXPathNewContext		(xmlDocPtr doc);
     528  XMLPUBFUN void XMLCALL
     529  		    xmlXPathFreeContext		(xmlXPathContextPtr ctxt);
     530  XMLPUBFUN int XMLCALL
     531  		    xmlXPathContextSetCache(xmlXPathContextPtr ctxt,
     532  				            int active,
     533  					    int value,
     534  					    int options);
     535  /**
     536   * Evaluation functions.
     537   */
     538  XMLPUBFUN long XMLCALL
     539  		    xmlXPathOrderDocElems	(xmlDocPtr doc);
     540  XMLPUBFUN int XMLCALL
     541  		    xmlXPathSetContextNode	(xmlNodePtr node,
     542  						 xmlXPathContextPtr ctx);
     543  XMLPUBFUN xmlXPathObjectPtr XMLCALL
     544  		    xmlXPathNodeEval		(xmlNodePtr node,
     545  						 const xmlChar *str,
     546  						 xmlXPathContextPtr ctx);
     547  XMLPUBFUN xmlXPathObjectPtr XMLCALL
     548  		    xmlXPathEval		(const xmlChar *str,
     549  						 xmlXPathContextPtr ctx);
     550  XMLPUBFUN xmlXPathObjectPtr XMLCALL
     551  		    xmlXPathEvalExpression	(const xmlChar *str,
     552  						 xmlXPathContextPtr ctxt);
     553  XMLPUBFUN int XMLCALL
     554  		    xmlXPathEvalPredicate	(xmlXPathContextPtr ctxt,
     555  						 xmlXPathObjectPtr res);
     556  /**
     557   * Separate compilation/evaluation entry points.
     558   */
     559  XMLPUBFUN xmlXPathCompExprPtr XMLCALL
     560  		    xmlXPathCompile		(const xmlChar *str);
     561  XMLPUBFUN xmlXPathCompExprPtr XMLCALL
     562  		    xmlXPathCtxtCompile		(xmlXPathContextPtr ctxt,
     563  						 const xmlChar *str);
     564  XMLPUBFUN xmlXPathObjectPtr XMLCALL
     565  		    xmlXPathCompiledEval	(xmlXPathCompExprPtr comp,
     566  						 xmlXPathContextPtr ctx);
     567  XMLPUBFUN int XMLCALL
     568  		    xmlXPathCompiledEvalToBoolean(xmlXPathCompExprPtr comp,
     569  						 xmlXPathContextPtr ctxt);
     570  XMLPUBFUN void XMLCALL
     571  		    xmlXPathFreeCompExpr	(xmlXPathCompExprPtr comp);
     572  #endif /* LIBXML_XPATH_ENABLED */
     573  #if defined(LIBXML_XPATH_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED)
     574  XMLPUBFUN void XMLCALL
     575  		    xmlXPathInit		(void);
     576  XMLPUBFUN int XMLCALL
     577  		xmlXPathIsNaN	(double val);
     578  XMLPUBFUN int XMLCALL
     579  		xmlXPathIsInf	(double val);
     580  
     581  #ifdef __cplusplus
     582  }
     583  #endif
     584  
     585  #endif /* LIBXML_XPATH_ENABLED or LIBXML_SCHEMAS_ENABLED*/
     586  #endif /* ! __XML_XPATH_H__ */