#include <uchar.h> | |
#include <wchar.h> | |
size_t mbrtoc32(char32_t* restrict pc32, | |
const char* restrict s, | |
size_t n, | |
mbstate_t* restrict ps) { | |
static unsigned internal_state; | |
if (!ps) | |
ps = (void*)&internal_state; | |
if (!s) | |
return mbrtoc32(0, "", 1, ps); | |
wchar_t wc; | |
size_t ret = mbrtowc(&wc, s, n, ps); | |
if (ret <= 4 && pc32) | |
*pc32 = wc; | |
return ret; | |
} |