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 2002/10/11 03:57:24 UTC

cvs commit: xml-xalan/c/src/XPath FunctionConcat.cpp

dbertoni    2002/10/10 18:57:24

  Modified:    c/src/XPath FunctionConcat.cpp
  Log:
  Don't cast to strings any more, or reserve space in the result string.
  
  Revision  Changes    Path
  1.13      +9 -37     xml-xalan/c/src/XPath/FunctionConcat.cpp
  
  Index: FunctionConcat.cpp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/src/XPath/FunctionConcat.cpp,v
  retrieving revision 1.12
  retrieving revision 1.13
  diff -u -r1.12 -r1.13
  --- FunctionConcat.cpp	26 Sep 2001 20:58:46 -0000	1.12
  +++ FunctionConcat.cpp	11 Oct 2002 01:57:24 -0000	1.13
  @@ -86,15 +86,10 @@
   
   	XPathExecutionContext::GetAndReleaseCachedString	theResult(executionContext);
   
  -	XalanDOMString&			theString = theResult.get();
  -
  -	const XalanDOMString&	theArg1 = arg1->str();
  -	const XalanDOMString&	theArg2 = arg2->str();
  -
  -	reserve(theString, length(theArg1) + length(theArg2) + 1);
  +	XalanDOMString&		theString = theResult.get();
   
  -	append(theString, theArg1);
  -	append(theString, theArg2);
  +	arg1->str(theString);
  +	arg2->str(theString);
   
   	return executionContext.getXObjectFactory().createString(theResult);
   }
  @@ -116,15 +111,9 @@
   
   	XalanDOMString&			theString = theResult.get();
   
  -	const XalanDOMString&	theArg1 = arg1->str();
  -	const XalanDOMString&	theArg2 = arg2->str();
  -	const XalanDOMString&	theArg3 = arg3->str();
  -
  -	reserve(theString, length(theArg1) + length(theArg2) + length(theArg3) + 1);
  -
  -	append(theString, theArg1);
  -	append(theString, theArg2);
  -	append(theString, theArg3);
  +	arg1->str(theString);
  +	arg2->str(theString);
  +	arg3->str(theString);
   
   	return executionContext.getXObjectFactory().createString(theResult);
   }
  @@ -138,34 +127,17 @@
   			const XObjectArgVectorType&		args,
   			const Locator*					/* locator */) const
   {
  -	XalanDOMString::size_type	theCombinedLength = 0;
  -
   	const XObjectArgVectorType::const_iterator	theEnd = args.end();
   
  -	{
  -		XObjectArgVectorType::const_iterator	i = args.begin();
  -
  -		for(; i != theEnd; ++i)
  -		{
  -			assert((*i).null() == false);
  -
  -			theCombinedLength += length((*i)->str());
  -		}
  -	}
  -
   	XPathExecutionContext::GetAndReleaseCachedString	theResult(executionContext);
   
   	XalanDOMString&		theString = theResult.get();
   
  -	reserve(theString, theCombinedLength + 1);
  +	XObjectArgVectorType::const_iterator	i = args.begin();
   
  +	for(; i != theEnd; ++i)
   	{
  -		XObjectArgVectorType::const_iterator	i = args.begin();
  -
  -		for(; i != theEnd; ++i)
  -		{
  -			append(theString, (*i)->str());
  -		}
  +		(*i)->str(theString);
   	}
   
   	return executionContext.getXObjectFactory().createString(theResult);
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: xalan-cvs-unsubscribe@xml.apache.org
For additional commands, e-mail: xalan-cvs-help@xml.apache.org