mirror of
https://github.com/postgres/postgres.git
synced 2025-11-24 00:23:06 +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:
@@ -339,7 +339,7 @@ hexval(unsigned char c)
|
||||
|
||||
/* is Unicode code point acceptable? */
|
||||
static void
|
||||
check_unicode_value(pg_wchar c)
|
||||
check_unicode_value(char32_t c)
|
||||
{
|
||||
if (!is_valid_unicode_codepoint(c))
|
||||
ereport(ERROR,
|
||||
@@ -376,7 +376,7 @@ str_udeescape(const char *str, char escape,
|
||||
char *new,
|
||||
*out;
|
||||
size_t new_len;
|
||||
pg_wchar pair_first = 0;
|
||||
char16_t pair_first = 0;
|
||||
ScannerCallbackState scbstate;
|
||||
|
||||
/*
|
||||
@@ -420,7 +420,7 @@ str_udeescape(const char *str, char escape,
|
||||
isxdigit((unsigned char) in[3]) &&
|
||||
isxdigit((unsigned char) in[4]))
|
||||
{
|
||||
pg_wchar unicode;
|
||||
char32_t unicode;
|
||||
|
||||
unicode = (hexval(in[1]) << 12) +
|
||||
(hexval(in[2]) << 8) +
|
||||
@@ -457,7 +457,7 @@ str_udeescape(const char *str, char escape,
|
||||
isxdigit((unsigned char) in[6]) &&
|
||||
isxdigit((unsigned char) in[7]))
|
||||
{
|
||||
pg_wchar unicode;
|
||||
char32_t unicode;
|
||||
|
||||
unicode = (hexval(in[2]) << 20) +
|
||||
(hexval(in[3]) << 16) +
|
||||
|
||||
@@ -121,7 +121,7 @@ static void addlitchar(unsigned char ychar, core_yyscan_t yyscanner);
|
||||
static char *litbufdup(core_yyscan_t yyscanner);
|
||||
static unsigned char unescape_single_char(unsigned char c, core_yyscan_t yyscanner);
|
||||
static int process_integer_literal(const char *token, YYSTYPE *lval, int base);
|
||||
static void addunicode(pg_wchar c, yyscan_t yyscanner);
|
||||
static void addunicode(char32_t c, yyscan_t yyscanner);
|
||||
|
||||
#define yyerror(msg) scanner_yyerror(msg, yyscanner)
|
||||
|
||||
@@ -640,7 +640,7 @@ other .
|
||||
addlit(yytext, yyleng, yyscanner);
|
||||
}
|
||||
<xe>{xeunicode} {
|
||||
pg_wchar c = strtoul(yytext + 2, NULL, 16);
|
||||
char32_t c = strtoul(yytext + 2, NULL, 16);
|
||||
|
||||
/*
|
||||
* For consistency with other productions, issue any
|
||||
@@ -668,7 +668,7 @@ other .
|
||||
POP_YYLLOC();
|
||||
}
|
||||
<xeu>{xeunicode} {
|
||||
pg_wchar c = strtoul(yytext + 2, NULL, 16);
|
||||
char32_t c = strtoul(yytext + 2, NULL, 16);
|
||||
|
||||
/* Remember start of overall string token ... */
|
||||
PUSH_YYLLOC();
|
||||
@@ -1376,7 +1376,7 @@ process_integer_literal(const char *token, YYSTYPE *lval, int base)
|
||||
}
|
||||
|
||||
static void
|
||||
addunicode(pg_wchar c, core_yyscan_t yyscanner)
|
||||
addunicode(char32_t c, core_yyscan_t yyscanner)
|
||||
{
|
||||
ScannerCallbackState scbstate;
|
||||
char buf[MAX_UNICODE_EQUIVALENT_STRING + 1];
|
||||
|
||||
Reference in New Issue
Block a user