diff --git a/string/public/nsReadableUtils.h b/string/public/nsReadableUtils.h index ebc59cf9011..a9f39d0b0e9 100755 --- a/string/public/nsReadableUtils.h +++ b/string/public/nsReadableUtils.h @@ -17,18 +17,23 @@ * Copyright (C) 2000 Netscape Communications Corporation. All * Rights Reserved. * - * Original Author: - * Scott Collins - * * Contributor(s): + * Scott Collins (original author) + * Johnny Stenbeck + * */ #ifndef nsReadableUtils_h___ #define nsReadableUtils_h___ -#include "nsAReadableString.h" + /** + * I guess all the routines in this file are all mis-named. + * According to our conventions, they should be |NS_xxx|. + */ + +#ifndef nsAWritableString_h___ #include "nsAWritableString.h" -#include "nsCRT.h" +#endif NS_COM void CopyUCS2toASCII( const nsAReadableString& aSource, nsAWritableCString& aDest ); NS_COM void CopyASCIItoUCS2( const nsAReadableCString& aSource, nsAWritableString& aDest ); @@ -121,53 +126,14 @@ NS_COM PRUnichar* CopyUnicodeTo( const nsAReadableString& aSource, NS_COM PRBool IsASCII( const nsAReadableString& aString ); - // - // |ToUpperCase(basic_nsAWritableString&)| - // -template -void -ToUpperCase(basic_nsAWritableString& aString) - { - nsWritingIterator start( aString.BeginWriting() ); - nsWritingIterator end( aString.EndWriting() ); - while ( start != end ) { - PRUint32 fraglen = start.size_forward(); - PRUint32 num_bytes = fraglen; - CharT *buf = start.get(); - - while ( num_bytes-- ) { - *buf = nsCRT::ToUpper(*buf); - ++buf; - } - - start += fraglen; - } - } - - // - // |ToUpperCase(basic_nsAWritableString&)| - // -template -void -ToLowerCase(basic_nsAWritableString& aString) - { - nsWritingIterator start( aString.BeginWriting() ); - nsWritingIterator end( aString.EndWriting() ); - - while ( start != end ) { - PRUint32 fraglen = start.size_forward(); - PRUint32 num_bytes = fraglen; - CharT *buf = start.get(); - - while ( num_bytes-- ) { - *buf = nsCRT::ToLower(*buf); - ++buf; - } - - start += fraglen; - } - } + /** + * Converts case in place in the argument string. + */ +NS_COM void ToUpperCase( nsAWritableString& ); +NS_COM void ToUpperCase( nsAWritableCString& ); +NS_COM void ToLowerCase( nsAWritableString& ); +NS_COM void ToLowerCase( nsAWritableCString& ); #endif // !defined(nsReadableUtils_h___) diff --git a/string/src/nsReadableUtils.cpp b/string/src/nsReadableUtils.cpp index e356d39f08b..5527e1e48c8 100755 --- a/string/src/nsReadableUtils.cpp +++ b/string/src/nsReadableUtils.cpp @@ -24,6 +24,7 @@ #include "nsReadableUtils.h" #include "nsMemory.h" #include "nsString.h" +#include "nsCRT.h" @@ -214,7 +215,7 @@ IsASCII( const nsAReadableString& aString ) nsReadingIterator iter; for ( aString.BeginReading(iter); iter != done_reading; iter.advance( PRInt32(fragmentLength) ) ) { - fragmentLength = iter.size_forward(); + fragmentLength = PRUint32(iter.size_forward()); const PRUnichar* c = iter.get(); const PRUnichar* fragmentEnd = c + fragmentLength; @@ -227,3 +228,77 @@ IsASCII( const nsAReadableString& aString ) return PR_TRUE; } + + + /** + * A character sink for case conversion. + */ +template +class ConvertToUpperCase + { + public: + typedef CharT value_type; + + PRUint32 + write( const CharT* aSource, PRUint32 aSourceLength ) + { + for ( int i=0; i converter; + copy_string(aString.BeginWriting(fromBegin), aString.EndWriting(fromEnd), converter); + } + +NS_COM +void +ToUpperCase( nsAWritableCString& aCString ) + { + nsAWritableCString::iterator fromBegin, fromEnd; + ConvertToUpperCase converter; + copy_string(aCString.BeginWriting(fromBegin), aCString.EndWriting(fromEnd), converter); + } + + + /** + * A character sink for case conversion. + */ +template +class ConvertToLowerCase + { + public: + typedef CharT value_type; + + PRUint32 + write( const CharT* aSource, PRUint32 aSourceLength ) + { + for ( int i=0; i converter; + copy_string(aString.BeginWriting(fromBegin), aString.EndWriting(fromEnd), converter); + } + +NS_COM +void +ToLowerCase( nsAWritableCString& aCString ) + { + nsAWritableCString::iterator fromBegin, fromEnd; + ConvertToLowerCase converter; + copy_string(aCString.BeginWriting(fromBegin), aCString.EndWriting(fromEnd), converter); + } diff --git a/xpcom/ds/nsReadableUtils.cpp b/xpcom/ds/nsReadableUtils.cpp index e356d39f08b..5527e1e48c8 100755 --- a/xpcom/ds/nsReadableUtils.cpp +++ b/xpcom/ds/nsReadableUtils.cpp @@ -24,6 +24,7 @@ #include "nsReadableUtils.h" #include "nsMemory.h" #include "nsString.h" +#include "nsCRT.h" @@ -214,7 +215,7 @@ IsASCII( const nsAReadableString& aString ) nsReadingIterator iter; for ( aString.BeginReading(iter); iter != done_reading; iter.advance( PRInt32(fragmentLength) ) ) { - fragmentLength = iter.size_forward(); + fragmentLength = PRUint32(iter.size_forward()); const PRUnichar* c = iter.get(); const PRUnichar* fragmentEnd = c + fragmentLength; @@ -227,3 +228,77 @@ IsASCII( const nsAReadableString& aString ) return PR_TRUE; } + + + /** + * A character sink for case conversion. + */ +template +class ConvertToUpperCase + { + public: + typedef CharT value_type; + + PRUint32 + write( const CharT* aSource, PRUint32 aSourceLength ) + { + for ( int i=0; i converter; + copy_string(aString.BeginWriting(fromBegin), aString.EndWriting(fromEnd), converter); + } + +NS_COM +void +ToUpperCase( nsAWritableCString& aCString ) + { + nsAWritableCString::iterator fromBegin, fromEnd; + ConvertToUpperCase converter; + copy_string(aCString.BeginWriting(fromBegin), aCString.EndWriting(fromEnd), converter); + } + + + /** + * A character sink for case conversion. + */ +template +class ConvertToLowerCase + { + public: + typedef CharT value_type; + + PRUint32 + write( const CharT* aSource, PRUint32 aSourceLength ) + { + for ( int i=0; i converter; + copy_string(aString.BeginWriting(fromBegin), aString.EndWriting(fromEnd), converter); + } + +NS_COM +void +ToLowerCase( nsAWritableCString& aCString ) + { + nsAWritableCString::iterator fromBegin, fromEnd; + ConvertToLowerCase converter; + copy_string(aCString.BeginWriting(fromBegin), aCString.EndWriting(fromEnd), converter); + } diff --git a/xpcom/ds/nsReadableUtils.h b/xpcom/ds/nsReadableUtils.h index ebc59cf9011..a9f39d0b0e9 100755 --- a/xpcom/ds/nsReadableUtils.h +++ b/xpcom/ds/nsReadableUtils.h @@ -17,18 +17,23 @@ * Copyright (C) 2000 Netscape Communications Corporation. All * Rights Reserved. * - * Original Author: - * Scott Collins - * * Contributor(s): + * Scott Collins (original author) + * Johnny Stenbeck + * */ #ifndef nsReadableUtils_h___ #define nsReadableUtils_h___ -#include "nsAReadableString.h" + /** + * I guess all the routines in this file are all mis-named. + * According to our conventions, they should be |NS_xxx|. + */ + +#ifndef nsAWritableString_h___ #include "nsAWritableString.h" -#include "nsCRT.h" +#endif NS_COM void CopyUCS2toASCII( const nsAReadableString& aSource, nsAWritableCString& aDest ); NS_COM void CopyASCIItoUCS2( const nsAReadableCString& aSource, nsAWritableString& aDest ); @@ -121,53 +126,14 @@ NS_COM PRUnichar* CopyUnicodeTo( const nsAReadableString& aSource, NS_COM PRBool IsASCII( const nsAReadableString& aString ); - // - // |ToUpperCase(basic_nsAWritableString&)| - // -template -void -ToUpperCase(basic_nsAWritableString& aString) - { - nsWritingIterator start( aString.BeginWriting() ); - nsWritingIterator end( aString.EndWriting() ); - while ( start != end ) { - PRUint32 fraglen = start.size_forward(); - PRUint32 num_bytes = fraglen; - CharT *buf = start.get(); - - while ( num_bytes-- ) { - *buf = nsCRT::ToUpper(*buf); - ++buf; - } - - start += fraglen; - } - } - - // - // |ToUpperCase(basic_nsAWritableString&)| - // -template -void -ToLowerCase(basic_nsAWritableString& aString) - { - nsWritingIterator start( aString.BeginWriting() ); - nsWritingIterator end( aString.EndWriting() ); - - while ( start != end ) { - PRUint32 fraglen = start.size_forward(); - PRUint32 num_bytes = fraglen; - CharT *buf = start.get(); - - while ( num_bytes-- ) { - *buf = nsCRT::ToLower(*buf); - ++buf; - } - - start += fraglen; - } - } + /** + * Converts case in place in the argument string. + */ +NS_COM void ToUpperCase( nsAWritableString& ); +NS_COM void ToUpperCase( nsAWritableCString& ); +NS_COM void ToLowerCase( nsAWritableString& ); +NS_COM void ToLowerCase( nsAWritableCString& ); #endif // !defined(nsReadableUtils_h___) diff --git a/xpcom/string/public/nsReadableUtils.h b/xpcom/string/public/nsReadableUtils.h index ebc59cf9011..a9f39d0b0e9 100755 --- a/xpcom/string/public/nsReadableUtils.h +++ b/xpcom/string/public/nsReadableUtils.h @@ -17,18 +17,23 @@ * Copyright (C) 2000 Netscape Communications Corporation. All * Rights Reserved. * - * Original Author: - * Scott Collins - * * Contributor(s): + * Scott Collins (original author) + * Johnny Stenbeck + * */ #ifndef nsReadableUtils_h___ #define nsReadableUtils_h___ -#include "nsAReadableString.h" + /** + * I guess all the routines in this file are all mis-named. + * According to our conventions, they should be |NS_xxx|. + */ + +#ifndef nsAWritableString_h___ #include "nsAWritableString.h" -#include "nsCRT.h" +#endif NS_COM void CopyUCS2toASCII( const nsAReadableString& aSource, nsAWritableCString& aDest ); NS_COM void CopyASCIItoUCS2( const nsAReadableCString& aSource, nsAWritableString& aDest ); @@ -121,53 +126,14 @@ NS_COM PRUnichar* CopyUnicodeTo( const nsAReadableString& aSource, NS_COM PRBool IsASCII( const nsAReadableString& aString ); - // - // |ToUpperCase(basic_nsAWritableString&)| - // -template -void -ToUpperCase(basic_nsAWritableString& aString) - { - nsWritingIterator start( aString.BeginWriting() ); - nsWritingIterator end( aString.EndWriting() ); - while ( start != end ) { - PRUint32 fraglen = start.size_forward(); - PRUint32 num_bytes = fraglen; - CharT *buf = start.get(); - - while ( num_bytes-- ) { - *buf = nsCRT::ToUpper(*buf); - ++buf; - } - - start += fraglen; - } - } - - // - // |ToUpperCase(basic_nsAWritableString&)| - // -template -void -ToLowerCase(basic_nsAWritableString& aString) - { - nsWritingIterator start( aString.BeginWriting() ); - nsWritingIterator end( aString.EndWriting() ); - - while ( start != end ) { - PRUint32 fraglen = start.size_forward(); - PRUint32 num_bytes = fraglen; - CharT *buf = start.get(); - - while ( num_bytes-- ) { - *buf = nsCRT::ToLower(*buf); - ++buf; - } - - start += fraglen; - } - } + /** + * Converts case in place in the argument string. + */ +NS_COM void ToUpperCase( nsAWritableString& ); +NS_COM void ToUpperCase( nsAWritableCString& ); +NS_COM void ToLowerCase( nsAWritableString& ); +NS_COM void ToLowerCase( nsAWritableCString& ); #endif // !defined(nsReadableUtils_h___) diff --git a/xpcom/string/src/nsReadableUtils.cpp b/xpcom/string/src/nsReadableUtils.cpp index e356d39f08b..5527e1e48c8 100755 --- a/xpcom/string/src/nsReadableUtils.cpp +++ b/xpcom/string/src/nsReadableUtils.cpp @@ -24,6 +24,7 @@ #include "nsReadableUtils.h" #include "nsMemory.h" #include "nsString.h" +#include "nsCRT.h" @@ -214,7 +215,7 @@ IsASCII( const nsAReadableString& aString ) nsReadingIterator iter; for ( aString.BeginReading(iter); iter != done_reading; iter.advance( PRInt32(fragmentLength) ) ) { - fragmentLength = iter.size_forward(); + fragmentLength = PRUint32(iter.size_forward()); const PRUnichar* c = iter.get(); const PRUnichar* fragmentEnd = c + fragmentLength; @@ -227,3 +228,77 @@ IsASCII( const nsAReadableString& aString ) return PR_TRUE; } + + + /** + * A character sink for case conversion. + */ +template +class ConvertToUpperCase + { + public: + typedef CharT value_type; + + PRUint32 + write( const CharT* aSource, PRUint32 aSourceLength ) + { + for ( int i=0; i converter; + copy_string(aString.BeginWriting(fromBegin), aString.EndWriting(fromEnd), converter); + } + +NS_COM +void +ToUpperCase( nsAWritableCString& aCString ) + { + nsAWritableCString::iterator fromBegin, fromEnd; + ConvertToUpperCase converter; + copy_string(aCString.BeginWriting(fromBegin), aCString.EndWriting(fromEnd), converter); + } + + + /** + * A character sink for case conversion. + */ +template +class ConvertToLowerCase + { + public: + typedef CharT value_type; + + PRUint32 + write( const CharT* aSource, PRUint32 aSourceLength ) + { + for ( int i=0; i converter; + copy_string(aString.BeginWriting(fromBegin), aString.EndWriting(fromEnd), converter); + } + +NS_COM +void +ToLowerCase( nsAWritableCString& aCString ) + { + nsAWritableCString::iterator fromBegin, fromEnd; + ConvertToLowerCase converter; + copy_string(aCString.BeginWriting(fromBegin), aCString.EndWriting(fromEnd), converter); + }