update copy_string() to the single-fragment string world, and optimize write() to not return a value. b=282083, r+sr=jst, a=schrep

git-svn-id: svn://10.0.0.236/trunk@242333 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
dwitte%stanford.edu
2008-01-04 00:07:07 +00:00
parent 59f190655b
commit a8f5008a68
11 changed files with 123 additions and 170 deletions

View File

@@ -483,6 +483,25 @@ nsScannerSharedSubstring::MakeMutable()
* utils -- based on code from nsReadableUtils.cpp
*/
// private helper function
static inline
nsAString::iterator&
copy_multifragment_string( nsScannerIterator& first, const nsScannerIterator& last, nsAString::iterator& result )
{
typedef nsCharSourceTraits<nsScannerIterator> source_traits;
typedef nsCharSinkTraits<nsAString::iterator> sink_traits;
while ( first != last )
{
PRUint32 distance = source_traits::readable_distance(first, last);
sink_traits::write(result, source_traits::read(first), distance);
NS_ASSERTION(distance > 0, "|copy_multifragment_string| will never terminate");
source_traits::advance(first, distance);
}
return result;
}
void
CopyUnicodeTo( const nsScannerIterator& aSrcStart,
const nsScannerIterator& aSrcEnd,
@@ -496,7 +515,7 @@ CopyUnicodeTo( const nsScannerIterator& aSrcStart,
aDest.BeginWriting(writer);
nsScannerIterator fromBegin(aSrcStart);
copy_string(fromBegin, aSrcEnd, writer);
copy_multifragment_string(fromBegin, aSrcEnd, writer);
}
void
@@ -527,7 +546,7 @@ AppendUnicodeTo( const nsScannerIterator& aSrcStart,
aDest.BeginWriting(writer).advance(oldLength);
nsScannerIterator fromBegin(aSrcStart);
copy_string(fromBegin, aSrcEnd, writer);
copy_multifragment_string(fromBegin, aSrcEnd, writer);
}
PRBool