MCPcopy Create free account
hub / github.com/devkitPro/libctru / decode_utf8

Function decode_utf8

libctru/source/util/utf/decode_utf8.c:3–88  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1#include "3ds/util/utf.h"
2
3ssize_t
4decode_utf8(uint32_t *out,
5 const uint8_t *in)
6{
7 uint8_t code1, code2, code3, code4;
8
9 code1 = *in++;
10 if(code1 < 0x80)
11 {
12 /* 1-byte sequence */
13 *out = code1;
14 return 1;
15 }
16 else if(code1 < 0xC2)
17 {
18 return -1;
19 }
20 else if(code1 < 0xE0)
21 {
22 /* 2-byte sequence */
23 code2 = *in++;
24 if((code2 & 0xC0) != 0x80)
25 {
26 return -1;
27 }
28
29 *out = (code1 << 6) + code2 - 0x3080;
30 return 2;
31 }
32 else if(code1 < 0xF0)
33 {
34 /* 3-byte sequence */
35 code2 = *in++;
36 if((code2 & 0xC0) != 0x80)
37 {
38 return -1;
39 }
40 if(code1 == 0xE0 && code2 < 0xA0)
41 {
42 return -1;
43 }
44
45 code3 = *in++;
46 if((code3 & 0xC0) != 0x80)
47 {
48 return -1;
49 }
50
51 *out = (code1 << 12) + (code2 << 6) + code3 - 0xE2080;
52 return 3;
53 }
54 else if(code1 < 0xF5)
55 {
56 /* 4-byte sequence */
57 code2 = *in++;
58 if((code2 & 0xC0) != 0x80)
59 {
60 return -1;

Callers 4

archive_fixpathFunction · 0.85
archiveMountSdmcFunction · 0.85
utf8_to_utf32Function · 0.85
utf8_to_utf16Function · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected