MCPcopy Create free account
hub / github.com/OpenStarbound/OpenStarbound / hexStringFromUtf32

Function hexStringFromUtf32

source/core/StarUnicode.cpp:213–234  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

211}
212
213std::string hexStringFromUtf32(Utf32Type character) {
214 if (character > MAX_CODEPOINT)
215 throw UnicodeException("Codepoint too big in hexStringFromUtf32");
216 Utf32Type lead;
217 Maybe<Utf32Type> trail;
218 tie(lead, trail) = utf32ToUtf16SurrogatePair(character);
219
220 char16_t leadOut = toBigEndian((char16_t)lead);
221 auto leadHex = hexEncode(reinterpret_cast<char*>(&leadOut), sizeof(leadOut)).takeUtf8();
222
223 starAssert(leadHex.size() == 4);
224
225 if (!trail)
226 return leadHex;
227
228 char16_t trailOut = toBigEndian((char16_t)*trail);
229 auto trailHex = hexEncode(reinterpret_cast<char*>(&trailOut), sizeof(trailOut));
230
231 starAssert(trailHex.size() == 4);
232
233 return (leadHex + trailHex).takeUtf8();
234}
235
236bool isUtf16LeadSurrogate(Utf32Type codepoint) {
237 return codepoint >= MIN_LEAD && codepoint <= MAX_LEAD;

Callers 1

putStringMethod · 0.85

Calls 5

toBigEndianFunction · 0.85
hexEncodeFunction · 0.85
takeUtf8Method · 0.45
sizeMethod · 0.45

Tested by

no test coverage detected