mirror of
https://github.com/postgres/postgres.git
synced 2025-11-19 13:42:17 +03:00
Use C11 char16_t and char32_t for Unicode code points.
Reviewed-by: Tatsuo Ishii <ishii@postgresql.org> Reviewed-by: Thomas Munro <thomas.munro@gmail.com> Reviewed-by: Peter Eisentraut <peter@eisentraut.org> Discussion: https://postgr.es/m/bedcc93d06203dfd89815b10f815ca2de8626e85.camel%40j-davis.com
This commit is contained in:
@@ -49,20 +49,20 @@ pg_get_utf8_id(void)
|
||||
*
|
||||
* No error checks here, c must point to a long-enough string.
|
||||
*/
|
||||
static pg_wchar
|
||||
static char32_t
|
||||
utf8_to_unicode(const unsigned char *c)
|
||||
{
|
||||
if ((*c & 0x80) == 0)
|
||||
return (pg_wchar) c[0];
|
||||
return (char32_t) c[0];
|
||||
else if ((*c & 0xe0) == 0xc0)
|
||||
return (pg_wchar) (((c[0] & 0x1f) << 6) |
|
||||
return (char32_t) (((c[0] & 0x1f) << 6) |
|
||||
(c[1] & 0x3f));
|
||||
else if ((*c & 0xf0) == 0xe0)
|
||||
return (pg_wchar) (((c[0] & 0x0f) << 12) |
|
||||
return (char32_t) (((c[0] & 0x0f) << 12) |
|
||||
((c[1] & 0x3f) << 6) |
|
||||
(c[2] & 0x3f));
|
||||
else if ((*c & 0xf8) == 0xf0)
|
||||
return (pg_wchar) (((c[0] & 0x07) << 18) |
|
||||
return (char32_t) (((c[0] & 0x07) << 18) |
|
||||
((c[1] & 0x3f) << 12) |
|
||||
((c[2] & 0x3f) << 6) |
|
||||
(c[3] & 0x3f));
|
||||
|
||||
Reference in New Issue
Block a user