| 295 | // ================================================================================================= |
| 296 | |
| 297 | extern void ToUTF16Native ( const UTF8Unit * utf8In, size_t utf8Len, std::string * utf16Str ) |
| 298 | { |
| 299 | enum { kBufferSize = 8*1024 }; |
| 300 | UTF16Unit u16Buffer[kBufferSize]; // 16K bytes |
| 301 | size_t readCount, writeCount; |
| 302 | |
| 303 | utf16Str->erase(); |
| 304 | utf16Str->reserve ( 2*utf8Len ); // As good a guess as any. |
| 305 | |
| 306 | while ( utf8Len > 0 ) { |
| 307 | UTF8_to_UTF16Nat ( utf8In, utf8Len, u16Buffer, kBufferSize, &readCount, &writeCount ); |
| 308 | if ( writeCount == 0 ) UC_Throw ( "Incomplete Unicode at end of string", kXMPErr_BadXML ); |
| 309 | utf16Str->append ( (const char *)u16Buffer, writeCount*2 ); |
| 310 | utf8In += readCount; |
| 311 | utf8Len -= readCount; |
| 312 | } |
| 313 | |
| 314 | } // ToUTF16Native |
| 315 | |
| 316 | // ================================================================================================= |
| 317 |
nothing calls this directly
no test coverage detected