Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(389)

Side by Side Diff: fusl/src/multibyte/mbrtoc16.c

Issue 1714623002: [fusl] clang-format fusl (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: headers too Created 4 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 #include <uchar.h> 1 #include <uchar.h>
2 #include <wchar.h> 2 #include <wchar.h>
3 3
4 size_t mbrtoc16(char16_t *restrict pc16, const char *restrict s, size_t n, mbsta te_t *restrict ps) 4 size_t mbrtoc16(char16_t* restrict pc16,
5 { 5 const char* restrict s,
6 » static unsigned internal_state; 6 size_t n,
7 » if (!ps) ps = (void *)&internal_state; 7 mbstate_t* restrict ps) {
8 » unsigned *pending = (unsigned *)ps; 8 static unsigned internal_state;
9 if (!ps)
10 ps = (void*)&internal_state;
11 unsigned* pending = (unsigned*)ps;
9 12
10 » if (!s) return mbrtoc16(0, "", 1, ps); 13 if (!s)
14 return mbrtoc16(0, "", 1, ps);
11 15
12 » /* mbrtowc states for partial UTF-8 characters have the high bit set; 16 /* mbrtowc states for partial UTF-8 characters have the high bit set;
13 » * we use nonzero states without high bit for pending surrogates. */ 17 * we use nonzero states without high bit for pending surrogates. */
14 » if ((int)*pending > 0) { 18 if ((int)*pending > 0) {
15 » » if (pc16) *pc16 = *pending; 19 if (pc16)
16 » » *pending = 0; 20 *pc16 = *pending;
17 » » return -3; 21 *pending = 0;
18 » } 22 return -3;
23 }
19 24
20 » wchar_t wc; 25 wchar_t wc;
21 » size_t ret = mbrtowc(&wc, s, n, ps); 26 size_t ret = mbrtowc(&wc, s, n, ps);
22 » if (ret <= 4) { 27 if (ret <= 4) {
23 » » if (wc >= 0x10000) { 28 if (wc >= 0x10000) {
24 » » » *pending = (wc & 0x3ff) + 0xdc00; 29 *pending = (wc & 0x3ff) + 0xdc00;
25 » » » wc = 0xd7c0 + (wc >> 10); 30 wc = 0xd7c0 + (wc >> 10);
26 » » } 31 }
27 » » if (pc16) *pc16 = wc; 32 if (pc16)
28 » } 33 *pc16 = wc;
29 » return ret; 34 }
35 return ret;
30 } 36 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698