MCPcopy Create free account
hub / github.com/antirez/llama.cpp-deepseek-v4-flash / decode_utf8

Function decode_utf8

common/console.cpp:365–409  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

363 }
364
365 static char32_t decode_utf8(const std::string & input, size_t pos, size_t & advance) {
366 unsigned char c = static_cast<unsigned char>(input[pos]);
367 if ((c & 0x80u) == 0u) {
368 advance = 1;
369 return c;
370 }
371 if ((c & 0xE0u) == 0xC0u && pos + 1 < input.size()) {
372 unsigned char c1 = static_cast<unsigned char>(input[pos + 1]);
373 if ((c1 & 0xC0u) != 0x80u) {
374 advance = 1;
375 return 0xFFFD;
376 }
377 advance = 2;
378 return ((c & 0x1Fu) << 6) | (static_cast<unsigned char>(input[pos + 1]) & 0x3Fu);
379 }
380 if ((c & 0xF0u) == 0xE0u && pos + 2 < input.size()) {
381 unsigned char c1 = static_cast<unsigned char>(input[pos + 1]);
382 unsigned char c2 = static_cast<unsigned char>(input[pos + 2]);
383 if ((c1 & 0xC0u) != 0x80u || (c2 & 0xC0u) != 0x80u) {
384 advance = 1;
385 return 0xFFFD;
386 }
387 advance = 3;
388 return ((c & 0x0Fu) << 12) |
389 ((static_cast<unsigned char>(input[pos + 1]) & 0x3Fu) << 6) |
390 (static_cast<unsigned char>(input[pos + 2]) & 0x3Fu);
391 }
392 if ((c & 0xF8u) == 0xF0u && pos + 3 < input.size()) {
393 unsigned char c1 = static_cast<unsigned char>(input[pos + 1]);
394 unsigned char c2 = static_cast<unsigned char>(input[pos + 2]);
395 unsigned char c3 = static_cast<unsigned char>(input[pos + 3]);
396 if ((c1 & 0xC0u) != 0x80u || (c2 & 0xC0u) != 0x80u || (c3 & 0xC0u) != 0x80u) {
397 advance = 1;
398 return 0xFFFD;
399 }
400 advance = 4;
401 return ((c & 0x07u) << 18) |
402 ((static_cast<unsigned char>(input[pos + 1]) & 0x3Fu) << 12) |
403 ((static_cast<unsigned char>(input[pos + 2]) & 0x3Fu) << 6) |
404 (static_cast<unsigned char>(input[pos + 3]) & 0x3Fu);
405 }
406
407 advance = 1;
408 return 0xFFFD; // replacement character for invalid input
409 }
410
411 static void append_utf8(char32_t ch, std::string & out) {
412 if (ch <= 0x7F) {

Callers 3

set_line_contentsFunction · 0.70
move_word_leftFunction · 0.70
move_word_rightFunction · 0.70

Calls 1

sizeMethod · 0.45

Tested by

no test coverage detected