refactoring |ToUpperCase|, |ToLowerCase|

This commit is contained in:
scc%mozilla.org 2000-09-09 07:30:55 +00:00
Родитель febd47d9c6
Коммит 3d24e98950
6 изменённых файлов: 279 добавлений и 156 удалений

Просмотреть файл

@ -17,18 +17,23 @@
* Copyright (C) 2000 Netscape Communications Corporation. All
* Rights Reserved.
*
* Original Author:
* Scott Collins <scc@mozilla.org>
*
* Contributor(s):
* Scott Collins <scc@mozilla.org> (original author)
* Johnny Stenbeck <jst@netscape.com>
*
*/
#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<CharT>&)|
//
template <class CharT>
void
ToUpperCase(basic_nsAWritableString<CharT>& aString)
{
nsWritingIterator<CharT> start( aString.BeginWriting() );
nsWritingIterator<CharT> 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<CharT>&)|
//
template <class CharT>
void
ToLowerCase(basic_nsAWritableString<CharT>& aString)
{
nsWritingIterator<CharT> start( aString.BeginWriting() );
nsWritingIterator<CharT> 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___)

Просмотреть файл

@ -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<PRUnichar> 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 CharT>
class ConvertToUpperCase
{
public:
typedef CharT value_type;
PRUint32
write( const CharT* aSource, PRUint32 aSourceLength )
{
for ( int i=0; i<aSourceLength; ++i )
NS_CONST_CAST(CharT*, aSource)[i] = nsCRT::ToUpper(aSource[i]);
return aSourceLength;
}
};
NS_COM
void
ToUpperCase( nsAWritableString& aString )
{
nsAWritableString::iterator fromBegin, fromEnd;
ConvertToUpperCase<PRUnichar> converter;
copy_string(aString.BeginWriting(fromBegin), aString.EndWriting(fromEnd), converter);
}
NS_COM
void
ToUpperCase( nsAWritableCString& aCString )
{
nsAWritableCString::iterator fromBegin, fromEnd;
ConvertToUpperCase<char> converter;
copy_string(aCString.BeginWriting(fromBegin), aCString.EndWriting(fromEnd), converter);
}
/**
* A character sink for case conversion.
*/
template <class CharT>
class ConvertToLowerCase
{
public:
typedef CharT value_type;
PRUint32
write( const CharT* aSource, PRUint32 aSourceLength )
{
for ( int i=0; i<aSourceLength; ++i )
NS_CONST_CAST(CharT*, aSource)[i] = nsCRT::ToLower(aSource[i]);
return aSourceLength;
}
};
NS_COM
void
ToLowerCase( nsAWritableString& aString )
{
nsAWritableString::iterator fromBegin, fromEnd;
ConvertToLowerCase<PRUnichar> converter;
copy_string(aString.BeginWriting(fromBegin), aString.EndWriting(fromEnd), converter);
}
NS_COM
void
ToLowerCase( nsAWritableCString& aCString )
{
nsAWritableCString::iterator fromBegin, fromEnd;
ConvertToLowerCase<char> converter;
copy_string(aCString.BeginWriting(fromBegin), aCString.EndWriting(fromEnd), converter);
}

Просмотреть файл

@ -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<PRUnichar> 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 CharT>
class ConvertToUpperCase
{
public:
typedef CharT value_type;
PRUint32
write( const CharT* aSource, PRUint32 aSourceLength )
{
for ( int i=0; i<aSourceLength; ++i )
NS_CONST_CAST(CharT*, aSource)[i] = nsCRT::ToUpper(aSource[i]);
return aSourceLength;
}
};
NS_COM
void
ToUpperCase( nsAWritableString& aString )
{
nsAWritableString::iterator fromBegin, fromEnd;
ConvertToUpperCase<PRUnichar> converter;
copy_string(aString.BeginWriting(fromBegin), aString.EndWriting(fromEnd), converter);
}
NS_COM
void
ToUpperCase( nsAWritableCString& aCString )
{
nsAWritableCString::iterator fromBegin, fromEnd;
ConvertToUpperCase<char> converter;
copy_string(aCString.BeginWriting(fromBegin), aCString.EndWriting(fromEnd), converter);
}
/**
* A character sink for case conversion.
*/
template <class CharT>
class ConvertToLowerCase
{
public:
typedef CharT value_type;
PRUint32
write( const CharT* aSource, PRUint32 aSourceLength )
{
for ( int i=0; i<aSourceLength; ++i )
NS_CONST_CAST(CharT*, aSource)[i] = nsCRT::ToLower(aSource[i]);
return aSourceLength;
}
};
NS_COM
void
ToLowerCase( nsAWritableString& aString )
{
nsAWritableString::iterator fromBegin, fromEnd;
ConvertToLowerCase<PRUnichar> converter;
copy_string(aString.BeginWriting(fromBegin), aString.EndWriting(fromEnd), converter);
}
NS_COM
void
ToLowerCase( nsAWritableCString& aCString )
{
nsAWritableCString::iterator fromBegin, fromEnd;
ConvertToLowerCase<char> converter;
copy_string(aCString.BeginWriting(fromBegin), aCString.EndWriting(fromEnd), converter);
}

