| 220 | } |
| 221 | |
| 222 | std::pair<const char16_t*, size_t> utf32ToUtf16(const uint32_t* utf32String, size_t length) { |
| 223 | thread_local static std::vector<char16_t> tBuffer; |
| 224 | auto& buffer = tBuffer; |
| 225 | |
| 226 | auto utf16Size = countUtf32ToUtf16(utf32String, length); |
| 227 | buffer.resize(utf16Size); |
| 228 | |
| 229 | utf32ToUtf16(utf32String, length, buffer.data(), buffer.size()); |
| 230 | |
| 231 | return std::make_pair(buffer.data(), buffer.size()); |
| 232 | } |
| 233 | |
| 234 | size_t countUtf32ToUtf16(uint32_t utf32Character) { |
| 235 | return utf32Character > 0xFFFF ? 2 : 1; |
no test coverage detected