dbertoni    01/08/05 18:35:44

  Modified:    c/src/XalanDOM XalanDOMString.cpp XalanDOMString.hpp
  Log:
  Fixed some 64-bit issues.
  
  Revision  Changes    Path
  1.13      +57 -81    xml-xalan/c/src/XalanDOM/XalanDOMString.cpp
  
  Index: XalanDOMString.cpp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/src/XalanDOM/XalanDOMString.cpp,v
  retrieving revision 1.12
  retrieving revision 1.13
  diff -u -r1.12 -r1.13
  --- XalanDOMString.cpp        2001/07/27 05:30:55     1.12
  +++ XalanDOMString.cpp        2001/08/06 01:35:44     1.13
  @@ -76,10 +76,8 @@
   
   
   XalanDOMString::XalanDOMString() :
  -     m_data()
  -#if defined(XALAN_DOMSTRING_CACHE_SIZE)
  -     , m_size(0)
  -#endif
  +     m_data(),
  +     m_size(0)
   {
   }
   
  @@ -89,10 +87,8 @@
                        const XalanDOMString&   theSource,
                        size_type                               
theStartPosition,
                        size_type                               theCount) :
  -     m_data()
  -#if defined(XALAN_DOMSTRING_CACHE_SIZE)
  -     , m_size(0)
  -#endif
  +     m_data(),
  +     m_size(0)
   {
        if (theSource.length() != 0)
        {
  @@ -105,10 +101,8 @@
   XalanDOMString::XalanDOMString(
                        const XalanDOMChar*             theString,
                        size_type                               theCount) :
  -     m_data()
  -#if defined(XALAN_DOMSTRING_CACHE_SIZE)
  -     , m_size(0)
  -#endif
  +     m_data(),
  +     m_size(0)
   {
        assert(theString != 0);
   
  @@ -123,10 +117,8 @@
   XalanDOMString::XalanDOMString(
                        const char*             theString,
                        size_type               theCount) :
  -     m_data()
  -#if defined(XALAN_DOMSTRING_CACHE_SIZE)
  -     , m_size(0)
  -#endif
  +     m_data(),
  +     m_size(0)
   {
        assert(theString != 0);
   
  @@ -143,21 +135,17 @@
   XalanDOMString::XalanDOMString(
                        size_type               theCount,
                        XalanDOMChar    theChar) :
  -     m_data()
  -#if defined(XALAN_DOMSTRING_CACHE_SIZE)
  -     , m_size(0)
  -#endif
  +     m_data(),
  +     m_size(0)
   {
        if (theCount != 0)
        {
  -             XalanDOMCharVectorType(theCount + 1, theChar).swap(m_data);
  +             XalanDOMCharVectorType(real_size_type(theCount) + 1, 
theChar).swap(m_data);
   
                // Null-terminate it...
                m_data.back() = 0;
   
  -#if defined(XALAN_DOMSTRING_CACHE_SIZE)
                m_size = theCount;
  -#endif
        }
   
        invariants();
  @@ -180,21 +168,19 @@
                {
                        // If the string is of 0 length, resize but add an
                        // extra byte for the terminating byte.
  -                     m_data.resize(theCount + 1, theChar);
  +                     m_data.resize(real_size_type(theCount) + 1, theChar);
                }
                else
                {
                        // If the string is not of 0 length, resize but
                        // put a copy of theChar where the terminating
                        // byte used to be.
  -                     m_data.resize(theCount, theChar);
  +                     m_data.resize(real_size_type(theCount), theChar);
   
  -                     m_data[theOldSize] = theChar;
  +                     m_data[real_size_type(theOldSize)] = theChar;
                }
   
  -#if defined(XALAN_DOMSTRING_CACHE_SIZE)
                m_size = theCount;
  -#endif
   
                // Terminate...
                m_data.back() = 0;
  @@ -219,9 +205,7 @@
        {
                m_data.erase(m_data.begin(), m_data.end());
   
  -#if defined(XALAN_DOMSTRING_CACHE_SIZE)
                m_size = 0;
  -#endif
        }
        else
        {
  @@ -229,8 +213,8 @@
   
                m_data.erase(i, i + (theActualCount));
   
  -#if defined(XALAN_DOMSTRING_CACHE_SIZE)
  -             const size_type         theNewSize = m_data.size();
  +             const size_type         theNewSize = size_type(m_data.size());
  +             assert(real_size_type(theNewSize) == m_data.size());
   
                if (theNewSize < 2)
                {
  @@ -240,7 +224,6 @@
                {
                        m_size = theNewSize - 1;
                }
  -#endif
        }
   
        invariants();
  @@ -280,15 +263,13 @@
        {
                if (m_data.size() == 0)
                {
  -                     m_data.reserve(theLength + 1);
  +                     m_data.reserve(real_size_type(theLength) + 1);
   
                        m_data.insert(m_data.end(), theString, theString + 
theLength);
   
                        m_data.push_back(0);
   
  -#if defined(XALAN_DOMSTRING_CACHE_SIZE)
                        m_size = theLength;
  -#endif
   
                        assert(length() == theLength);
                }
  @@ -296,9 +277,7 @@
                {
                        m_data.insert(getBackInsertIterator(), theString, 
theString + theLength);
   
  -#if defined(XALAN_DOMSTRING_CACHE_SIZE)
                        m_size += theCount;
  -#endif
                }
        }
   
  @@ -357,12 +336,12 @@
   
                        doTranscode(theString, theLength, theTempVector);
   
  -                     append(&*theTempVector.begin(), theTempVector.size());
  +                     append(&*theTempVector.begin(), 
size_type(theTempVector.size()));
                }
   
  -#if defined(XALAN_DOMSTRING_CACHE_SIZE)
  -             m_size = m_data.size() - 1;
  -#endif
  +             m_size = size_type(m_data.size()) - 1;
  +
  +             assert(real_size_type(m_size) == m_data.size() - 1);
        }
   
        invariants();
  @@ -380,23 +359,19 @@
   
        if (m_data.size() == 0)
        {
  -             m_data.insert(m_data.end(), theCount + 1, theChar);
  +             m_data.insert(m_data.end(), real_size_type(theCount) + 1, 
theChar);
   
                m_data.back() = 0;
   
  -#if defined(XALAN_DOMSTRING_CACHE_SIZE)
                m_size = theCount;
  -#endif
   
                assert(length() == theCount);
        }
        else
        {
  -             m_data.insert(getBackInsertIterator(), theCount, theChar);
  +             m_data.insert(getBackInsertIterator(), 
real_size_type(theCount), theChar);
   
  -#if defined(XALAN_DOMSTRING_CACHE_SIZE)
                m_size += theCount;
  -#endif
        }
   
        invariants();
  @@ -416,9 +391,7 @@
   
        m_data.insert(getIteratorForPosition(thePosition), theString, theString 
+ theCount);
   
  -#if defined(XALAN_DOMSTRING_CACHE_SIZE)
        m_size += theCount;
  -#endif
   
        invariants();
   
  @@ -435,11 +408,9 @@
   {
        invariants();
   
  -     m_data.insert(getIteratorForPosition(thePosition), theCount, theChar);
  +     m_data.insert(getIteratorForPosition(thePosition), 
real_size_type(theCount), theChar);
   
  -#if defined(XALAN_DOMSTRING_CACHE_SIZE)
        m_size += theCount;
  -#endif
   
        invariants();
   
  @@ -457,9 +428,7 @@
   
        m_data.insert(thePosition, theChar);
   
  -#if defined(XALAN_DOMSTRING_CACHE_SIZE)
        ++m_size;
  -#endif
   
        invariants();
   
  @@ -476,11 +445,9 @@
   {
        invariants();
   
  -     m_data.insert(thePosition, theCount, theChar);
  +     m_data.insert(thePosition, real_size_type(theCount), theChar);
   
  -#if defined(XALAN_DOMSTRING_CACHE_SIZE)
        m_size += theCount;
  -#endif
   
        invariants();
   }
  @@ -497,10 +464,10 @@
   
        m_data.insert(theInsertPosition, theFirstPosition, theLastPosition);
   
  -#if defined(XALAN_DOMSTRING_CACHE_SIZE)
  -     m_size = m_data.size() - 1;
  -#endif
  +     m_size = size_type(m_data.size()) - 1;
   
  +     assert(real_size_type(m_size) == m_data.size() - 1);
  +
        invariants();
   }
   
  @@ -619,7 +586,7 @@
                theStringPointer++;
        }
   
  -     return theStringPointer - theString;
  +     return XalanDOMString::size_type(theStringPointer - theString);
   }
   
   
  @@ -695,8 +662,10 @@
   XalanDOMString::length(const char*   theString)
   {
        assert(theString != 0);
  +
  +     assert(strlen(theString) < npos);
   
  -     return strlen(theString);
  +     return size_type(strlen(theString));
   }
   
   
  @@ -803,12 +772,14 @@
   
   static bool
   doTranscodeToLocalCodePage(
  -                     const XalanDOMChar*             theSourceString,
  -                     unsigned int                    theSourceStringLength,
  -                     bool                                    
theSourceStringIsNullTerminated,
  -                     CharVectorType&                 theTargetVector,
  -                     bool                                    terminate)
  +                     const XalanDOMChar*                     theSourceString,
  +                     XalanDOMString::size_type       theSourceStringLength,
  +                     bool                                            
theSourceStringIsNullTerminated,
  +                     CharVectorType&                         theTargetVector,
  +                     bool                                            
terminate)
   {
  +     typedef XalanDOMString::real_size_type  real_size_type;
  +
       // Short circuit if it's a null pointer, or of length 0.
       if (!theSourceString || (!theSourceString[0]))
       {
  @@ -858,14 +829,14 @@
                        theSourceStringLength = length(theSourceString);
                }
   
  -             theTempSourceJanitor.reset(new wchar_t[theSourceStringLength + 
1]);
  +             theTempSourceJanitor.reset(new 
wchar_t[real_size_type(theSourceStringLength) + 1]);
   
  -             for (unsigned int index = 0; index < theSourceStringLength; 
++index)
  +             for (size_t     index = 0; index < 
size_t(theSourceStringLength); ++index)
                {
                        theTempSourceJanitor[index] = 
wchar_t(theSourceString[index]);
                }
   
  -             theTempSourceJanitor[theSourceStringLength] = 0;
  +             theTempSourceJanitor[size_t(theSourceStringLength)] = 0;
   
                theTempSource = theTempSourceJanitor.get();
        }
  @@ -905,10 +876,10 @@
   
   XALAN_DOM_EXPORT_FUNCTION(bool)
   TranscodeToLocalCodePage(
  -                     const XalanDOMChar*             theSourceString,
  -                     unsigned int                    theSourceStringLength,
  -                     CharVectorType&                 theTargetVector,
  -                     bool                                    terminate)
  +                     const XalanDOMChar*                     theSourceString,
  +                     XalanDOMString::size_type       theSourceStringLength,
  +                     CharVectorType&                         theTargetVector,
  +                     bool                                            
terminate)
   {
        return doTranscodeToLocalCodePage(theSourceString, 
theSourceStringLength, false, theTargetVector, terminate);
   }
  @@ -929,11 +900,13 @@
   static bool
   doTranscodeFromLocalCodePage(
                        const char*                                     
theSourceString,
  -                     unsigned int                            
theSourceStringLength,
  +                     XalanDOMString::size_type       theSourceStringLength,
                        bool                                            
theSourceStringIsNullTerminated,
                        XalanDOMCharVectorType&         theTargetVector,
                        bool                                            
terminate)
   {
  +     typedef XalanDOMString::size_type       size_type;
  +
       // Short circuit if it's a null pointer, or of length 0.
       if (!theSourceString || (!theSourceString[0]))
       {
  @@ -964,11 +937,14 @@
   #else
        if (theSourceStringIsNullTerminated == true)
        {
  -             theSourceStringLength = strlen(theSourceString);
  +             assert(strlen(theSourceString) < XalanDOMString::npos);
  +
  +             theSourceStringLength = size_type(strlen(theSourceString));
        }
   
       // See how many chars we need to transcode.
  -     const size_t    theTargetLength = ::mbstowcs(0, theSourceString, 
theSourceStringLength);
  +     const size_t    theTargetLength =
  +                     ::mbstowcs(0, theSourceString, 
size_t(theSourceStringLength));
   
        if (theTargetLength == size_t(-1))
        {
  @@ -990,7 +966,7 @@
                wchar_t* const  theTargetPointer = &theTargetVector[0];
   #endif
   
  -             if (mbstowcs(theTargetPointer, theSourceString, 
theSourceStringLength) == size_t(-1))
  +             if (mbstowcs(theTargetPointer, theSourceString, 
size_t(theSourceStringLength)) == size_t(-1))
                {
                        return false;
                }
  @@ -1003,7 +979,7 @@
   
                        for(WideCharVectorType::size_type i = 0; i < 
theTempSize; ++i)
                        {
  -                             
theTargetVector.push_back(WideCharVectorType::value_type(theTempResult[i]));
  +                             theTargetVector.push_back(theTempResult[i]);
                        }
   #endif
   
  @@ -1023,7 +999,7 @@
   XALAN_DOM_EXPORT_FUNCTION(bool)
   TranscodeFromLocalCodePage(
                        const char*                                     
theSourceString,
  -                     unsigned int                            
theSourceStringLength,
  +                     XalanDOMString::size_type       theSourceStringLength,
                        XalanDOMCharVectorType&         theTargetVector,
                        bool                                            
terminate)
   {
  
  
  
  1.19      +25 -42    xml-xalan/c/src/XalanDOM/XalanDOMString.hpp
  
  Index: XalanDOMString.hpp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/src/XalanDOM/XalanDOMString.hpp,v
  retrieving revision 1.18
  retrieving revision 1.19
  diff -u -r1.18 -r1.19
  --- XalanDOMString.hpp        2001/07/27 05:31:17     1.18
  +++ XalanDOMString.hpp        2001/08/06 01:35:44     1.19
  @@ -76,10 +76,6 @@
   
   
   
  -#define XALAN_DOMSTRING_CACHE_SIZE
  -
  -
  -
   #include <cassert>
   
   
  @@ -104,8 +100,9 @@
   
        // We're stuck with 32-bit lengths because of the DOMs IDL
        // bindings.  Ideally, we'ed like to re-visit this in the
  -     // future.
  +     // future.  See typedef below of real_size_type.
        typedef unsigned int                                                    
                size_type;
  +     typedef XalanDOMCharVectorType::size_type                               
real_size_type;
   
        typedef XalanDOMCharVectorType::iterator                                
iterator;
        typedef XalanDOMCharVectorType::const_iterator                  
const_iterator;
  @@ -113,7 +110,7 @@
        typedef XalanDOMCharVectorType::const_reverse_iterator  
const_reverse_iterator;
   
   #if defined(XALAN_INLINE_INITIALIZATION)
  -     static const size_type  npos = size_type(-1);
  +     static const size_type  npos = ~0u;
   #else
        enum { npos = -1 };
   #endif
  @@ -205,11 +202,7 @@
        {
                invariants();
   
  -#if defined(XALAN_DOMSTRING_CACHE_SIZE)
                return m_size;
  -#else
  -             return m_data.empty() == true ? 0 : m_data.size() - 1;
  -#endif
        }
   
        size_type
  @@ -245,8 +238,10 @@
        capacity() const
        {
                invariants();
  +
  +             assert(real_size_type(size_type(m_data.capacity())) == 
m_data.capacity());
   
  -             return m_data.capacity() - 1;
  +             return size_type(m_data.capacity()) - 1;
        }
   
        void
  @@ -254,7 +249,7 @@
        {
                invariants();
   
  -             m_data.reserve(theCount + 1);
  +             m_data.reserve(real_size_type(theCount) + 1);
        }
   
        void
  @@ -264,9 +259,7 @@
   
                m_data.erase(m_data.begin(), m_data.end());
   
  -#if defined(XALAN_DOMSTRING_CACHE_SIZE)
                m_size = 0;
  -#endif
   
                invariants();
        }
  @@ -281,11 +274,7 @@
        {
                invariants();
   
  -#if defined(XALAN_DOMSTRING_CACHE_SIZE)
                return m_size == 0 ? true : false;
  -#else
  -             return m_data.size() < 2 ? true : false;
  -#endif
        }
   
        const_reference
  @@ -293,7 +282,7 @@
        {
                invariants();
   
  -             return m_data[theIndex];
  +             return m_data[real_size_type(theIndex)];
        }
   
        reference
  @@ -301,7 +290,7 @@
        {
                invariants();
   
  -             return m_data[theIndex];
  +             return m_data[real_size_type(theIndex)];
        }
   
   #if 0
  @@ -312,7 +301,7 @@
        {
                invariants();
   
  -             return m_data.at(theIndex);
  +             return m_data.at(real_size_type(theIndex));
        }
   
        reference
  @@ -320,7 +309,7 @@
        {
                invariants();
   
  -             return m_data.at(theIndex);
  +             return m_data.at(real_size_type(theIndex));
        }
   #endif
   
  @@ -351,13 +340,11 @@
   
                m_data.swap(theOther.m_data);
   
  -#if defined(XALAN_DOMSTRING_CACHE_SIZE)
   #if defined(XALAN_NO_NAMESPACES)
                ::swap(m_size, theOther.m_size);
   #else
                std::swap(m_size, theOther.m_size);
   #endif
  -#endif
        }
   
        XalanDOMString&
  @@ -461,9 +448,7 @@
                {
                        m_data = theSource.m_data;
   
  -#if defined(XALAN_DOMSTRING_CACHE_SIZE)
                        m_size = theSource.m_size;
  -#endif
                }
   
                invariants();
  @@ -774,11 +759,7 @@
        invariants() const
        {
   #if !defined(NDEBUG)
  -
  -#if defined(XALAN_DOMSTRING_CACHE_SIZE)
                assert((m_data.size() == 0 && m_size == 0) || m_size == 
m_data.size() - 1);
  -#endif
  -
                assert(m_data.size() == 0 || m_data.back() == 0);
   #endif
        }
  @@ -824,9 +805,7 @@
   
        XalanDOMCharVectorType          m_data;
   
  -#if defined(XALAN_DOMSTRING_CACHE_SIZE)
  -     unsigned long                           m_size;
  -#endif
  +     size_type                                       m_size;
   
        static const XalanDOMChar       s_empty;
   };
  @@ -976,10 +955,10 @@
    */
   XALAN_DOM_EXPORT_FUNCTION(bool)
   TranscodeToLocalCodePage(
  -                     const XalanDOMChar*             theSourceString,
  -                     unsigned int                    theSourceStringLength,
  -                     CharVectorType&                 targetVector,
  -                     bool                                    terminate = 
false);
  +                     const XalanDOMChar*                     theSourceString,
  +                     XalanDOMString::size_type       theSourceStringLength,
  +                     CharVectorType&                         targetVector,
  +                     bool                                            
terminate = false);
   
   
   
  @@ -1071,8 +1050,8 @@
    */
   inline const XalanDOMString
   TranscodeFromLocalCodePage(
  -                     const char*             theSourceString,
  -                     unsigned int    theSourceStringLength = unsigned(-1))
  +                     const char*                                     
