mirror of https://github.com/postgres/postgres
Per-character pg_locale_t APIs. Useful for tsearch parsing and potentially other places. Significant overlap with the regc_wc_isalpha() and related functions in regc_pg_locale.c, but this change leaves those intact for now. Discussion: https://postgr.es/m/0151ad01239e2cc7b3139644358cf8f7b9622ff7.camel@j-davis.compull/245/head
parent
688dc6299a
commit
af164f31b9
@ -0,0 +1,160 @@ |
|||||||
|
/*-----------------------------------------------------------------------
|
||||||
|
* |
||||||
|
* PostgreSQL locale utilities |
||||||
|
* |
||||||
|
* src/include/utils/pg_locale_c.h |
||||||
|
* |
||||||
|
* Copyright (c) 2002-2025, PostgreSQL Global Development Group |
||||||
|
* |
||||||
|
*----------------------------------------------------------------------- |
||||||
|
*/ |
||||||
|
|
||||||
|
#ifndef _PG_LOCALE_C_ |
||||||
|
#define _PG_LOCALE_C_ |
||||||
|
|
||||||
|
/*
|
||||||
|
* Hard-wired character properties for C locale |
||||||
|
*/ |
||||||
|
|
||||||
|
#define PG_ISDIGIT 0x01 |
||||||
|
#define PG_ISALPHA 0x02 |
||||||
|
#define PG_ISALNUM (PG_ISDIGIT | PG_ISALPHA) |
||||||
|
#define PG_ISUPPER 0x04 |
||||||
|
#define PG_ISLOWER 0x08 |
||||||
|
#define PG_ISGRAPH 0x10 |
||||||
|
#define PG_ISPRINT 0x20 |
||||||
|
#define PG_ISPUNCT 0x40 |
||||||
|
#define PG_ISSPACE 0x80 |
||||||
|
|
||||||
|
static const unsigned char pg_char_properties[128] = { |
||||||
|
/* NUL */ 0, |
||||||
|
/* ^A */ 0, |
||||||
|
/* ^B */ 0, |
||||||
|
/* ^C */ 0, |
||||||
|
/* ^D */ 0, |
||||||
|
/* ^E */ 0, |
||||||
|
/* ^F */ 0, |
||||||
|
/* ^G */ 0, |
||||||
|
/* ^H */ 0, |
||||||
|
/* ^I */ PG_ISSPACE, |
||||||
|
/* ^J */ PG_ISSPACE, |
||||||
|
/* ^K */ PG_ISSPACE, |
||||||
|
/* ^L */ PG_ISSPACE, |
||||||
|
/* ^M */ PG_ISSPACE, |
||||||
|
/* ^N */ 0, |
||||||
|
/* ^O */ 0, |
||||||
|
/* ^P */ 0, |
||||||
|
/* ^Q */ 0, |
||||||
|
/* ^R */ 0, |
||||||
|
/* ^S */ 0, |
||||||
|
/* ^T */ 0, |
||||||
|
/* ^U */ 0, |
||||||
|
/* ^V */ 0, |
||||||
|
/* ^W */ 0, |
||||||
|
/* ^X */ 0, |
||||||
|
/* ^Y */ 0, |
||||||
|
/* ^Z */ 0, |
||||||
|
/* ^[ */ 0, |
||||||
|
/* ^\ */ 0, |
||||||
|
/* ^] */ 0, |
||||||
|
/* ^^ */ 0, |
||||||
|
/* ^_ */ 0, |
||||||
|
/* */ PG_ISPRINT | PG_ISSPACE, |
||||||
|
/* ! */ PG_ISGRAPH | PG_ISPRINT | PG_ISPUNCT, |
||||||
|
/* " */ PG_ISGRAPH | PG_ISPRINT | PG_ISPUNCT, |
||||||
|
/* # */ PG_ISGRAPH | PG_ISPRINT | PG_ISPUNCT, |
||||||
|
/* $ */ PG_ISGRAPH | PG_ISPRINT | PG_ISPUNCT, |
||||||
|
/* % */ PG_ISGRAPH | PG_ISPRINT | PG_ISPUNCT, |
||||||
|
/* & */ PG_ISGRAPH | PG_ISPRINT | PG_ISPUNCT, |
||||||
|
/* ' */ PG_ISGRAPH | PG_ISPRINT | PG_ISPUNCT, |
||||||
|
/* ( */ PG_ISGRAPH | PG_ISPRINT | PG_ISPUNCT, |
||||||
|
/* ) */ PG_ISGRAPH | PG_ISPRINT | PG_ISPUNCT, |
||||||
|
/* * */ PG_ISGRAPH | PG_ISPRINT | PG_ISPUNCT, |
||||||
|
/* + */ PG_ISGRAPH | PG_ISPRINT | PG_ISPUNCT, |
||||||
|
/* , */ PG_ISGRAPH | PG_ISPRINT | PG_ISPUNCT, |
||||||
|
/* - */ PG_ISGRAPH | PG_ISPRINT | PG_ISPUNCT, |
||||||
|
/* . */ PG_ISGRAPH | PG_ISPRINT | PG_ISPUNCT, |
||||||
|
/* / */ PG_ISGRAPH | PG_ISPRINT | PG_ISPUNCT, |
||||||
|
/* 0 */ PG_ISDIGIT | PG_ISGRAPH | PG_ISPRINT, |
||||||
|
/* 1 */ PG_ISDIGIT | PG_ISGRAPH | PG_ISPRINT, |
||||||
|
/* 2 */ PG_ISDIGIT | PG_ISGRAPH | PG_ISPRINT, |
||||||
|
/* 3 */ PG_ISDIGIT | PG_ISGRAPH | PG_ISPRINT, |
||||||
|
/* 4 */ PG_ISDIGIT | PG_ISGRAPH | PG_ISPRINT, |
||||||
|
/* 5 */ PG_ISDIGIT | PG_ISGRAPH | PG_ISPRINT, |
||||||
|
/* 6 */ PG_ISDIGIT | PG_ISGRAPH | PG_ISPRINT, |
||||||
|
/* 7 */ PG_ISDIGIT | PG_ISGRAPH | PG_ISPRINT, |
||||||
|
/* 8 */ PG_ISDIGIT | PG_ISGRAPH | PG_ISPRINT, |
||||||
|
/* 9 */ PG_ISDIGIT | PG_ISGRAPH | PG_ISPRINT, |
||||||
|
/* : */ PG_ISGRAPH | PG_ISPRINT | PG_ISPUNCT, |
||||||
|
/* ; */ PG_ISGRAPH | PG_ISPRINT | PG_ISPUNCT, |
||||||
|
/* < */ PG_ISGRAPH | PG_ISPRINT | PG_ISPUNCT, |
||||||
|
/* = */ PG_ISGRAPH | PG_ISPRINT | PG_ISPUNCT, |
||||||
|
/* > */ PG_ISGRAPH | PG_ISPRINT | PG_ISPUNCT, |
||||||
|
/* ? */ PG_ISGRAPH | PG_ISPRINT | PG_ISPUNCT, |
||||||
|
/* @ */ PG_ISGRAPH | PG_ISPRINT | PG_ISPUNCT, |
||||||
|
/* A */ PG_ISALPHA | PG_ISUPPER | PG_ISGRAPH | PG_ISPRINT, |
||||||
|
/* B */ PG_ISALPHA | PG_ISUPPER | PG_ISGRAPH | PG_ISPRINT, |
||||||
|
/* C */ PG_ISALPHA | PG_ISUPPER | PG_ISGRAPH | PG_ISPRINT, |
||||||
|
/* D */ PG_ISALPHA | PG_ISUPPER | PG_ISGRAPH | PG_ISPRINT, |
||||||
|
/* E */ PG_ISALPHA | PG_ISUPPER | PG_ISGRAPH | PG_ISPRINT, |
||||||
|
/* F */ PG_ISALPHA | PG_ISUPPER | PG_ISGRAPH | PG_ISPRINT, |
||||||
|
/* G */ PG_ISALPHA | PG_ISUPPER | PG_ISGRAPH | PG_ISPRINT, |
||||||
|
/* H */ PG_ISALPHA | PG_ISUPPER | PG_ISGRAPH | PG_ISPRINT, |
||||||
|
/* I */ PG_ISALPHA | PG_ISUPPER | PG_ISGRAPH | PG_ISPRINT, |
||||||
|
/* J */ PG_ISALPHA | PG_ISUPPER | PG_ISGRAPH | PG_ISPRINT, |
||||||
|
/* K */ PG_ISALPHA | PG_ISUPPER | PG_ISGRAPH | PG_ISPRINT, |
||||||
|
/* L */ PG_ISALPHA | PG_ISUPPER | PG_ISGRAPH | PG_ISPRINT, |
||||||
|
/* M */ PG_ISALPHA | PG_ISUPPER | PG_ISGRAPH | PG_ISPRINT, |
||||||
|
/* N */ PG_ISALPHA | PG_ISUPPER | PG_ISGRAPH | PG_ISPRINT, |
||||||
|
/* O */ PG_ISALPHA | PG_ISUPPER | PG_ISGRAPH | PG_ISPRINT, |
||||||
|
/* P */ PG_ISALPHA | PG_ISUPPER | PG_ISGRAPH | PG_ISPRINT, |
||||||
|
/* Q */ PG_ISALPHA | PG_ISUPPER | PG_ISGRAPH | PG_ISPRINT, |
||||||
|
/* R */ PG_ISALPHA | PG_ISUPPER | PG_ISGRAPH | PG_ISPRINT, |
||||||
|
/* S */ PG_ISALPHA | PG_ISUPPER | PG_ISGRAPH | PG_ISPRINT, |
||||||
|
/* T */ PG_ISALPHA | PG_ISUPPER | PG_ISGRAPH | PG_ISPRINT, |
||||||
|
/* U */ PG_ISALPHA | PG_ISUPPER | PG_ISGRAPH | PG_ISPRINT, |
||||||
|
/* V */ PG_ISALPHA | PG_ISUPPER | PG_ISGRAPH | PG_ISPRINT, |
||||||
|
/* W */ PG_ISALPHA | PG_ISUPPER | PG_ISGRAPH | PG_ISPRINT, |
||||||
|
/* X */ PG_ISALPHA | PG_ISUPPER | PG_ISGRAPH | PG_ISPRINT, |
||||||
|
/* Y */ PG_ISALPHA | PG_ISUPPER | PG_ISGRAPH | PG_ISPRINT, |
||||||
|
/* Z */ PG_ISALPHA | PG_ISUPPER | PG_ISGRAPH | PG_ISPRINT, |
||||||
|
/* [ */ PG_ISGRAPH | PG_ISPRINT | PG_ISPUNCT, |
||||||
|
/* \ */ PG_ISGRAPH | PG_ISPRINT | PG_ISPUNCT, |
||||||
|
/* ] */ PG_ISGRAPH | PG_ISPRINT | PG_ISPUNCT, |
||||||
|
/* ^ */ PG_ISGRAPH | PG_ISPRINT | PG_ISPUNCT, |
||||||
|
/* _ */ PG_ISGRAPH | PG_ISPRINT | PG_ISPUNCT, |
||||||
|
/* ` */ PG_ISGRAPH | PG_ISPRINT | PG_ISPUNCT, |
||||||
|
/* a */ PG_ISALPHA | PG_ISLOWER | PG_ISGRAPH | PG_ISPRINT, |
||||||
|
/* b */ PG_ISALPHA | PG_ISLOWER | PG_ISGRAPH | PG_ISPRINT, |
||||||
|
/* c */ PG_ISALPHA | PG_ISLOWER | PG_ISGRAPH | PG_ISPRINT, |
||||||
|
/* d */ PG_ISALPHA | PG_ISLOWER | PG_ISGRAPH | PG_ISPRINT, |
||||||
|
/* e */ PG_ISALPHA | PG_ISLOWER | PG_ISGRAPH | PG_ISPRINT, |
||||||
|
/* f */ PG_ISALPHA | PG_ISLOWER | PG_ISGRAPH | PG_ISPRINT, |
||||||
|
/* g */ PG_ISALPHA | PG_ISLOWER | PG_ISGRAPH | PG_ISPRINT, |
||||||
|
/* h */ PG_ISALPHA | PG_ISLOWER | PG_ISGRAPH | PG_ISPRINT, |
||||||
|
/* i */ PG_ISALPHA | PG_ISLOWER | PG_ISGRAPH | PG_ISPRINT, |
||||||
|
/* j */ PG_ISALPHA | PG_ISLOWER | PG_ISGRAPH | PG_ISPRINT, |
||||||
|
/* k */ PG_ISALPHA | PG_ISLOWER | PG_ISGRAPH | PG_ISPRINT, |
||||||
|
/* l */ PG_ISALPHA | PG_ISLOWER | PG_ISGRAPH | PG_ISPRINT, |
||||||
|
/* m */ PG_ISALPHA | PG_ISLOWER | PG_ISGRAPH | PG_ISPRINT, |
||||||
|
/* n */ PG_ISALPHA | PG_ISLOWER | PG_ISGRAPH | PG_ISPRINT, |
||||||
|
/* o */ PG_ISALPHA | PG_ISLOWER | PG_ISGRAPH | PG_ISPRINT, |
||||||
|
/* p */ PG_ISALPHA | PG_ISLOWER | PG_ISGRAPH | PG_ISPRINT, |
||||||
|
/* q */ PG_ISALPHA | PG_ISLOWER | PG_ISGRAPH | PG_ISPRINT, |
||||||
|
/* r */ PG_ISALPHA | PG_ISLOWER | PG_ISGRAPH | PG_ISPRINT, |
||||||
|
/* s */ PG_ISALPHA | PG_ISLOWER | PG_ISGRAPH | PG_ISPRINT, |
||||||
|
/* t */ PG_ISALPHA | PG_ISLOWER | PG_ISGRAPH | PG_ISPRINT, |
||||||
|
/* u */ PG_ISALPHA | PG_ISLOWER | PG_ISGRAPH | PG_ISPRINT, |
||||||
|
/* v */ PG_ISALPHA | PG_ISLOWER | PG_ISGRAPH | PG_ISPRINT, |
||||||
|
/* w */ PG_ISALPHA | PG_ISLOWER | PG_ISGRAPH | PG_ISPRINT, |
||||||
|
/* x */ PG_ISALPHA | PG_ISLOWER | PG_ISGRAPH | PG_ISPRINT, |
||||||
|
/* y */ PG_ISALPHA | PG_ISLOWER | PG_ISGRAPH | PG_ISPRINT, |
||||||
|
/* z */ PG_ISALPHA | PG_ISLOWER | PG_ISGRAPH | PG_ISPRINT, |
||||||
|
/* { */ PG_ISGRAPH | PG_ISPRINT | PG_ISPUNCT, |
||||||
|
/* | */ PG_ISGRAPH | PG_ISPRINT | PG_ISPUNCT, |
||||||
|
/* } */ PG_ISGRAPH | PG_ISPRINT | PG_ISPUNCT, |
||||||
|
/* ~ */ PG_ISGRAPH | PG_ISPRINT | PG_ISPUNCT, |
||||||
|
/* DEL */ 0 |
||||||
|
}; |
||||||
|
|
||||||
|
#endif /* _PG_LOCALE_C_ */ |
||||||
Loading…
Reference in new issue