peiyongz    2004/08/11 09:48:24

  Modified:    c/src/xercesc/util XMLBigInteger.hpp XMLBigInteger.cpp
  Log:
  String version compareValue
  
  Revision  Changes    Path
  1.13      +7 -1      xml-xerces/c/src/xercesc/util/XMLBigInteger.hpp
  
  Index: XMLBigInteger.hpp
  ===================================================================
  RCS file: /home/cvs/xml-xerces/c/src/xercesc/util/XMLBigInteger.hpp,v
  retrieving revision 1.12
  retrieving revision 1.13
  diff -u -r1.12 -r1.13
  --- XMLBigInteger.hpp 29 Jan 2004 11:48:46 -0000      1.12
  +++ XMLBigInteger.hpp 11 Aug 2004 16:48:24 -0000      1.13
  @@ -108,6 +108,12 @@
                                , MemoryManager* const manager = 
XMLPlatformUtils::fgMemoryManager);
   
   
  +    static int  compareValues(const XMLCh*         const lString
  +                            , const int&                 lSign
  +                            , const XMLCh*         const rString
  +                            , const int&                 rSign
  +                            ,       MemoryManager* const manager = 
XMLPlatformUtils::fgMemoryManager);
  +
       void        multiply(const unsigned int byteToShift);
   
       void        divide(const unsigned int byteToShift);
  
  
  
  1.11      +55 -0     xml-xerces/c/src/xercesc/util/XMLBigInteger.cpp
  
  Index: XMLBigInteger.cpp
  ===================================================================
  RCS file: /home/cvs/xml-xerces/c/src/xercesc/util/XMLBigInteger.cpp,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- XMLBigInteger.cpp 23 Dec 2003 21:48:14 -0000      1.10
  +++ XMLBigInteger.cpp 11 Aug 2004 16:48:24 -0000      1.11
  @@ -56,6 +56,9 @@
   
   /*
    * $Log$
  + * Revision 1.11  2004/08/11 16:48:24  peiyongz
  + * String version compareValue
  + *
    * Revision 1.10  2003/12/23 21:48:14  peiyongz
    * Absorb exception thrown in getCanonicalRepresentation and return 0
    *
  @@ -353,6 +356,58 @@
       // we need to convert it to 1, 0, and -1
       //
       int retVal = XMLString::compareString(lValue->fMagnitude, rValue->fMagnitude);
  +
  +    if ( retVal > 0 )
  +    {
  +        return ( lSign > 0 ? 1 : -1 );
  +    }
  +    else if ( retVal < 0 )
  +    {
  +        return ( lSign > 0 ? -1 : 1 );
  +    }
  +    else
  +        return 0;
  +
  +}
  +
  +int XMLBigInteger::compareValues(const XMLCh*         const lString
  +                               , const int&                 lSign
  +                               , const XMLCh*         const rString
  +                               , const int&                 rSign
  +                               ,       MemoryManager* const manager)
  +{
  +    if ((!lString) || (!rString) )
  +        ThrowXMLwithMemMgr(NumberFormatException, XMLExcepts::XMLNUM_null_ptr, 
manager);
  +
  +    //
  +    // different sign
  +    //
  +    if (lSign != rSign)
  +        return(lSign > rSign ? 1 : -1);
  +
  +    //
  +    // same sign
  +    //
  +    if (lSign == 0)    // optimization
  +        return 0;
  +
  +    int lStrLen = XMLString::stringLen(lString);
  +    int rStrLen = XMLString::stringLen(rString);
  +
  +    //
  +    // different length
  +    //
  +    if (lStrLen > rStrLen)
  +        return ( lSign > 0 ? 1 : -1 );
  +    else if (lStrLen < rStrLen)
  +        return ( lSign > 0 ? -1 : 1 );
  +
  +    //
  +    // same length
  +    // XMLString::compareString() return > 0, 0 and <0
  +    // we need to convert it to 1, 0, and -1
  +    //
  +    int retVal = XMLString::compareString(lString, rString);
   
       if ( retVal > 0 )
       {
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to