1#include <uchar.h> 2#include <wchar.h> 3 4size_t mbrtoc32(char32_t* restrict pc32, const char* restrict s, size_t n, mbstate_t* restrict ps) { 5 static unsigned internal_state; 6 if (!ps) 7 ps = (void*)&internal_state; 8 if (!s) 9 return mbrtoc32(0, "", 1, ps); 10 wchar_t wc; 11 size_t ret = mbrtowc(&wc, s, n, ps); 12 if (ret <= 4 && pc32) 13 *pc32 = wc; 14 return ret; 15} 16