Fix for bug 224231 (Need AppendASCIItoUTF16). r=jst, sr=dbaron.

This commit is contained in:
peter%propagandism.org 2003-11-01 09:35:48 +00:00
parent 3a207091ea
commit 8658999689
2 changed files with 68 additions and 18 deletions

View File

@ -54,6 +54,12 @@ NS_COM void CopyUTF8toUTF16( const nsACString& aSource, nsAString& aDest );
NS_COM void CopyUTF16toUTF8( const PRUnichar* aSource, nsACString& aDest );
NS_COM void CopyUTF8toUTF16( const char* aSource, nsAString& aDest );
NS_COM void LossyAppendUTF16toASCII( const nsAString& aSource, nsACString& aDest );
NS_COM void AppendASCIItoUTF16( const nsACString& aSource, nsAString& aDest );
NS_COM void LossyAppendUTF16toASCII( const PRUnichar* aSource, nsACString& aDest );
NS_COM void AppendASCIItoUTF16( const char* aSource, nsAString& aDest );
NS_COM void AppendUTF16toUTF8( const nsAString& aSource, nsACString& aDest );
NS_COM void AppendUTF8toUTF16( const nsACString& aSource, nsAString& aDest );

View File

@ -150,30 +150,16 @@ NS_COM
void
LossyCopyUTF16toASCII( const nsAString& aSource, nsACString& aDest )
{
// right now, this won't work on multi-fragment destinations
aDest.SetLength(aSource.Length());
nsAString::const_iterator fromBegin, fromEnd;
nsACString::iterator toBegin;
LossyConvertEncoding<PRUnichar, char> converter(aDest.BeginWriting(toBegin).get());
copy_string(aSource.BeginReading(fromBegin), aSource.EndReading(fromEnd), converter);
aDest.Truncate();
LossyAppendUTF16toASCII(aSource, aDest);
}
NS_COM
void
CopyASCIItoUTF16( const nsACString& aSource, nsAString& aDest )
{
// right now, this won't work on multi-fragment destinations
aDest.SetLength(aSource.Length());
nsACString::const_iterator fromBegin, fromEnd;
nsAString::iterator toBegin;
LossyConvertEncoding<char, PRUnichar> converter(aDest.BeginWriting(toBegin).get());
copy_string(aSource.BeginReading(fromBegin), aSource.EndReading(fromEnd), converter);
aDest.Truncate();
AppendASCIItoUTF16(aSource, aDest);
}
NS_COM
@ -208,6 +194,64 @@ CopyUTF8toUTF16( const char* aSource, nsAString& aDest )
AppendUTF8toUTF16(aSource, aDest);
}
NS_COM
void
LossyAppendUTF16toASCII( const nsAString& aSource, nsACString& aDest )
{
PRUint32 old_dest_length = aDest.Length();
aDest.SetLength(old_dest_length + aSource.Length());
nsAString::const_iterator fromBegin, fromEnd;
nsACString::iterator dest;
aDest.BeginWriting(dest);
dest.advance(old_dest_length);
// right now, this won't work on multi-fragment destinations
LossyConvertEncoding<PRUnichar, char> converter(dest.get());
copy_string(aSource.BeginReading(fromBegin), aSource.EndReading(fromEnd), converter);
}
NS_COM
void
AppendASCIItoUTF16( const nsACString& aSource, nsAString& aDest )
{
PRUint32 old_dest_length = aDest.Length();
aDest.SetLength(old_dest_length + aSource.Length());
nsACString::const_iterator fromBegin, fromEnd;
nsAString::iterator dest;
aDest.BeginWriting(dest);
dest.advance(old_dest_length);
// right now, this won't work on multi-fragment destinations
LossyConvertEncoding<char, PRUnichar> converter(dest.get());
copy_string(aSource.BeginReading(fromBegin), aSource.EndReading(fromEnd), converter);
}
NS_COM
void
LossyAppendUTF16toASCII( const PRUnichar* aSource, nsACString& aDest )
{
if (aSource) {
LossyAppendUTF16toASCII(nsDependentString(aSource), aDest);
}
}
NS_COM
void
AppendASCIItoUTF16( const char* aSource, nsAString& aDest )
{
if (aSource) {
AppendASCIItoUTF16(nsDependentCString(aSource), aDest);
}
}
NS_COM
void
AppendUTF16toUTF8( const nsAString& aSource, nsACString& aDest )