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 2004/08/12 23:37:26 UTC

cvs commit: xml-xalan/c/src/xalanc/PlatformSupport XalanDOMStringAllocator.cpp XalanDOMStringAllocator.hpp XalanDOMStringCache.cpp XalanDOMStringCache.hpp

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: xalan-cvs-unsubscribe@xml.apache.org
For additional commands, e-mail: xalan-cvs-help@xml.apache.org