fixes needed to get multi-fragment strings working; r|a=waterson
git-svn-id: svn://10.0.0.236/trunk@75978 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
@@ -64,7 +64,7 @@ struct nsReadableFragment
|
||||
{
|
||||
const CharT* mStart;
|
||||
const CharT* mEnd;
|
||||
PRUint32 mFragmentIdentifier;
|
||||
void* mFragmentIdentifier;
|
||||
|
||||
nsReadableFragment()
|
||||
: mStart(0), mEnd(0), mFragmentIdentifier(0)
|
||||
@@ -104,9 +104,6 @@ class nsReadingIterator
|
||||
const CharT* mPosition;
|
||||
const basic_nsAReadableString<CharT>* mOwningString;
|
||||
|
||||
inline void normalize_forward();
|
||||
inline void normalize_backward();
|
||||
|
||||
nsReadingIterator( const nsReadableFragment<CharT>& aFragment,
|
||||
const CharT* aStartingPosition,
|
||||
const basic_nsAReadableString<CharT>& aOwningString )
|
||||
@@ -121,6 +118,9 @@ class nsReadingIterator
|
||||
// nsReadingIterator( const nsReadingIterator<CharT>& ); ...use default copy-constructor
|
||||
// nsReadingIterator<CharT>& operator=( const nsReadingIterator<CharT>& ); ...use default copy-assignment operator
|
||||
|
||||
inline void normalize_forward();
|
||||
inline void normalize_backward();
|
||||
|
||||
pointer
|
||||
get() const
|
||||
{
|
||||
@@ -857,20 +857,20 @@ class nsPromiseConcatenation
|
||||
int
|
||||
GetCurrentStringFromFragment( const nsReadableFragment<CharT>& aFragment ) const
|
||||
{
|
||||
return (aFragment.mFragmentIdentifier & mFragmentIdentifierMask) ? kRightString : kLeftString;
|
||||
return (NS_REINTERPRET_CAST(PRUint32, aFragment.mFragmentIdentifier) & mFragmentIdentifierMask) ? kRightString : kLeftString;
|
||||
}
|
||||
|
||||
int
|
||||
SetLeftStringInFragment( nsReadableFragment<CharT>& aFragment ) const
|
||||
{
|
||||
aFragment.mFragmentIdentifier &= ~mFragmentIdentifierMask;
|
||||
aFragment.mFragmentIdentifier = NS_REINTERPRET_CAST(void*, NS_REINTERPRET_CAST(PRUint32, aFragment.mFragmentIdentifier) & ~mFragmentIdentifierMask);
|
||||
return kLeftString;
|
||||
}
|
||||
|
||||
int
|
||||
SetRightStringInFragment( nsReadableFragment<CharT>& aFragment ) const
|
||||
{
|
||||
aFragment.mFragmentIdentifier |= mFragmentIdentifierMask;
|
||||
aFragment.mFragmentIdentifier = NS_REINTERPRET_CAST(void*, NS_REINTERPRET_CAST(PRUint32, aFragment.mFragmentIdentifier) | mFragmentIdentifierMask);
|
||||
return kRightString;
|
||||
}
|
||||
|
||||
|
||||
@@ -37,7 +37,7 @@ struct nsWritableFragment
|
||||
{
|
||||
CharT* mStart;
|
||||
CharT* mEnd;
|
||||
PRUint32 mFragmentIdentifier;
|
||||
void* mFragmentIdentifier;
|
||||
|
||||
nsWritableFragment()
|
||||
: mStart(0), mEnd(0), mFragmentIdentifier(0)
|
||||
@@ -66,9 +66,6 @@ class nsWritingIterator
|
||||
CharT* mPosition;
|
||||
basic_nsAWritableString<CharT>* mOwningString;
|
||||
|
||||
inline void normalize_forward();
|
||||
inline void normalize_backward();
|
||||
|
||||
nsWritingIterator( nsWritableFragment<CharT>& aFragment,
|
||||
CharT* aStartingPosition,
|
||||
basic_nsAWritableString<CharT>& aOwningString )
|
||||
@@ -83,6 +80,9 @@ class nsWritingIterator
|
||||
// nsWritingIterator( const nsWritingIterator<CharT>& ); ...use default copy-constructor
|
||||
// nsWritingIterator<CharT>& operator=( const nsWritingIterator<CharT>& ); ...use default copy-assignment operator
|
||||
|
||||
inline void normalize_forward();
|
||||
inline void normalize_backward();
|
||||
|
||||
pointer
|
||||
get() const
|
||||
{
|
||||
|
||||
@@ -83,6 +83,8 @@ copy_string_backward( InputIterator first, InputIterator last, OutputIterator re
|
||||
{
|
||||
while ( first != last )
|
||||
{
|
||||
last.normalize_backward();
|
||||
result.normalize_backward();
|
||||
PRUint32 lengthToCopy = PRUint32( NS_MIN(last.size_backward(), result.size_backward()) );
|
||||
if ( first.fragment().mStart == last.fragment().mStart )
|
||||
lengthToCopy = NS_MIN(lengthToCopy, PRUint32(last.get() - first.get()));
|
||||
|
||||
Reference in New Issue
Block a user