MCPcopy Create free account
hub / github.com/VitalAudio/visage / convertUtf32ToUtf16

Method convertUtf32ToUtf16

visage_utils/string_utils.h:102–123  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

100
101 template<typename T>
102 static T convertUtf32ToUtf16(const std::u32string& utf32_str) {
103 T result;
104 result.reserve(utf32_str.size());
105
106 for (char32_t character : utf32_str) {
107 if (character <= 0xFFFF) {
108 if (character >= 0xD800 && character <= 0xDFFF) // Error
109 return result;
110 result.push_back(static_cast<char16_t>(character));
111 }
112 else if (character <= 0x10FFFF) {
113 character -= 0x10000;
114 auto high_surrogate = static_cast<char16_t>((character >> 10) + 0xD800);
115 auto low_surrogate = static_cast<char16_t>((character & 0x3FF) + 0xDC00);
116 result.push_back(high_surrogate);
117 result.push_back(low_surrogate);
118 }
119 else // Error
120 return result;
121 }
122 return result;
123 }
124
125 template<typename T>
126 static std::u32string convertUtf16ToUtf32(const T& utf16_str) {

Callers

nothing calls this directly

Calls 1

sizeMethod · 0.45

Tested by

no test coverage detected