dbertoni    2004/08/12 14:37:26

  Modified:    c/src/xalanc/PlatformSupport XalanDOMStringAllocator.cpp
                        XalanDOMStringAllocator.hpp XalanDOMStringCache.cpp
                        XalanDOMStringCache.hpp
  Log:
  Removed use of deque.
  
  Revision  Changes    Path
  1.5       +14 -0     
xml-xalan/c/src/xalanc/PlatformSupport/XalanDOMStringAllocator.cpp
  
  Index: XalanDOMStringAllocator.cpp
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/c/src/xalanc/PlatformSupport/XalanDOMStringAllocator.cpp,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- XalanDOMStringAllocator.cpp       26 Feb 2004 22:34:18 -0000      1.4
  +++ XalanDOMStringAllocator.cpp       12 Aug 2004 21:37:26 -0000      1.5
  @@ -37,6 +37,20 @@
   
   
   XalanDOMStringAllocator::data_type*
  +XalanDOMStringAllocator::create()
  +{
  +     data_type* const        theBlock = m_allocator.allocateBlock();
  +     assert(theBlock != 0);
  +
  +     data_type* const        theResult = new(theBlock) data_type;
  +
  +     m_allocator.commitAllocation(theBlock);
  +
  +     return theResult;
  +}
  +
  +
  +XalanDOMStringAllocator::data_type*
   XalanDOMStringAllocator::create(
                        const char*                             theString,
                        data_type_size_type             theCount)
  
  
  
  1.5       +10 -2     
xml-xalan/c/src/xalanc/PlatformSupport/XalanDOMStringAllocator.hpp
  
  Index: XalanDOMStringAllocator.hpp
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/c/src/xalanc/PlatformSupport/XalanDOMStringAllocator.hpp,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- XalanDOMStringAllocator.hpp       26 Feb 2004 22:34:18 -0000      1.4
  +++ XalanDOMStringAllocator.hpp       12 Aug 2004 21:37:26 -0000      1.5
  @@ -69,6 +69,14 @@
        /**
         * Create a XalanDOMString object.
         * 
  +      * @return pointer to the new instance
  +      */
  +     data_type*
  +     create();
  +
  +     /**
  +      * Create a XalanDOMString object.
  +      * 
         * @param theString A pointer to a character string
         * @param theCount The number of characters in the string, or npos if 
the string is null-terminated.
         *
  @@ -77,11 +85,11 @@
        data_type*
        create(
                        const char*                             theString,
  -#if defined(_MSC_VER)
  +#if defined(_MSC_VER) && (_MSC_VER <= 1300)
                        // $$$ ToDo: Some strange bug in MSVC++ complains when 
using data_type::npos here.
                        data_type_size_type             theCount = 
data_type_size_type(-1));
   #else
  -     data_type_size_type             theCount = 
data_type_size_type(data_type::npos));
  +             data_type_size_type             theCount = 
data_type_size_type(data_type::npos));
   #endif
   
        /**
  
  
  
  1.5       +18 -18    
xml-xalan/c/src/xalanc/PlatformSupport/XalanDOMStringCache.cpp
  
  Index: XalanDOMStringCache.cpp
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/c/src/xalanc/PlatformSupport/XalanDOMStringCache.cpp,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- XalanDOMStringCache.cpp   26 Feb 2004 22:34:18 -0000      1.4
  +++ XalanDOMStringCache.cpp   12 Aug 2004 21:37:26 -0000      1.5
  @@ -32,9 +32,10 @@
   
   
   XalanDOMStringCache::XalanDOMStringCache(unsigned int        theMaximumSize) 
:
  +    m_busyList(),
        m_availableList(),
  -     m_busyList(),
  -     m_maximumSize(theMaximumSize)
  +     m_maximumSize(theMaximumSize),
  +    m_allocator(XalanDOMStringReusableAllocator::eDefaultBlockSize)
   {
   }
   
  @@ -52,16 +53,23 @@
   {
        if (m_availableList.empty() == true)
        {
  -             m_busyList.push_back(new XalanDOMString());
  +        XalanDOMString&     theString = m_allocator.create();
  +
  +        m_busyList.push_back(&theString);
  +
  +        return theString;
        }
        else
        {
  -             m_busyList.push_back(m_availableList.back());
  +        XalanDOMString* const   theString = m_availableList.back();
  +        assert(theString != 0);
   
                m_availableList.pop_back();
  -     }
   
  -     return *m_busyList.back();
  +        m_busyList.push_back(theString);
  +
  +        return *theString;
  +     }
   }
   
   
  @@ -84,7 +92,7 @@
        {
                if (m_availableList.size() > m_maximumSize)
                {
  -                     delete *i;
  +                     m_allocator.destroy(theString);
                }
                else
                {
  @@ -104,19 +112,11 @@
   void
   XalanDOMStringCache::clear()
   {
  -     XALAN_USING_STD(for_each)
  -
  -     for_each(m_busyList.begin(),
  -                      m_busyList.end(),
  -                      DeleteFunctor<XalanDOMString>());
  -
        m_busyList.clear();
   
  -     for_each(m_availableList.begin(),
  -                      m_availableList.end(),
  -                      DeleteFunctor<XalanDOMString>());
  -
        m_availableList.clear();
  +
  +    m_allocator.reset();
   }
   
   
  @@ -133,7 +133,7 @@
   
                if (theSize > m_maximumSize)
                {
  -                     delete m_busyList.back();
  +                     m_allocator.destroy(*m_busyList.back());
                }
                else
                {
  
  
  
  1.6       +9 -7      
xml-xalan/c/src/xalanc/PlatformSupport/XalanDOMStringCache.hpp
  
  Index: XalanDOMStringCache.hpp
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/c/src/xalanc/PlatformSupport/XalanDOMStringCache.hpp,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- XalanDOMStringCache.hpp   31 Jul 2004 06:05:04 -0000      1.5
  +++ XalanDOMStringCache.hpp   12 Aug 2004 21:37:26 -0000      1.6
  @@ -23,15 +23,15 @@
   
   
   
  -#include <deque>
  +#include <xalanc/Include/XalanVector.hpp>
   
   
   
  -#include <xalanc/Include/XalanVector.hpp>
  +#include <xalanc/XalanDOM/XalanDOMString.hpp>
   
   
   
  -#include <xalanc/XalanDOM/XalanDOMString.hpp>
  +#include <xalanc/PlatformSupport/XalanDOMStringReusableAllocator.hpp>
   
   
   
  @@ -45,7 +45,7 @@
   
        enum { eDefaultMaximumSize = 100 };
   
  -     typedef XalanVector<XalanDOMString*>                    StringListType;
  +     typedef XalanVector<XalanDOMString*>    StringListType;
   
        explicit
        XalanDOMStringCache(unsigned int        theMaximumSize = 
eDefaultMaximumSize);
  @@ -127,14 +127,16 @@
        /**
         * A list to hold the strings that are available...
         */
  -     StringListType  m_availableList;
  +     StringListType                      m_availableList;
   
        /**
         * A list to hold the strings that are busy...
         */
  -     StringListType  m_busyList;
  +     StringListType                      m_busyList;
  +
  +     unsigned int                        m_maximumSize;
   
  -     unsigned int    m_maximumSize;
  +    XalanDOMStringReusableAllocator     m_allocator;
   };
   
   
  
  
  

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

Reply via email to