47 char32_t *simple,
const char32_t **special);
54 return cp != 0 ?
cp : code;
62 return cp != 0 ?
cp : code;
70 return cp != 0 ?
cp : code;
78 return cp != 0 ?
cp : code;
201 if ((*s & 0x80) == 0)
203 else if ((*s & 0xe0) == 0xc0)
205 else if ((*s & 0xf0) == 0xe0)
207 else if ((*s & 0xf8) == 0xf0)
260 const char32_t *special =
NULL;
297 char32_t u2 = simple;
312 char32_t u2 = special[
i];
351 for (
size_t i = offset;
i > 0;)
355 if ((
str[
i] & 0xC0) == 0x80)
435 char32_t *simple,
const char32_t **special)
Datum idx(PG_FUNCTION_ARGS)
#define Assert(condition)
memcpy(sums, checksumBaseOffsets, sizeof(checksumBaseOffsets))
static char32_t utf8_to_unicode(const unsigned char *c)
static unsigned char * unicode_to_utf8(char32_t c, unsigned char *utf8string)
static int unicode_utf8len(char32_t c)
char32_t map[NCaseKind][UNICODE_MAX_CASEMAP_CODEPOINTS]
size_t unicode_strupper(char *dst, size_t dstsize, const char *src, size_t srclen, size_t *pconsumed, bool full)
char32_t unicode_titlecase_simple(char32_t code)
size_t unicode_strfold(char *dst, size_t dstsize, const char *src, size_t srclen, size_t *pconsumed, bool full)
char32_t unicode_casefold_simple(char32_t code)
char32_t unicode_lowercase_simple(char32_t code)
size_t unicode_strlower(char *dst, size_t dstsize, const char *src, size_t srclen, size_t *pconsumed, bool full)
static int utf8_mblen(const unsigned char *s)
static char32_t find_case_map(char32_t ucs, const char32_t *map)
size_t unicode_strtitle(char *dst, size_t dstsize, const char *src, size_t srclen, size_t *pconsumed, bool full, WordBoundaryNext wbnext, void *wbstate)
static const char32_t *const casekind_map[NCaseKind]
static size_t convert_case(char *dst, size_t dstsize, const char *src, size_t srclen, size_t *pconsumed, CaseKind str_casekind, bool full, WordBoundaryNext wbnext, void *wbstate)
static bool check_special_conditions(int conditions, const char *str, size_t len, size_t offset)
static enum CaseMapResult casemap(char32_t u1, CaseKind casekind, bool full, const char *src, size_t srclen, size_t srcoff, char32_t *simple, const char32_t **special)
static bool check_final_sigma(const unsigned char *str, size_t len, size_t offset)
char32_t unicode_uppercase_simple(char32_t code)
size_t(* WordBoundaryNext)(void *wbstate)
static const char32_t case_map_upper[1732]
static const char32_t case_map_fold[1732]
static const char32_t case_map_lower[1732]
static const pg_special_case special_case[106]
static const char32_t case_map_title[1732]
static uint16 case_index(char32_t cp)
static const uint8 case_map_special[1732]
bool pg_u_prop_cased(char32_t code)
bool pg_u_prop_case_ignorable(char32_t code)
#define UNICODE_MAX_CASEMAP_CODEPOINTS
#define UTF8_MAX_CASEMAP_EXPANSION