38 const unsigned char *tab,
41 const unsigned char *
start = l;
66 (
const char *) l,
len);
92 const unsigned char *
start = l;
130 const unsigned char *
start = mic;
165 (
const char *) mic,
len);
199 const unsigned char *tab,
202 const unsigned char *
start = l;
230 (
const char *) l,
len);
262 const unsigned char *tab,
265 const unsigned char *
start = mic;
297 (c2 = tab[mic[1] -
HIGHBIT]) == 0)
302 (
const char *) mic,
len);
331 return (
s1 > d1 || (
s1 == d1 &&
s2 > d2)) ? 1 : ((
s1 == d1 &&
s2 == d2) ? 0 : -1);
344 v1 = *(
const uint32 *) p1;
346 return (v1 > v2) ? 1 : ((v1 == v2) ? 0 : -1);
352static inline unsigned char *
355 if (code & 0xff000000)
356 *
dest++ = code >> 24;
357 if (code & 0x00ff0000)
358 *
dest++ = code >> 16;
359 if (code & 0x0000ff00)
361 if (code & 0x000000ff)
385 if (b1 < rt->b4_1_lower || b1 > rt->
b4_1_upper ||
416 if (b2 < rt->b3_1_lower || b2 > rt->
b3_1_upper ||
444 if (b3 < rt->b2_1_lower || b3 > rt->
b2_1_upper ||
469 if (b4 < rt->b1_lower || b4 > rt->
b1_upper)
517 const unsigned char *
start = utf;
521 (
errcode(ERRCODE_INVALID_PARAMETER_VALUE),
526 unsigned char b1 = 0;
527 unsigned char b2 = 0;
528 unsigned char b3 = 0;
529 unsigned char b4 = 0;
570 elog(
ERROR,
"unsupported character length %d", l);
573 iutf = (b1 << 24 | b2 << 16 | b3 << 8 | b4);
578 const unsigned char *utf_save = utf;
614 iutf2 = *utf++ << 16;
615 iutf2 |= *utf++ << 8;
620 iutf2 = *utf++ << 24;
621 iutf2 |= *utf++ << 16;
622 iutf2 |= *utf++ << 8;
627 elog(
ERROR,
"unsupported character length %d", l);
634 cp = bsearch(cutf, cmap, cmapsize,
665 uint32 converted = (*conv_func) (iutf);
679 (
const char *) utf,
len);
683 if (
len > 0 && !noError)
728 const unsigned char *
start = iso;
732 (
errcode(ERRCODE_INVALID_PARAMETER_VALUE),
737 unsigned char b1 = 0;
738 unsigned char b2 = 0;
739 unsigned char b3 = 0;
740 unsigned char b4 = 0;
781 elog(
ERROR,
"unsupported character length %d", l);
784 iiso = (b1 << 24 | b2 << 16 | b3 << 8 | b4);
799 cp = bsearch(&iiso, cmap, cmapsize,
814 uint32 converted = (*conv_func) (iiso);
828 (
const char *) iso,
len);
832 if (
len > 0 && !noError)
Datum idx(PG_FUNCTION_ARGS)
#define IS_HIGHBIT_SET(ch)
int mic2latin_with_table(const unsigned char *mic, unsigned char *p, int len, int lc, int encoding, const unsigned char *tab, bool noError)
int UtfToLocal(const unsigned char *utf, int len, unsigned char *iso, const pg_mb_radix_tree *map, const pg_utf_to_local_combined *cmap, int cmapsize, utf_local_conversion_func conv_func, int encoding, bool noError)
static int compare3(const void *p1, const void *p2)
int latin2mic_with_table(const unsigned char *l, unsigned char *p, int len, int lc, int encoding, const unsigned char *tab, bool noError)
static unsigned char * store_coded_char(unsigned char *dest, uint32 code)
int mic2latin(const unsigned char *mic, unsigned char *p, int len, int lc, int encoding, bool noError)
static uint32 pg_mb_radix_conv(const pg_mb_radix_tree *rt, int l, unsigned char b1, unsigned char b2, unsigned char b3, unsigned char b4)
int LocalToUtf(const unsigned char *iso, int len, unsigned char *utf, const pg_mb_radix_tree *map, const pg_local_to_utf_combined *cmap, int cmapsize, utf_local_conversion_func conv_func, int encoding, bool noError)
static int compare4(const void *p1, const void *p2)
int local2local(const unsigned char *l, unsigned char *p, int len, int src_encoding, int dest_encoding, const unsigned char *tab, bool noError)
int latin2mic(const unsigned char *l, unsigned char *p, int len, int lc, int encoding, bool noError)
static void PGresult const char * p2
int errcode(int sqlerrcode)
int errmsg(const char *fmt,...)
#define ereport(elevel,...)
void report_untranslatable_char(int src_encoding, int dest_encoding, const char *mbstr, int len)
void report_invalid_encoding(int encoding, const char *mbstr, int len)
uint32(* utf_local_conversion_func)(uint32 code)
#define PG_VALID_ENCODING(_enc)
bool pg_utf8_islegal(const unsigned char *source, int length)
int pg_mule_mblen(const unsigned char *s)
int pg_encoding_verifymbchar(int encoding, const char *mbstr, int len)