MCPcopy Create free account
hub / github.com/GaijinEntertainment/daScript / encodeUtf8Char

Function encodeUtf8Char

src/simulate/runtime_string.cpp:306–363  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

304
305
306 static bool encodeUtf8Char(uint32_t ch, char * result) {
307
308 if (ch <= 0x7F) {
309 result[0] = char(ch);
310 result[1] = 0;
311 return true;
312 }
313
314 if (ch <= 0x7FF) {
315 result[0] = char((ch >> 6) | 0xC0);
316 result[1] = char((ch & 0x3F) | 0x80);
317 result[2] = 0;
318 return true;
319 }
320
321 if (ch <= 0xFFFF) {
322 result[0] = char((ch >> 12) | 0xE0);
323 result[1] = char(((ch >> 6) & 0x3F) | 0x80);
324 result[2] = char(((ch >> 0) & 0x3F) | 0x80);
325 result[3] = 0;
326 return true;
327 }
328
329 if (ch <= 0x1FFFFF) {
330 result[0] = char((ch >> 18) | 0xF0);
331 result[1] = char(((ch >> 12) & 0x3F) | 0x80);
332 result[2] = char(((ch >> 6) & 0x3F) | 0x80);
333 result[3] = char(((ch >> 0) & 0x3F) | 0x80);
334 result[4] = 0;
335 return true;
336 }
337
338 if (ch <= 0x3FFFFFF) {
339 result[0] = char((ch >> 24) | 0xF8);
340 result[1] = char(((ch >> 18) & 0x3F) | 0x80);
341 result[2] = char(((ch >> 12) & 0x3F) | 0x80);
342 result[3] = char(((ch >> 6) & 0x3F) | 0x80);
343 result[4] = char(((ch >> 0) & 0x3F) | 0x80);
344 result[5] = 0;
345 return true;
346 }
347
348 if (ch <= 0x7FFFFFFF) {
349 result[0] = char((ch >> 30) | 0xFC);
350 result[1] = char(((ch >> 24) & 0x3F) | 0x80);
351 result[2] = char(((ch >> 18) & 0x3F) | 0x80);
352 result[3] = char(((ch >> 12) & 0x3F) | 0x80);
353 result[4] = char(((ch >> 6) & 0x3F) | 0x80);
354 result[5] = char(((ch >> 0) & 0x3F) | 0x80);
355 result[6] = 0;
356 return true;
357 }
358
359 result[0] = '?';
360 result[1] = 0;
361
362 return false;
363 }

Callers 1

unescapeStringFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected