mirror of
https://github.com/postgres/postgres.git
synced 2025-07-07 00:36:50 +03:00
Rename enum labels of PG_Locale_Strategy
PG_REGEX_BUILTIN was added in f69319f2f1
but it did not follow the
same pattern as the previous labels, i.e. PG_LOCALE_*. In addition to
this, the two libc strategies did not include in the name that they were
related to this library.
The enum labels are renamed as PG_STRATEGY_type[_subtype] to make the
code clearer, in accordance to the library and the functions they rely
on.
Author: Andreas Karlsson
Discussion: https://postgr.es/m/6f81200f-68fd-411e-97a1-d1f291d2e222@proxel.se
This commit is contained in:
@ -65,11 +65,11 @@
|
|||||||
|
|
||||||
typedef enum
|
typedef enum
|
||||||
{
|
{
|
||||||
PG_REGEX_LOCALE_C, /* C locale (encoding independent) */
|
PG_REGEX_STRATEGY_C, /* C locale (encoding independent) */
|
||||||
PG_REGEX_BUILTIN, /* built-in Unicode semantics */
|
PG_REGEX_STRATEGY_BUILTIN, /* built-in Unicode semantics */
|
||||||
PG_REGEX_LOCALE_WIDE_L, /* Use locale_t <wctype.h> functions */
|
PG_REGEX_STRATEGY_LIBC_WIDE, /* Use locale_t <wctype.h> functions */
|
||||||
PG_REGEX_LOCALE_1BYTE_L, /* Use locale_t <ctype.h> functions */
|
PG_REGEX_STRATEGY_LIBC_1BYTE, /* Use locale_t <ctype.h> functions */
|
||||||
PG_REGEX_LOCALE_ICU, /* Use ICU uchar.h functions */
|
PG_REGEX_STRATEGY_ICU, /* Use ICU uchar.h functions */
|
||||||
} PG_Locale_Strategy;
|
} PG_Locale_Strategy;
|
||||||
|
|
||||||
static PG_Locale_Strategy pg_regex_strategy;
|
static PG_Locale_Strategy pg_regex_strategy;
|
||||||
@ -246,7 +246,7 @@ pg_set_regex_collation(Oid collation)
|
|||||||
if (lc_ctype_is_c(collation))
|
if (lc_ctype_is_c(collation))
|
||||||
{
|
{
|
||||||
/* C/POSIX collations use this path regardless of database encoding */
|
/* C/POSIX collations use this path regardless of database encoding */
|
||||||
pg_regex_strategy = PG_REGEX_LOCALE_C;
|
pg_regex_strategy = PG_REGEX_STRATEGY_C;
|
||||||
pg_regex_locale = 0;
|
pg_regex_locale = 0;
|
||||||
pg_regex_collation = C_COLLATION_OID;
|
pg_regex_collation = C_COLLATION_OID;
|
||||||
}
|
}
|
||||||
@ -262,20 +262,20 @@ pg_set_regex_collation(Oid collation)
|
|||||||
if (pg_regex_locale->provider == COLLPROVIDER_BUILTIN)
|
if (pg_regex_locale->provider == COLLPROVIDER_BUILTIN)
|
||||||
{
|
{
|
||||||
Assert(GetDatabaseEncoding() == PG_UTF8);
|
Assert(GetDatabaseEncoding() == PG_UTF8);
|
||||||
pg_regex_strategy = PG_REGEX_BUILTIN;
|
pg_regex_strategy = PG_REGEX_STRATEGY_BUILTIN;
|
||||||
}
|
}
|
||||||
#ifdef USE_ICU
|
#ifdef USE_ICU
|
||||||
else if (pg_regex_locale->provider == COLLPROVIDER_ICU)
|
else if (pg_regex_locale->provider == COLLPROVIDER_ICU)
|
||||||
{
|
{
|
||||||
pg_regex_strategy = PG_REGEX_LOCALE_ICU;
|
pg_regex_strategy = PG_REGEX_STRATEGY_ICU;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (GetDatabaseEncoding() == PG_UTF8)
|
if (GetDatabaseEncoding() == PG_UTF8)
|
||||||
pg_regex_strategy = PG_REGEX_LOCALE_WIDE_L;
|
pg_regex_strategy = PG_REGEX_STRATEGY_LIBC_WIDE;
|
||||||
else
|
else
|
||||||
pg_regex_strategy = PG_REGEX_LOCALE_1BYTE_L;
|
pg_regex_strategy = PG_REGEX_STRATEGY_LIBC_1BYTE;
|
||||||
}
|
}
|
||||||
|
|
||||||
pg_regex_collation = collation;
|
pg_regex_collation = collation;
|
||||||
@ -287,20 +287,20 @@ pg_wc_isdigit(pg_wchar c)
|
|||||||
{
|
{
|
||||||
switch (pg_regex_strategy)
|
switch (pg_regex_strategy)
|
||||||
{
|
{
|
||||||
case PG_REGEX_LOCALE_C:
|
case PG_REGEX_STRATEGY_C:
|
||||||
return (c <= (pg_wchar) 127 &&
|
return (c <= (pg_wchar) 127 &&
|
||||||
(pg_char_properties[c] & PG_ISDIGIT));
|
(pg_char_properties[c] & PG_ISDIGIT));
|
||||||
case PG_REGEX_BUILTIN:
|
case PG_REGEX_STRATEGY_BUILTIN:
|
||||||
return pg_u_isdigit(c, true);
|
return pg_u_isdigit(c, true);
|
||||||
case PG_REGEX_LOCALE_WIDE_L:
|
case PG_REGEX_STRATEGY_LIBC_WIDE:
|
||||||
if (sizeof(wchar_t) >= 4 || c <= (pg_wchar) 0xFFFF)
|
if (sizeof(wchar_t) >= 4 || c <= (pg_wchar) 0xFFFF)
|
||||||
return iswdigit_l((wint_t) c, pg_regex_locale->info.lt);
|
return iswdigit_l((wint_t) c, pg_regex_locale->info.lt);
|
||||||
/* FALL THRU */
|
/* FALL THRU */
|
||||||
case PG_REGEX_LOCALE_1BYTE_L:
|
case PG_REGEX_STRATEGY_LIBC_1BYTE:
|
||||||
return (c <= (pg_wchar) UCHAR_MAX &&
|
return (c <= (pg_wchar) UCHAR_MAX &&
|
||||||
isdigit_l((unsigned char) c, pg_regex_locale->info.lt));
|
isdigit_l((unsigned char) c, pg_regex_locale->info.lt));
|
||||||
break;
|
break;
|
||||||
case PG_REGEX_LOCALE_ICU:
|
case PG_REGEX_STRATEGY_ICU:
|
||||||
#ifdef USE_ICU
|
#ifdef USE_ICU
|
||||||
return u_isdigit(c);
|
return u_isdigit(c);
|
||||||
#endif
|
#endif
|
||||||
@ -314,20 +314,20 @@ pg_wc_isalpha(pg_wchar c)
|
|||||||
{
|
{
|
||||||
switch (pg_regex_strategy)
|
switch (pg_regex_strategy)
|
||||||
{
|
{
|
||||||
case PG_REGEX_LOCALE_C:
|
case PG_REGEX_STRATEGY_C:
|
||||||
return (c <= (pg_wchar) 127 &&
|
return (c <= (pg_wchar) 127 &&
|
||||||
(pg_char_properties[c] & PG_ISALPHA));
|
(pg_char_properties[c] & PG_ISALPHA));
|
||||||
case PG_REGEX_BUILTIN:
|
case PG_REGEX_STRATEGY_BUILTIN:
|
||||||
return pg_u_isalpha(c);
|
return pg_u_isalpha(c);
|
||||||
case PG_REGEX_LOCALE_WIDE_L:
|
case PG_REGEX_STRATEGY_LIBC_WIDE:
|
||||||
if (sizeof(wchar_t) >= 4 || c <= (pg_wchar) 0xFFFF)
|
if (sizeof(wchar_t) >= 4 || c <= (pg_wchar) 0xFFFF)
|
||||||
return iswalpha_l((wint_t) c, pg_regex_locale->info.lt);
|
return iswalpha_l((wint_t) c, pg_regex_locale->info.lt);
|
||||||
/* FALL THRU */
|
/* FALL THRU */
|
||||||
case PG_REGEX_LOCALE_1BYTE_L:
|
case PG_REGEX_STRATEGY_LIBC_1BYTE:
|
||||||
return (c <= (pg_wchar) UCHAR_MAX &&
|
return (c <= (pg_wchar) UCHAR_MAX &&
|
||||||
isalpha_l((unsigned char) c, pg_regex_locale->info.lt));
|
isalpha_l((unsigned char) c, pg_regex_locale->info.lt));
|
||||||
break;
|
break;
|
||||||
case PG_REGEX_LOCALE_ICU:
|
case PG_REGEX_STRATEGY_ICU:
|
||||||
#ifdef USE_ICU
|
#ifdef USE_ICU
|
||||||
return u_isalpha(c);
|
return u_isalpha(c);
|
||||||
#endif
|
#endif
|
||||||
@ -341,20 +341,20 @@ pg_wc_isalnum(pg_wchar c)
|
|||||||
{
|
{
|
||||||
switch (pg_regex_strategy)
|
switch (pg_regex_strategy)
|
||||||
{
|
{
|
||||||
case PG_REGEX_LOCALE_C:
|
case PG_REGEX_STRATEGY_C:
|
||||||
return (c <= (pg_wchar) 127 &&
|
return (c <= (pg_wchar) 127 &&
|
||||||
(pg_char_properties[c] & PG_ISALNUM));
|
(pg_char_properties[c] & PG_ISALNUM));
|
||||||
case PG_REGEX_BUILTIN:
|
case PG_REGEX_STRATEGY_BUILTIN:
|
||||||
return pg_u_isalnum(c, true);
|
return pg_u_isalnum(c, true);
|
||||||
case PG_REGEX_LOCALE_WIDE_L:
|
case PG_REGEX_STRATEGY_LIBC_WIDE:
|
||||||
if (sizeof(wchar_t) >= 4 || c <= (pg_wchar) 0xFFFF)
|
if (sizeof(wchar_t) >= 4 || c <= (pg_wchar) 0xFFFF)
|
||||||
return iswalnum_l((wint_t) c, pg_regex_locale->info.lt);
|
return iswalnum_l((wint_t) c, pg_regex_locale->info.lt);
|
||||||
/* FALL THRU */
|
/* FALL THRU */
|
||||||
case PG_REGEX_LOCALE_1BYTE_L:
|
case PG_REGEX_STRATEGY_LIBC_1BYTE:
|
||||||
return (c <= (pg_wchar) UCHAR_MAX &&
|
return (c <= (pg_wchar) UCHAR_MAX &&
|
||||||
isalnum_l((unsigned char) c, pg_regex_locale->info.lt));
|
isalnum_l((unsigned char) c, pg_regex_locale->info.lt));
|
||||||
break;
|
break;
|
||||||
case PG_REGEX_LOCALE_ICU:
|
case PG_REGEX_STRATEGY_ICU:
|
||||||
#ifdef USE_ICU
|
#ifdef USE_ICU
|
||||||
return u_isalnum(c);
|
return u_isalnum(c);
|
||||||
#endif
|
#endif
|
||||||
@ -377,20 +377,20 @@ pg_wc_isupper(pg_wchar c)
|
|||||||
{
|
{
|
||||||
switch (pg_regex_strategy)
|
switch (pg_regex_strategy)
|
||||||
{
|
{
|
||||||
case PG_REGEX_LOCALE_C:
|
case PG_REGEX_STRATEGY_C:
|
||||||
return (c <= (pg_wchar) 127 &&
|
return (c <= (pg_wchar) 127 &&
|
||||||
(pg_char_properties[c] & PG_ISUPPER));
|
(pg_char_properties[c] & PG_ISUPPER));
|
||||||
case PG_REGEX_BUILTIN:
|
case PG_REGEX_STRATEGY_BUILTIN:
|
||||||
return pg_u_isupper(c);
|
return pg_u_isupper(c);
|
||||||
case PG_REGEX_LOCALE_WIDE_L:
|
case PG_REGEX_STRATEGY_LIBC_WIDE:
|
||||||
if (sizeof(wchar_t) >= 4 || c <= (pg_wchar) 0xFFFF)
|
if (sizeof(wchar_t) >= 4 || c <= (pg_wchar) 0xFFFF)
|
||||||
return iswupper_l((wint_t) c, pg_regex_locale->info.lt);
|
return iswupper_l((wint_t) c, pg_regex_locale->info.lt);
|
||||||
/* FALL THRU */
|
/* FALL THRU */
|
||||||
case PG_REGEX_LOCALE_1BYTE_L:
|
case PG_REGEX_STRATEGY_LIBC_1BYTE:
|
||||||
return (c <= (pg_wchar) UCHAR_MAX &&
|
return (c <= (pg_wchar) UCHAR_MAX &&
|
||||||
isupper_l((unsigned char) c, pg_regex_locale->info.lt));
|
isupper_l((unsigned char) c, pg_regex_locale->info.lt));
|
||||||
break;
|
break;
|
||||||
case PG_REGEX_LOCALE_ICU:
|
case PG_REGEX_STRATEGY_ICU:
|
||||||
#ifdef USE_ICU
|
#ifdef USE_ICU
|
||||||
return u_isupper(c);
|
return u_isupper(c);
|
||||||
#endif
|
#endif
|
||||||
@ -404,20 +404,20 @@ pg_wc_islower(pg_wchar c)
|
|||||||
{
|
{
|
||||||
switch (pg_regex_strategy)
|
switch (pg_regex_strategy)
|
||||||
{
|
{
|
||||||
case PG_REGEX_LOCALE_C:
|
case PG_REGEX_STRATEGY_C:
|
||||||
return (c <= (pg_wchar) 127 &&
|
return (c <= (pg_wchar) 127 &&
|
||||||
(pg_char_properties[c] & PG_ISLOWER));
|
(pg_char_properties[c] & PG_ISLOWER));
|
||||||
case PG_REGEX_BUILTIN:
|
case PG_REGEX_STRATEGY_BUILTIN:
|
||||||
return pg_u_islower(c);
|
return pg_u_islower(c);
|
||||||
case PG_REGEX_LOCALE_WIDE_L:
|
case PG_REGEX_STRATEGY_LIBC_WIDE:
|
||||||
if (sizeof(wchar_t) >= 4 || c <= (pg_wchar) 0xFFFF)
|
if (sizeof(wchar_t) >= 4 || c <= (pg_wchar) 0xFFFF)
|
||||||
return iswlower_l((wint_t) c, pg_regex_locale->info.lt);
|
return iswlower_l((wint_t) c, pg_regex_locale->info.lt);
|
||||||
/* FALL THRU */
|
/* FALL THRU */
|
||||||
case PG_REGEX_LOCALE_1BYTE_L:
|
case PG_REGEX_STRATEGY_LIBC_1BYTE:
|
||||||
return (c <= (pg_wchar) UCHAR_MAX &&
|
return (c <= (pg_wchar) UCHAR_MAX &&
|
||||||
islower_l((unsigned char) c, pg_regex_locale->info.lt));
|
islower_l((unsigned char) c, pg_regex_locale->info.lt));
|
||||||
break;
|
break;
|
||||||
case PG_REGEX_LOCALE_ICU:
|
case PG_REGEX_STRATEGY_ICU:
|
||||||
#ifdef USE_ICU
|
#ifdef USE_ICU
|
||||||
return u_islower(c);
|
return u_islower(c);
|
||||||
#endif
|
#endif
|
||||||
@ -431,20 +431,20 @@ pg_wc_isgraph(pg_wchar c)
|
|||||||
{
|
{
|
||||||
switch (pg_regex_strategy)
|
switch (pg_regex_strategy)
|
||||||
{
|
{
|
||||||
case PG_REGEX_LOCALE_C:
|
case PG_REGEX_STRATEGY_C:
|
||||||
return (c <= (pg_wchar) 127 &&
|
return (c <= (pg_wchar) 127 &&
|
||||||
(pg_char_properties[c] & PG_ISGRAPH));
|
(pg_char_properties[c] & PG_ISGRAPH));
|
||||||
case PG_REGEX_BUILTIN:
|
case PG_REGEX_STRATEGY_BUILTIN:
|
||||||
return pg_u_isgraph(c);
|
return pg_u_isgraph(c);
|
||||||
case PG_REGEX_LOCALE_WIDE_L:
|
case PG_REGEX_STRATEGY_LIBC_WIDE:
|
||||||
if (sizeof(wchar_t) >= 4 || c <= (pg_wchar) 0xFFFF)
|
if (sizeof(wchar_t) >= 4 || c <= (pg_wchar) 0xFFFF)
|
||||||
return iswgraph_l((wint_t) c, pg_regex_locale->info.lt);
|
return iswgraph_l((wint_t) c, pg_regex_locale->info.lt);
|
||||||
/* FALL THRU */
|
/* FALL THRU */
|
||||||
case PG_REGEX_LOCALE_1BYTE_L:
|
case PG_REGEX_STRATEGY_LIBC_1BYTE:
|
||||||
return (c <= (pg_wchar) UCHAR_MAX &&
|
return (c <= (pg_wchar) UCHAR_MAX &&
|
||||||
isgraph_l((unsigned char) c, pg_regex_locale->info.lt));
|
isgraph_l((unsigned char) c, pg_regex_locale->info.lt));
|
||||||
break;
|
break;
|
||||||
case PG_REGEX_LOCALE_ICU:
|
case PG_REGEX_STRATEGY_ICU:
|
||||||
#ifdef USE_ICU
|
#ifdef USE_ICU
|
||||||
return u_isgraph(c);
|
return u_isgraph(c);
|
||||||
#endif
|
#endif
|
||||||
@ -458,20 +458,20 @@ pg_wc_isprint(pg_wchar c)
|
|||||||
{
|
{
|
||||||
switch (pg_regex_strategy)
|
switch (pg_regex_strategy)
|
||||||
{
|
{
|
||||||
case PG_REGEX_LOCALE_C:
|
case PG_REGEX_STRATEGY_C:
|
||||||
return (c <= (pg_wchar) 127 &&
|
return (c <= (pg_wchar) 127 &&
|
||||||
(pg_char_properties[c] & PG_ISPRINT));
|
(pg_char_properties[c] & PG_ISPRINT));
|
||||||
case PG_REGEX_BUILTIN:
|
case PG_REGEX_STRATEGY_BUILTIN:
|
||||||
return pg_u_isprint(c);
|
return pg_u_isprint(c);
|
||||||
case PG_REGEX_LOCALE_WIDE_L:
|
case PG_REGEX_STRATEGY_LIBC_WIDE:
|
||||||
if (sizeof(wchar_t) >= 4 || c <= (pg_wchar) 0xFFFF)
|
if (sizeof(wchar_t) >= 4 || c <= (pg_wchar) 0xFFFF)
|
||||||
return iswprint_l((wint_t) c, pg_regex_locale->info.lt);
|
return iswprint_l((wint_t) c, pg_regex_locale->info.lt);
|
||||||
/* FALL THRU */
|
/* FALL THRU */
|
||||||
case PG_REGEX_LOCALE_1BYTE_L:
|
case PG_REGEX_STRATEGY_LIBC_1BYTE:
|
||||||
return (c <= (pg_wchar) UCHAR_MAX &&
|
return (c <= (pg_wchar) UCHAR_MAX &&
|
||||||
isprint_l((unsigned char) c, pg_regex_locale->info.lt));
|
isprint_l((unsigned char) c, pg_regex_locale->info.lt));
|
||||||
break;
|
break;
|
||||||
case PG_REGEX_LOCALE_ICU:
|
case PG_REGEX_STRATEGY_ICU:
|
||||||
#ifdef USE_ICU
|
#ifdef USE_ICU
|
||||||
return u_isprint(c);
|
return u_isprint(c);
|
||||||
#endif
|
#endif
|
||||||
@ -485,20 +485,20 @@ pg_wc_ispunct(pg_wchar c)
|
|||||||
{
|
{
|
||||||
switch (pg_regex_strategy)
|
switch (pg_regex_strategy)
|
||||||
{
|
{
|
||||||
case PG_REGEX_LOCALE_C:
|
case PG_REGEX_STRATEGY_C:
|
||||||
return (c <= (pg_wchar) 127 &&
|
return (c <= (pg_wchar) 127 &&
|
||||||
(pg_char_properties[c] & PG_ISPUNCT));
|
(pg_char_properties[c] & PG_ISPUNCT));
|
||||||
case PG_REGEX_BUILTIN:
|
case PG_REGEX_STRATEGY_BUILTIN:
|
||||||
return pg_u_ispunct(c, true);
|
return pg_u_ispunct(c, true);
|
||||||
case PG_REGEX_LOCALE_WIDE_L:
|
case PG_REGEX_STRATEGY_LIBC_WIDE:
|
||||||
if (sizeof(wchar_t) >= 4 || c <= (pg_wchar) 0xFFFF)
|
if (sizeof(wchar_t) >= 4 || c <= (pg_wchar) 0xFFFF)
|
||||||
return iswpunct_l((wint_t) c, pg_regex_locale->info.lt);
|
return iswpunct_l((wint_t) c, pg_regex_locale->info.lt);
|
||||||
/* FALL THRU */
|
/* FALL THRU */
|
||||||
case PG_REGEX_LOCALE_1BYTE_L:
|
case PG_REGEX_STRATEGY_LIBC_1BYTE:
|
||||||
return (c <= (pg_wchar) UCHAR_MAX &&
|
return (c <= (pg_wchar) UCHAR_MAX &&
|
||||||
ispunct_l((unsigned char) c, pg_regex_locale->info.lt));
|
ispunct_l((unsigned char) c, pg_regex_locale->info.lt));
|
||||||
break;
|
break;
|
||||||
case PG_REGEX_LOCALE_ICU:
|
case PG_REGEX_STRATEGY_ICU:
|
||||||
#ifdef USE_ICU
|
#ifdef USE_ICU
|
||||||
return u_ispunct(c);
|
return u_ispunct(c);
|
||||||
#endif
|
#endif
|
||||||
@ -512,20 +512,20 @@ pg_wc_isspace(pg_wchar c)
|
|||||||
{
|
{
|
||||||
switch (pg_regex_strategy)
|
switch (pg_regex_strategy)
|
||||||
{
|
{
|
||||||
case PG_REGEX_LOCALE_C:
|
case PG_REGEX_STRATEGY_C:
|
||||||
return (c <= (pg_wchar) 127 &&
|
return (c <= (pg_wchar) 127 &&
|
||||||
(pg_char_properties[c] & PG_ISSPACE));
|
(pg_char_properties[c] & PG_ISSPACE));
|
||||||
case PG_REGEX_BUILTIN:
|
case PG_REGEX_STRATEGY_BUILTIN:
|
||||||
return pg_u_isspace(c);
|
return pg_u_isspace(c);
|
||||||
case PG_REGEX_LOCALE_WIDE_L:
|
case PG_REGEX_STRATEGY_LIBC_WIDE:
|
||||||
if (sizeof(wchar_t) >= 4 || c <= (pg_wchar) 0xFFFF)
|
if (sizeof(wchar_t) >= 4 || c <= (pg_wchar) 0xFFFF)
|
||||||
return iswspace_l((wint_t) c, pg_regex_locale->info.lt);
|
return iswspace_l((wint_t) c, pg_regex_locale->info.lt);
|
||||||
/* FALL THRU */
|
/* FALL THRU */
|
||||||
case PG_REGEX_LOCALE_1BYTE_L:
|
case PG_REGEX_STRATEGY_LIBC_1BYTE:
|
||||||
return (c <= (pg_wchar) UCHAR_MAX &&
|
return (c <= (pg_wchar) UCHAR_MAX &&
|
||||||
isspace_l((unsigned char) c, pg_regex_locale->info.lt));
|
isspace_l((unsigned char) c, pg_regex_locale->info.lt));
|
||||||
break;
|
break;
|
||||||
case PG_REGEX_LOCALE_ICU:
|
case PG_REGEX_STRATEGY_ICU:
|
||||||
#ifdef USE_ICU
|
#ifdef USE_ICU
|
||||||
return u_isspace(c);
|
return u_isspace(c);
|
||||||
#endif
|
#endif
|
||||||
@ -539,21 +539,21 @@ pg_wc_toupper(pg_wchar c)
|
|||||||
{
|
{
|
||||||
switch (pg_regex_strategy)
|
switch (pg_regex_strategy)
|
||||||
{
|
{
|
||||||
case PG_REGEX_LOCALE_C:
|
case PG_REGEX_STRATEGY_C:
|
||||||
if (c <= (pg_wchar) 127)
|
if (c <= (pg_wchar) 127)
|
||||||
return pg_ascii_toupper((unsigned char) c);
|
return pg_ascii_toupper((unsigned char) c);
|
||||||
return c;
|
return c;
|
||||||
case PG_REGEX_BUILTIN:
|
case PG_REGEX_STRATEGY_BUILTIN:
|
||||||
return unicode_uppercase_simple(c);
|
return unicode_uppercase_simple(c);
|
||||||
case PG_REGEX_LOCALE_WIDE_L:
|
case PG_REGEX_STRATEGY_LIBC_WIDE:
|
||||||
if (sizeof(wchar_t) >= 4 || c <= (pg_wchar) 0xFFFF)
|
if (sizeof(wchar_t) >= 4 || c <= (pg_wchar) 0xFFFF)
|
||||||
return towupper_l((wint_t) c, pg_regex_locale->info.lt);
|
return towupper_l((wint_t) c, pg_regex_locale->info.lt);
|
||||||
/* FALL THRU */
|
/* FALL THRU */
|
||||||
case PG_REGEX_LOCALE_1BYTE_L:
|
case PG_REGEX_STRATEGY_LIBC_1BYTE:
|
||||||
if (c <= (pg_wchar) UCHAR_MAX)
|
if (c <= (pg_wchar) UCHAR_MAX)
|
||||||
return toupper_l((unsigned char) c, pg_regex_locale->info.lt);
|
return toupper_l((unsigned char) c, pg_regex_locale->info.lt);
|
||||||
return c;
|
return c;
|
||||||
case PG_REGEX_LOCALE_ICU:
|
case PG_REGEX_STRATEGY_ICU:
|
||||||
#ifdef USE_ICU
|
#ifdef USE_ICU
|
||||||
return u_toupper(c);
|
return u_toupper(c);
|
||||||
#endif
|
#endif
|
||||||
@ -567,21 +567,21 @@ pg_wc_tolower(pg_wchar c)
|
|||||||
{
|
{
|
||||||
switch (pg_regex_strategy)
|
switch (pg_regex_strategy)
|
||||||
{
|
{
|
||||||
case PG_REGEX_LOCALE_C:
|
case PG_REGEX_STRATEGY_C:
|
||||||
if (c <= (pg_wchar) 127)
|
if (c <= (pg_wchar) 127)
|
||||||
return pg_ascii_tolower((unsigned char) c);
|
return pg_ascii_tolower((unsigned char) c);
|
||||||
return c;
|
return c;
|
||||||
case PG_REGEX_BUILTIN:
|
case PG_REGEX_STRATEGY_BUILTIN:
|
||||||
return unicode_lowercase_simple(c);
|
return unicode_lowercase_simple(c);
|
||||||
case PG_REGEX_LOCALE_WIDE_L:
|
case PG_REGEX_STRATEGY_LIBC_WIDE:
|
||||||
if (sizeof(wchar_t) >= 4 || c <= (pg_wchar) 0xFFFF)
|
if (sizeof(wchar_t) >= 4 || c <= (pg_wchar) 0xFFFF)
|
||||||
return towlower_l((wint_t) c, pg_regex_locale->info.lt);
|
return towlower_l((wint_t) c, pg_regex_locale->info.lt);
|
||||||
/* FALL THRU */
|
/* FALL THRU */
|
||||||
case PG_REGEX_LOCALE_1BYTE_L:
|
case PG_REGEX_STRATEGY_LIBC_1BYTE:
|
||||||
if (c <= (pg_wchar) UCHAR_MAX)
|
if (c <= (pg_wchar) UCHAR_MAX)
|
||||||
return tolower_l((unsigned char) c, pg_regex_locale->info.lt);
|
return tolower_l((unsigned char) c, pg_regex_locale->info.lt);
|
||||||
return c;
|
return c;
|
||||||
case PG_REGEX_LOCALE_ICU:
|
case PG_REGEX_STRATEGY_ICU:
|
||||||
#ifdef USE_ICU
|
#ifdef USE_ICU
|
||||||
return u_tolower(c);
|
return u_tolower(c);
|
||||||
#endif
|
#endif
|
||||||
@ -715,7 +715,7 @@ pg_ctype_get_cache(pg_wc_probefunc probefunc, int cclasscode)
|
|||||||
*/
|
*/
|
||||||
switch (pg_regex_strategy)
|
switch (pg_regex_strategy)
|
||||||
{
|
{
|
||||||
case PG_REGEX_LOCALE_C:
|
case PG_REGEX_STRATEGY_C:
|
||||||
#if MAX_SIMPLE_CHR >= 127
|
#if MAX_SIMPLE_CHR >= 127
|
||||||
max_chr = (pg_wchar) 127;
|
max_chr = (pg_wchar) 127;
|
||||||
pcc->cv.cclasscode = -1;
|
pcc->cv.cclasscode = -1;
|
||||||
@ -723,13 +723,13 @@ pg_ctype_get_cache(pg_wc_probefunc probefunc, int cclasscode)
|
|||||||
max_chr = (pg_wchar) MAX_SIMPLE_CHR;
|
max_chr = (pg_wchar) MAX_SIMPLE_CHR;
|
||||||
#endif
|
#endif
|
||||||
break;
|
break;
|
||||||
case PG_REGEX_BUILTIN:
|
case PG_REGEX_STRATEGY_BUILTIN:
|
||||||
max_chr = (pg_wchar) MAX_SIMPLE_CHR;
|
max_chr = (pg_wchar) MAX_SIMPLE_CHR;
|
||||||
break;
|
break;
|
||||||
case PG_REGEX_LOCALE_WIDE_L:
|
case PG_REGEX_STRATEGY_LIBC_WIDE:
|
||||||
max_chr = (pg_wchar) MAX_SIMPLE_CHR;
|
max_chr = (pg_wchar) MAX_SIMPLE_CHR;
|
||||||
break;
|
break;
|
||||||
case PG_REGEX_LOCALE_1BYTE_L:
|
case PG_REGEX_STRATEGY_LIBC_1BYTE:
|
||||||
#if MAX_SIMPLE_CHR >= UCHAR_MAX
|
#if MAX_SIMPLE_CHR >= UCHAR_MAX
|
||||||
max_chr = (pg_wchar) UCHAR_MAX;
|
max_chr = (pg_wchar) UCHAR_MAX;
|
||||||
pcc->cv.cclasscode = -1;
|
pcc->cv.cclasscode = -1;
|
||||||
@ -737,7 +737,7 @@ pg_ctype_get_cache(pg_wc_probefunc probefunc, int cclasscode)
|
|||||||
max_chr = (pg_wchar) MAX_SIMPLE_CHR;
|
max_chr = (pg_wchar) MAX_SIMPLE_CHR;
|
||||||
#endif
|
#endif
|
||||||
break;
|
break;
|
||||||
case PG_REGEX_LOCALE_ICU:
|
case PG_REGEX_STRATEGY_ICU:
|
||||||
max_chr = (pg_wchar) MAX_SIMPLE_CHR;
|
max_chr = (pg_wchar) MAX_SIMPLE_CHR;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
Reference in New Issue
Block a user