char16_t* ToNewUnicode( const nsACString& aSource ) { char16_t* result = AllocateStringCopy(aSource, (char16_t*)0); if (!result) return nullptr; nsACString::const_iterator fromBegin, fromEnd; LossyConvertEncoding8to16 converter(result); copy_string(aSource.BeginReading(fromBegin), aSource.EndReading(fromEnd), converter).write_terminator(); return result; }
char* ToNewCString( const nsAString& aSource ) { char* result = AllocateStringCopy(aSource, (char*)0); if (!result) return nsnull; nsAString::const_iterator fromBegin, fromEnd; LossyConvertEncoding16to8 converter(result); copy_string(aSource.BeginReading(fromBegin), aSource.EndReading(fromEnd), converter).write_terminator(); return result; }
char16_t* ToNewUnicode( const nsAString& aSource ) { // no conversion needed, just allocate a buffer of the correct length and copy into it char16_t* result = AllocateStringCopy(aSource, (char16_t*)0); if (!result) return nullptr; nsAString::const_iterator fromBegin, fromEnd; char16_t* toBegin = result; *copy_string(aSource.BeginReading(fromBegin), aSource.EndReading(fromEnd), toBegin) = char16_t(0); return result; }