Просмотреть файл

@ -17,18 +17,23 @@
* Copyright (C) 2000 Netscape Communications Corporation. All
* Rights Reserved.
*
* Original Author:
* Scott Collins <scc@mozilla.org>
*
* Contributor(s):
* Scott Collins <scc@mozilla.org> (original author)
* Johnny Stenbeck <jst@netscape.com>
*
*/
#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<CharT>&)|
//
template <class CharT>
void
ToUpperCase(basic_nsAWritableString<CharT>& aString)
{
nsWritingIterator<CharT> start( aString.BeginWriting() );
nsWritingIterator<CharT> 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<CharT>&)|
//
template <class CharT>
void
ToLowerCase(basic_nsAWritableString<CharT>& aString)
{
nsWritingIterator<CharT> start( aString.BeginWriting() );
nsWritingIterator<CharT> 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___)

Просмотреть файл

@ -17,18 +17,23 @@
* Copyright (C) 2000 Netscape Communications Corporation. All
* Rights Reserved.
*
* Original Author:
* Scott Collins <scc@mozilla.org>
*
* Contributor(s):
* Scott Collins <scc@mozilla.org> (original author)
* Johnny Stenbeck <jst@netscape.com>
*
*/
#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<CharT>&)|
//
template <class CharT>
void
ToUpperCase(basic_nsAWritableString<CharT>& aString)
{
nsWritingIterator<CharT> start( aString.BeginWriting() );
nsWritingIterator<CharT> 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<CharT>&)|
//
template <class CharT>
void
ToLowerCase(basic_nsAWritableString<CharT>& aString)
{
nsWritingIterator<CharT> start( aString.BeginWriting() );
nsWritingIterator<CharT> 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___)

Просмотреть файл

@ -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<PRUnichar> 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 CharT>
class ConvertToUpperCase
{
public:
typedef CharT value_type;
PRUint32
write( const CharT* aSource, PRUint32 aSourceLength )
{
for ( int i=0; i<aSourceLength; ++i )
NS_CONST_CAST(CharT*, aSource)[i] = nsCRT::ToUpper(aSource[i]);
return aSourceLength;
}
};
NS_COM
void
ToUpperCase( nsAWritableString& aString )
{
nsAWritableString::iterator fromBegin, fromEnd;
ConvertToUpperCase<PRUnichar> converter;
copy_string(aString.BeginWriting(fromBegin), aString.EndWriting(fromEnd), converter);
}
NS_COM
void
ToUpperCase( nsAWritableCString& aCString )
{
nsAWritableCString::iterator fromBegin, fromEnd;
ConvertToUpperCase<char> converter;
copy_string(aCString.BeginWriting(fromBegin), aCString.EndWriting(fromEnd), converter);
}
/**
* A character sink for case conversion.
*/
template <class CharT>
class ConvertToLowerCase
{
public:
typedef CharT value_type;
PRUint32
write( const CharT* aSource, PRUint32 aSourceLength )
{
for ( int i=0; i<aSourceLength; ++i )
NS_CONST_CAST(CharT*, aSource)[i] = nsCRT::ToLower(aSource[i]);
return aSourceLength;
}
};
NS_COM
void
ToLowerCase( nsAWritableString& aString )
{
nsAWritableString::iterator fromBegin, fromEnd;
ConvertToLowerCase<PRUnichar> converter;
copy_string(aString.BeginWriting(fromBegin), aString.EndWriting(fromEnd), converter);
}
NS_COM
void
ToLowerCase( nsAWritableCString& aCString )
{
nsAWritableCString::iterator fromBegin, fromEnd;
ConvertToLowerCase<char> converter;
copy_string(aCString.BeginWriting(fromBegin), aCString.EndWriting(fromEnd), converter);
}