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