dbertoni    01/08/08 14:46:46

  Modified:    c/src/ICUBridge ICUBridgeCollationCompareFunctor.cpp
                        ICUBridgeCollationCompareFunctor.hpp
  Log:
  Updates for ICU changes.
  
  Revision  Changes    Path
  1.16      +34 -39    xml-xalan/c/src/ICUBridge/ICUBridgeCollationCompareFunctor.cpp
  
  Index: ICUBridgeCollationCompareFunctor.cpp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/src/ICUBridge/ICUBridgeCollationCompareFunctor.cpp,v
  retrieving revision 1.15
  retrieving revision 1.16
  diff -u -r1.15 -r1.16
  --- ICUBridgeCollationCompareFunctor.cpp      2001/07/18 04:38:25     1.15
  +++ ICUBridgeCollationCompareFunctor.cpp      2001/08/08 21:46:46     1.16
  @@ -82,7 +82,11 @@
   {
        UErrorCode      theStatus = U_ZERO_ERROR;
   
  +#if defined(XALAN_ICU_DEFAULT_LOCALE_PROBLEM)
  +     m_defaultCollator = Collator::createInstance(Locale::US, theStatus);
  +#else
        m_defaultCollator = Collator::createInstance(theStatus);
  +#endif
   
        if (theStatus == U_ZERO_ERROR ||
            (theStatus >= U_ERROR_INFO_START && theStatus < U_ERROR_INFO_LIMIT))
  @@ -101,48 +105,51 @@
   
   
   int
  -ICUBridgeCollationCompareFunctor::operator()(
  +ICUBridgeCollationCompareFunctor::doDefaultCompare(
                        const XalanDOMChar*             theLHS,
                        const XalanDOMChar*             theRHS) const
   {
  -     UErrorCode      theStatus = U_ZERO_ERROR;
  -
  -     XalanAutoPtr<Collator>  theCollator(Collator::createInstance(theStatus));
  -
  -     if (theStatus == U_ZERO_ERROR ||
  -         (theStatus >= U_ERROR_INFO_START && theStatus < U_ERROR_INFO_LIMIT))
  +     if (isValid() == false)
        {
  -             assert(theCollator.get() != 0);
  +             return s_defaultFunctor(theLHS, theRHS);
  +     }
  +     else
  +     {
  +             assert(m_defaultCollator != 0);
   
   #if defined(XALAN_USE_WCHAR_CAST_HACK)
  -             return theCollator->compare(
  +             return m_defaultCollator->compare(
                                        (const wchar_t*)theLHS,
                                        length(theLHS),
                                        (const wchar_t*)theRHS,
                                        length(theRHS));
   #else
  -             return theCollator->compare(
  +             return m_defaultCollator->compare(
                                        theLHS,
                                        length(theLHS),
                                        theRHS,
                                        length(theRHS));
   #endif
        }
  -     else
  -     {
  -             return s_defaultFunctor(theLHS, theRHS);
  -     }
   }
   
   
   
  +int
  +ICUBridgeCollationCompareFunctor::operator()(
  +                     const XalanDOMChar*             theLHS,
  +                     const XalanDOMChar*             theRHS) const
  +{
  +     return doDefaultCompare(theLHS, theRHS);
  +}
  +
  +
  +
   inline Collator*
   getCollator(
                        const XalanDOMChar*             theLocale,
                        UErrorCode&                             theStatus)
   {
  -     char    theBuffer[ULOC_FULLNAME_CAPACITY];
  -
        const unsigned int      theLength = length(theLocale);
   
        if (theLength >= ULOC_FULLNAME_CAPACITY)
  @@ -153,13 +160,22 @@
        }
        else
        {
  +#if defined(XALAN_NON_ASCII_PLATFORM)
  +             CharVectorType  theVector;
  +
  +             TranscodeToLocalCodePage(theLocale, theVector, true);
  +
  +             const char* const       theBuffer = c_str(theVector);
  +#else
  +             char    theBuffer[ULOC_FULLNAME_CAPACITY];
  +
                // Since language names must be ASCII, this
                // is the cheapest way to "transcode"...
                for (unsigned int i = 0; i <= theLength; ++i)
                {
                        theBuffer[i] = char(theLocale[i]);
                }
  -
  +#endif
                return Collator::createInstance(
                                        Locale::createFromName(theBuffer),
                                        theStatus);
  @@ -210,26 +226,5 @@
                        const XalanDOMChar*             theLHS,
                        const XalanDOMChar*             theRHS)
   {
  -     if (isValid() == false)
  -     {
  -             return s_defaultFunctor(theLHS, theRHS);
  -     }
  -     else
  -     {
  -             assert(m_defaultCollator != 0);
  -
  -#if defined(XALAN_USE_WCHAR_CAST_HACK)
  -             return m_defaultCollator->compare(
  -                                     (const wchar_t*)theLHS,
  -                                     length(theLHS),
  -                                     (const wchar_t*)theRHS,
  -                                     length(theRHS));
  -#else
  -             return m_defaultCollator->compare(
  -                                     theLHS,
  -                                     length(theLHS),
  -                                     theRHS,
  -                                     length(theRHS));
  -#endif
  -     }
  +     return doDefaultCompare(theLHS, theRHS);
   }
  
  
  
  1.5       +5 -0      xml-xalan/c/src/ICUBridge/ICUBridgeCollationCompareFunctor.hpp
  
  Index: ICUBridgeCollationCompareFunctor.hpp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/src/ICUBridge/ICUBridgeCollationCompareFunctor.hpp,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- ICUBridgeCollationCompareFunctor.hpp      2001/07/18 04:38:25     1.4
  +++ ICUBridgeCollationCompareFunctor.hpp      2001/08/08 21:46:46     1.5
  @@ -105,6 +105,11 @@
   
   private:
   
  +     int
  +     doDefaultCompare(
  +                     const XalanDOMChar*             theLHS,
  +                     const XalanDOMChar*             theRHS) const;
  +
        bool            m_isValid;
   
        Collator*       m_defaultCollator;
  
  
  

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

Reply via email to