mirror of
https://gitlab.gnome.org/GNOME/libxml2.git
synced 2024-12-25 23:21:26 +03:00
xpath: Fix build without LIBXML_XPATH_ENABLED
Move static function declaration into XPATH block. Also move comparison functions. Fixes #537.
This commit is contained in:
parent
235b15a590
commit
01723fc68f
216
xpath.c
216
xpath.c
@ -145,6 +145,114 @@
|
||||
* any use of the macros IS_ASCII_CHARACTER and IS_ASCII_DIGIT)
|
||||
*/
|
||||
|
||||
#if defined(LIBXML_XPATH_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED)
|
||||
|
||||
/************************************************************************
|
||||
* *
|
||||
* Floating point stuff *
|
||||
* *
|
||||
************************************************************************/
|
||||
|
||||
double xmlXPathNAN = 0.0;
|
||||
double xmlXPathPINF = 0.0;
|
||||
double xmlXPathNINF = 0.0;
|
||||
|
||||
/**
|
||||
* xmlXPathInit:
|
||||
*
|
||||
* DEPRECATED: Alias for xmlInitParser.
|
||||
*/
|
||||
void
|
||||
xmlXPathInit(void) {
|
||||
xmlInitParser();
|
||||
}
|
||||
|
||||
/**
|
||||
* xmlInitXPathInternal:
|
||||
*
|
||||
* Initialize the XPath environment
|
||||
*/
|
||||
ATTRIBUTE_NO_SANITIZE("float-divide-by-zero")
|
||||
void
|
||||
xmlInitXPathInternal(void) {
|
||||
#if defined(NAN) && defined(INFINITY)
|
||||
xmlXPathNAN = NAN;
|
||||
xmlXPathPINF = INFINITY;
|
||||
xmlXPathNINF = -INFINITY;
|
||||
#else
|
||||
/* MSVC doesn't allow division by zero in constant expressions. */
|
||||
double zero = 0.0;
|
||||
xmlXPathNAN = 0.0 / zero;
|
||||
xmlXPathPINF = 1.0 / zero;
|
||||
xmlXPathNINF = -xmlXPathPINF;
|
||||
#endif
|
||||
}
|
||||
|
||||
/**
|
||||
* xmlXPathIsNaN:
|
||||
* @val: a double value
|
||||
*
|
||||
* Returns 1 if the value is a NaN, 0 otherwise
|
||||
*/
|
||||
int
|
||||
xmlXPathIsNaN(double val) {
|
||||
#ifdef isnan
|
||||
return isnan(val);
|
||||
#else
|
||||
return !(val == val);
|
||||
#endif
|
||||
}
|
||||
|
||||
/**
|
||||
* xmlXPathIsInf:
|
||||
* @val: a double value
|
||||
*
|
||||
* Returns 1 if the value is +Infinite, -1 if -Infinite, 0 otherwise
|
||||
*/
|
||||
int
|
||||
xmlXPathIsInf(double val) {
|
||||
#ifdef isinf
|
||||
return isinf(val) ? (val > 0 ? 1 : -1) : 0;
|
||||
#else
|
||||
if (val >= xmlXPathPINF)
|
||||
return 1;
|
||||
if (val <= -xmlXPathPINF)
|
||||
return -1;
|
||||
return 0;
|
||||
#endif
|
||||
}
|
||||
|
||||
#endif /* SCHEMAS or XPATH */
|
||||
|
||||
#ifdef LIBXML_XPATH_ENABLED
|
||||
|
||||
/*
|
||||
* TODO: when compatibility allows remove all "fake node libxslt" strings
|
||||
* the test should just be name[0] = ' '
|
||||
*/
|
||||
#ifdef DEBUG_XPATH_EXPRESSION
|
||||
#define DEBUG_STEP
|
||||
#define DEBUG_EXPR
|
||||
#define DEBUG_EVAL_COUNTS
|
||||
#endif
|
||||
|
||||
static xmlNs xmlXPathXMLNamespaceStruct = {
|
||||
NULL,
|
||||
XML_NAMESPACE_DECL,
|
||||
XML_XML_NAMESPACE,
|
||||
BAD_CAST "xml",
|
||||
NULL,
|
||||
NULL
|
||||
};
|
||||
static xmlNsPtr xmlXPathXMLNamespace = &xmlXPathXMLNamespaceStruct;
|
||||
#ifndef LIBXML_THREAD_ENABLED
|
||||
/*
|
||||
* Optimizer is disabled only when threaded apps are detected while
|
||||
* the library ain't compiled for thread safety.
|
||||
*/
|
||||
static int xmlXPathDisableOptimizer = 0;
|
||||
#endif
|
||||
|
||||
static void
|
||||
xmlXPathNodeSetClear(xmlNodeSetPtr set, int hasNsNodes);
|
||||
|
||||
@ -475,114 +583,6 @@ int wrap_cmp( xmlNodePtr x, xmlNodePtr y );
|
||||
#include "timsort.h"
|
||||
#endif /* WITH_TIM_SORT */
|
||||
|
||||
#if defined(LIBXML_XPATH_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED)
|
||||
|
||||
/************************************************************************
|
||||
* *
|
||||
* Floating point stuff *
|
||||
* *
|
||||
************************************************************************/
|
||||
|
||||
double xmlXPathNAN = 0.0;
|
||||
double xmlXPathPINF = 0.0;
|
||||
double xmlXPathNINF = 0.0;
|
||||
|
||||
/**
|
||||
* xmlXPathInit:
|
||||
*
|
||||
* DEPRECATED: Alias for xmlInitParser.
|
||||
*/
|
||||
void
|
||||
xmlXPathInit(void) {
|
||||
xmlInitParser();
|
||||
}
|
||||
|
||||
/**
|
||||
* xmlInitXPathInternal:
|
||||
*
|
||||
* Initialize the XPath environment
|
||||
*/
|
||||
ATTRIBUTE_NO_SANITIZE("float-divide-by-zero")
|
||||
void
|
||||
xmlInitXPathInternal(void) {
|
||||
#if defined(NAN) && defined(INFINITY)
|
||||
xmlXPathNAN = NAN;
|
||||
xmlXPathPINF = INFINITY;
|
||||
xmlXPathNINF = -INFINITY;
|
||||
#else
|
||||
/* MSVC doesn't allow division by zero in constant expressions. */
|
||||
double zero = 0.0;
|
||||
xmlXPathNAN = 0.0 / zero;
|
||||
xmlXPathPINF = 1.0 / zero;
|
||||
xmlXPathNINF = -xmlXPathPINF;
|
||||
#endif
|
||||
}
|
||||
|
||||
/**
|
||||
* xmlXPathIsNaN:
|
||||
* @val: a double value
|
||||
*
|
||||
* Returns 1 if the value is a NaN, 0 otherwise
|
||||
*/
|
||||
int
|
||||
xmlXPathIsNaN(double val) {
|
||||
#ifdef isnan
|
||||
return isnan(val);
|
||||
#else
|
||||
return !(val == val);
|
||||
#endif
|
||||
}
|
||||
|
||||
/**
|
||||
* xmlXPathIsInf:
|
||||
* @val: a double value
|
||||
*
|
||||
* Returns 1 if the value is +Infinite, -1 if -Infinite, 0 otherwise
|
||||
*/
|
||||
int
|
||||
xmlXPathIsInf(double val) {
|
||||
#ifdef isinf
|
||||
return isinf(val) ? (val > 0 ? 1 : -1) : 0;
|
||||
#else
|
||||
if (val >= xmlXPathPINF)
|
||||
return 1;
|
||||
if (val <= -xmlXPathPINF)
|
||||
return -1;
|
||||
return 0;
|
||||
#endif
|
||||
}
|
||||
|
||||
#endif /* SCHEMAS or XPATH */
|
||||
|
||||
#ifdef LIBXML_XPATH_ENABLED
|
||||
|
||||
/*
|
||||
* TODO: when compatibility allows remove all "fake node libxslt" strings
|
||||
* the test should just be name[0] = ' '
|
||||
*/
|
||||
#ifdef DEBUG_XPATH_EXPRESSION
|
||||
#define DEBUG_STEP
|
||||
#define DEBUG_EXPR
|
||||
#define DEBUG_EVAL_COUNTS
|
||||
#endif
|
||||
|
||||
static xmlNs xmlXPathXMLNamespaceStruct = {
|
||||
NULL,
|
||||
XML_NAMESPACE_DECL,
|
||||
XML_XML_NAMESPACE,
|
||||
BAD_CAST "xml",
|
||||
NULL,
|
||||
NULL
|
||||
};
|
||||
static xmlNsPtr xmlXPathXMLNamespace = &xmlXPathXMLNamespaceStruct;
|
||||
#ifndef LIBXML_THREAD_ENABLED
|
||||
/*
|
||||
* Optimizer is disabled only when threaded apps are detected while
|
||||
* the library ain't compiled for thread safety.
|
||||
*/
|
||||
static int xmlXPathDisableOptimizer = 0;
|
||||
#endif
|
||||
|
||||
/************************************************************************
|
||||
* *
|
||||
* Error handling routines *
|
||||
|
Loading…
Reference in New Issue
Block a user