theSourceString,
  +                     XalanDOMString::size_type       theSourceStringLength = 
XalanDOMString::npos)
   {
        return XalanDOMString(theSourceString, theSourceStringLength);
   }
  @@ -1093,7 +1072,7 @@
   XALAN_DOM_EXPORT_FUNCTION(bool)
   TranscodeFromLocalCodePage(
                        const char*                                     
theSourceString,
  -                     unsigned int                            
theSourceStringLength,
  +                     XalanDOMString::size_type       theSourceStringLength,
                        XalanDOMCharVectorType&         theTargetVector,
                        bool                                            
terminate = false);
   
  @@ -1127,15 +1106,19 @@
   inline const XalanDOMString
   TranscodeFromLocalCodePage(const CharVectorType&     theSourceString)
   {
  +     typedef XalanDOMString::size_type               size_type;
  +     typedef XalanDOMString::real_size_type  real_size_type;
  +
        const CharVectorType::size_type         theSize = 
theSourceString.size();
  +     assert(real_size_type(size_type(theSize)) == theSize);
   
        if (theSourceString[theSize - 1] == CharVectorType::value_type(0))
        {
  -             return TranscodeFromLocalCodePage(&*theSourceString.begin(), 
theSize - 1);
  +             return TranscodeFromLocalCodePage(&*theSourceString.begin(), 
size_type(theSize) - 1);
        }
        else
        {
  -             return TranscodeFromLocalCodePage(&*theSourceString.begin(), 
theSize);
  +             return TranscodeFromLocalCodePage(&*theSourceString.begin(), 
size_type(theSize));
        }
   }
   
  
  
  

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

Reply via email to