From e98f6c2c7c744232fb6483c1eb76ef4e39404740 Mon Sep 17 00:00:00 2001 From: "scc%mozilla.org" Date: Thu, 10 Aug 2000 06:36:54 +0000 Subject: [PATCH] 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 --- mozilla/string/public/nsAReadableString.h | 14 +++++++------- mozilla/string/public/nsAWritableString.h | 8 ++++---- mozilla/string/public/nsAlgorithm.h | 2 ++ mozilla/xpcom/ds/nsAReadableString.h | 14 +++++++------- mozilla/xpcom/ds/nsAWritableString.h | 8 ++++---- mozilla/xpcom/ds/nsAlgorithm.h | 2 ++ mozilla/xpcom/string/public/nsAReadableString.h | 14 +++++++------- mozilla/xpcom/string/public/nsAWritableString.h | 8 ++++---- mozilla/xpcom/string/public/nsAlgorithm.h | 2 ++ 9 files changed, 39 insertions(+), 33 deletions(-) diff --git a/mozilla/string/public/nsAReadableString.h b/mozilla/string/public/nsAReadableString.h index 13c70a490ff..0461bc181eb 100644 --- a/mozilla/string/public/nsAReadableString.h +++ b/mozilla/string/public/nsAReadableString.h @@ -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* mOwningString; - inline void normalize_forward(); - inline void normalize_backward(); - nsReadingIterator( const nsReadableFragment& aFragment, const CharT* aStartingPosition, const basic_nsAReadableString& aOwningString ) @@ -121,6 +118,9 @@ class nsReadingIterator // nsReadingIterator( const nsReadingIterator& ); ...use default copy-constructor // nsReadingIterator& operator=( const nsReadingIterator& ); ...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& aFragment ) const { - return (aFragment.mFragmentIdentifier & mFragmentIdentifierMask) ? kRightString : kLeftString; + return (NS_REINTERPRET_CAST(PRUint32, aFragment.mFragmentIdentifier) & mFragmentIdentifierMask) ? kRightString : kLeftString; } int SetLeftStringInFragment( nsReadableFragment& aFragment ) const { - aFragment.mFragmentIdentifier &= ~mFragmentIdentifierMask; + aFragment.mFragmentIdentifier = NS_REINTERPRET_CAST(void*, NS_REINTERPRET_CAST(PRUint32, aFragment.mFragmentIdentifier) & ~mFragmentIdentifierMask); return kLeftString; } int SetRightStringInFragment( nsReadableFragment& aFragment ) const { - aFragment.mFragmentIdentifier |= mFragmentIdentifierMask; + aFragment.mFragmentIdentifier = NS_REINTERPRET_CAST(void*, NS_REINTERPRET_CAST(PRUint32, aFragment.mFragmentIdentifier) | mFragmentIdentifierMask); return kRightString; } diff --git a/mozilla/string/public/nsAWritableString.h b/mozilla/string/public/nsAWritableString.h index caa12751a5f..93f921fd934 100644 --- a/mozilla/string/public/nsAWritableString.h +++ b/mozilla/string/public/nsAWritableString.h @@ -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* mOwningString; - inline void normalize_forward(); - inline void normalize_backward(); - nsWritingIterator( nsWritableFragment& aFragment, CharT* aStartingPosition, basic_nsAWritableString& aOwningString ) @@ -83,6 +80,9 @@ class nsWritingIterator // nsWritingIterator( const nsWritingIterator& ); ...use default copy-constructor // nsWritingIterator& operator=( const nsWritingIterator& ); ...use default copy-assignment operator + inline void normalize_forward(); + inline void normalize_backward(); + pointer get() const { diff --git a/mozilla/string/public/nsAlgorithm.h b/mozilla/string/public/nsAlgorithm.h index 1ef422df293..03c1c152f9f 100755 --- a/mozilla/string/public/nsAlgorithm.h +++ b/mozilla/string/public/nsAlgorithm.h @@ -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())); diff --git a/mozilla/xpcom/ds/nsAReadableString.h b/mozilla/xpcom/ds/nsAReadableString.h index 13c70a490ff..0461bc181eb 100644 --- a/mozilla/xpcom/ds/nsAReadableString.h +++ b/mozilla/xpcom/ds/nsAReadableString.h @@ -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* mOwningString; - inline void normalize_forward(); - inline void normalize_backward(); - nsReadingIterator( const nsReadableFragment& aFragment, const CharT* aStartingPosition, const basic_nsAReadableString& aOwningString ) @@ -121,6 +118,9 @@ class nsReadingIterator // nsReadingIterator( const nsReadingIterator& ); ...use default copy-constructor // nsReadingIterator& operator=( const nsReadingIterator& ); ...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& aFragment ) const { - return (aFragment.mFragmentIdentifier & mFragmentIdentifierMask) ? kRightString : kLeftString; + return (NS_REINTERPRET_CAST(PRUint32, aFragment.mFragmentIdentifier) & mFragmentIdentifierMask) ? kRightString : kLeftString; } int SetLeftStringInFragment( nsReadableFragment& aFragment ) const { - aFragment.mFragmentIdentifier &= ~mFragmentIdentifierMask; + aFragment.mFragmentIdentifier = NS_REINTERPRET_CAST(void*, NS_REINTERPRET_CAST(PRUint32, aFragment.mFragmentIdentifier) & ~mFragmentIdentifierMask); return kLeftString; } int SetRightStringInFragment( nsReadableFragment& aFragment ) const { - aFragment.mFragmentIdentifier |= mFragmentIdentifierMask; + aFragment.mFragmentIdentifier = NS_REINTERPRET_CAST(void*, NS_REINTERPRET_CAST(PRUint32, aFragment.mFragmentIdentifier) | mFragmentIdentifierMask); return kRightString; } diff --git a/mozilla/xpcom/ds/nsAWritableString.h b/mozilla/xpcom/ds/nsAWritableString.h index caa12751a5f..93f921fd934 100644 --- a/mozilla/xpcom/ds/nsAWritableString.h +++ b/mozilla/xpcom/ds/nsAWritableString.h @@ -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* mOwningString; - inline void normalize_forward(); - inline void normalize_backward(); - nsWritingIterator( nsWritableFragment& aFragment, CharT* aStartingPosition, basic_nsAWritableString& aOwningString ) @@ -83,6 +80,9 @@ class nsWritingIterator // nsWritingIterator( const nsWritingIterator& ); ...use default copy-constructor // nsWritingIterator& operator=( const nsWritingIterator& ); ...use default copy-assignment operator + inline void normalize_forward(); + inline void normalize_backward(); + pointer get() const { diff --git a/mozilla/xpcom/ds/nsAlgorithm.h b/mozilla/xpcom/ds/nsAlgorithm.h index 1ef422df293..03c1c152f9f 100755 --- a/mozilla/xpcom/ds/nsAlgorithm.h +++ b/mozilla/xpcom/ds/nsAlgorithm.h @@ -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())); diff --git a/mozilla/xpcom/string/public/nsAReadableString.h b/mozilla/xpcom/string/public/nsAReadableString.h index 13c70a490ff..0461bc181eb 100644 --- a/mozilla/xpcom/string/public/nsAReadableString.h +++ b/mozilla/xpcom/string/public/nsAReadableString.h @@ -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* mOwningString; - inline void normalize_forward(); - inline void normalize_backward(); - nsReadingIterator( const nsReadableFragment& aFragment, const CharT* aStartingPosition, const basic_nsAReadableString& aOwningString ) @@ -121,6 +118,9 @@ class nsReadingIterator // nsReadingIterator( const nsReadingIterator& ); ...use default copy-constructor // nsReadingIterator& operator=( const nsReadingIterator& ); ...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& aFragment ) const { - return (aFragment.mFragmentIdentifier & mFragmentIdentifierMask) ? kRightString : kLeftString; + return (NS_REINTERPRET_CAST(PRUint32, aFragment.mFragmentIdentifier) & mFragmentIdentifierMask) ? kRightString : kLeftString; } int SetLeftStringInFragment( nsReadableFragment& aFragment ) const { - aFragment.mFragmentIdentifier &= ~mFragmentIdentifierMask; + aFragment.mFragmentIdentifier = NS_REINTERPRET_CAST(void*, NS_REINTERPRET_CAST(PRUint32, aFragment.mFragmentIdentifier) & ~mFragmentIdentifierMask); return kLeftString; } int SetRightStringInFragment( nsReadableFragment& aFragment ) const { - aFragment.mFragmentIdentifier |= mFragmentIdentifierMask; + aFragment.mFragmentIdentifier = NS_REINTERPRET_CAST(void*, NS_REINTERPRET_CAST(PRUint32, aFragment.mFragmentIdentifier) | mFragmentIdentifierMask); return kRightString; } diff --git a/mozilla/xpcom/string/public/nsAWritableString.h b/mozilla/xpcom/string/public/nsAWritableString.h index caa12751a5f..93f921fd934 100644 --- a/mozilla/xpcom/string/public/nsAWritableString.h +++ b/mozilla/xpcom/string/public/nsAWritableString.h @@ -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* mOwningString; - inline void normalize_forward(); - inline void normalize_backward(); - nsWritingIterator( nsWritableFragment& aFragment, CharT* aStartingPosition, basic_nsAWritableString& aOwningString ) @@ -83,6 +80,9 @@ class nsWritingIterator // nsWritingIterator( const nsWritingIterator& ); ...use default copy-constructor // nsWritingIterator& operator=( const nsWritingIterator& ); ...use default copy-assignment operator + inline void normalize_forward(); + inline void normalize_backward(); + pointer get() const { diff --git a/mozilla/xpcom/string/public/nsAlgorithm.h b/mozilla/xpcom/string/public/nsAlgorithm.h index 1ef422df293..03c1c152f9f 100755 --- a/mozilla/xpcom/string/public/nsAlgorithm.h +++ b/mozilla/xpcom/string/public/nsAlgorithm.h @@ -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()));