You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@xalan.apache.org by db...@apache.org on 2001/02/01 19:32:08 UTC

cvs commit: xml-xalan/c/src/XPath FunctionRound.cpp FunctionRound.hpp FunctionSubstring.cpp

dbertoni    01/02/01 10:32:08

  Modified:    c/src/XPath FunctionRound.cpp FunctionRound.hpp
                        FunctionSubstring.cpp
  Log:
  Moved rounding function to PlatformSupport/DoubleSupport.
  
  Revision  Changes    Path
  1.6       +2 -51     xml-xalan/c/src/XPath/FunctionRound.cpp
  
  Index: FunctionRound.cpp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/src/XPath/FunctionRound.cpp,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- FunctionRound.cpp	2000/12/06 21:00:46	1.5
  +++ FunctionRound.cpp	2001/02/01 18:32:04	1.6
  @@ -98,8 +98,7 @@
   {
   	assert(arg1.null() == false);	
   
  -	return executionContext.getXObjectFactory().createNumber(
  -		getRoundedValue(arg1->num()));
  +	return executionContext.getXObjectFactory().createNumber(DoubleSupport::round(arg1->num()));
   }
   
   
  @@ -159,56 +158,8 @@
   
   
   
  -double
  -FunctionRound::getRoundedValue(double	theValue)
  -{
  -	if (DoubleSupport::isNaN(theValue))
  -	{
  -		return DoubleSupport::getNaN();
  -	}
  -	else if (DoubleSupport::isPositiveInfinity(theValue))
  -	{
  -		return DoubleSupport::getPositiveInfinity();
  -	}
  -	if (DoubleSupport::isNegativeInfinity(theValue))
  -	{
  -		return DoubleSupport::getNegativeInfinity();
  -	}
  -	else if (theValue == 0)
  -	{
  -		return 0.0;
  -	}
  -	else if (theValue > 0)
  -	{
  -		return long(theValue + 0.5);
  -	}
  -	else
  -	{
  -		// Negative numbers are a special case.  Any time we
  -		// have -0.5 as the fractional part, we have to
  -		// round up (toward 0), rather than down.
  -		double			intPart = 0;
  -
  -		const double	fracPart = modf(theValue, &intPart);
  -
  -		if (fracPart == -0.5)
  -		{
  -			// special case -- we have have to round toward 0...
  -			return long(theValue + 0.5);
  -		}
  -		else
  -		{
  -			return long(theValue - 0.5);
  -		}
  -	}
  -}
  -
  -
  -
   const XalanDOMString
   FunctionRound::getError() const
   {
  -	return XALAN_STATIC_UCODE_STRING(
  -		"The round() function takes one argument!");
  +	return XALAN_STATIC_UCODE_STRING("The round() function takes one argument!");
   }
  -
  
  
  
  1.10      +0 -3      xml-xalan/c/src/XPath/FunctionRound.hpp
  
  Index: FunctionRound.hpp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/src/XPath/FunctionRound.hpp,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- FunctionRound.hpp	2000/12/06 21:00:47	1.9
  +++ FunctionRound.hpp	2001/02/01 18:32:05	1.10
  @@ -127,9 +127,6 @@
   #endif
   	clone() const;
   
  -	static double
  -	getRoundedValue(double	theValue);
  -
   private:
   
   	virtual const XalanDOMString
  
  
  
  1.12      +7 -3      xml-xalan/c/src/XPath/FunctionSubstring.cpp
  
  Index: FunctionSubstring.cpp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/src/XPath/FunctionSubstring.cpp,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- FunctionSubstring.cpp	2001/01/25 17:14:14	1.11
  +++ FunctionSubstring.cpp	2001/02/01 18:32:06	1.12
  @@ -58,6 +58,10 @@
   
   
   
  +#include <PlatformSupport/DoubleSupport.hpp>
  +
  +
  +
   #include "XObjectFactory.hpp"
   
   
  @@ -89,7 +93,7 @@
   	}
   	else
   	{
  -		return unsigned(FunctionRound::getRoundedValue(theSecondArgValue)) - 1;
  +		return unsigned(DoubleSupport::round(theSecondArgValue)) - 1;
   	}
   }
   
  @@ -139,7 +143,7 @@
   	else
   	{
   		const double	theRoundedValue =
  -			FunctionRound::getRoundedValue(theSecondArgValue + arg3->num());
  +			DoubleSupport::round(theSecondArgValue + arg3->num());
   
   		// If there's overflow, then we should return the length of the string + 1.
   		if (DoubleSupport::isPositiveInfinity(theRoundedValue) == true)
  @@ -223,7 +227,7 @@
   	{
   		// Get the value of the second argument...
   		const double	theSecondArgValue =
  -			FunctionRound::getRoundedValue(arg2->num());
  +			DoubleSupport::round(arg2->num());
   
   		// XPath indexes from 1, so this is the first XPath index....
   		const unsigned int	theStartIndex = getStartIndex(theSecondArgValue);