45
void my_hash_sort_utf8mb4(const charset_info_st * const cs,
45
void my_hash_sort_utf8mb4(const charset_info_st* cs,
46
46
const unsigned char *s, size_t slen,
47
47
uint32_t *n1, uint32_t *n2);
1725
1725
@retval 1 if matched with wildcard.
1728
int my_wildcmp_unicode(const charset_info_st * const cs,
1728
int my_wildcmp_unicode(const charset_info_st* cs,
1729
1729
const char *str,const char *str_end,
1730
1730
const char *wildstr,const char *wildend,
1731
1731
int escape, int w_one, int w_many,
1871
result= my_wildcmp_unicode(cs, str, str_end, wildstr, wildend,
1872
escape, w_one, w_many,
1871
result= my_wildcmp_unicode(cs, str, str_end, wildstr, wildend, escape, w_one, w_many, weights);
1874
1872
if (result <= 0)
1879
return (str != str_end ? 1 : 0);
1877
return str != str_end;
1883
int make_escape_code(const charset_info_st * const cs, const char *escape)
1881
int make_escape_code(const charset_info_st* cs, const char *escape)
1885
1883
my_charset_conv_mb_wc mb_wc= cs->cset->mb_wc;
1886
1884
my_wc_t escape_wc;
1887
int rc= mb_wc(cs, &escape_wc,
1888
(const unsigned char*) escape,
1889
(const unsigned char*) escape + strlen(escape));
1890
return (int)(rc > 0 ? escape_wc : '\\');
1885
int rc= mb_wc(cs, &escape_wc, (const unsigned char*) escape, (const unsigned char*) escape + strlen(escape));
1886
return rc > 0 ? escape_wc : '\\';
1975
my_mb_wc_utf8mb4(const charset_info_st * const,
1976
my_wc_t * pwc, const unsigned char *s, const unsigned char *e)
1970
static int my_mb_wc_utf8mb4(const charset_info_st*, my_wc_t * pwc, const unsigned char *s, const unsigned char *e)
1981
1973
return MY_CS_TOOSMALL;
1975
unsigned char c= s[0];
2038
2030
for example, for a null-terminated string
2041
my_mb_wc_utf8mb4_no_range(const charset_info_st * const,
2033
my_mb_wc_utf8mb4_no_range(const charset_info_st*,
2042
2034
my_wc_t *pwc, const unsigned char *s)
2044
2036
unsigned char c;
2095
my_wc_mb_utf8mb4(const charset_info_st * const,
2096
my_wc_t wc, unsigned char *r, unsigned char *e)
2086
static int my_wc_mb_utf8mb4(const charset_info_st*, my_wc_t wc, unsigned char *r, unsigned char *e)
2111
2101
else return MY_CS_ILUNI;
2113
2103
if (r + count > e)
2114
return my_cs_toosmalln(count);
2104
return -100 - count;
2117
2108
/* Fall through all cases!!! */
2118
2109
case 4: r[3] = (unsigned char) (0x80 | (wc & 0x3f)); wc = wc >> 6; wc |= 0x10000;
2119
2110
case 3: r[2] = (unsigned char) (0x80 | (wc & 0x3f)); wc = wc >> 6; wc |= 0x800;
2128
2119
The same as above, but without range check.
2131
my_wc_mb_utf8mb4_no_range(const charset_info_st * const,
2122
my_wc_mb_utf8mb4_no_range(const charset_info_st*,
2132
2123
my_wc_t wc, unsigned char *r)
2197
my_caseup_utf8mb4(const charset_info_st * const cs, char *src, size_t srclen,
2198
char *dst, size_t dstlen)
2187
static size_t my_caseup_utf8mb4(const charset_info_st* cs, char *src, size_t srclen, char *dst, size_t dstlen)
2201
2190
int srcres, dstres;
2228
void my_hash_sort_utf8mb4(const charset_info_st * const cs,
2217
void my_hash_sort_utf8mb4(const charset_info_st* cs,
2229
2218
const unsigned char *s, size_t slen,
2230
2219
uint32_t *n1, uint32_t *n2)
2289
my_casedn_utf8mb4(const charset_info_st * const cs,
2290
char *src, size_t srclen,
2291
char *dst, size_t dstlen)
2276
static size_t my_casedn_utf8mb4(const charset_info_st* cs, char *src, size_t srclen, char *dst, size_t dstlen)
2294
2279
int srcres, dstres;
2353
my_strnncoll_utf8mb4(const charset_info_st * const cs,
2336
static int my_strnncoll_utf8mb4(const charset_info_st* cs,
2354
2337
const unsigned char *s, size_t slen,
2355
2338
const unsigned char *t, size_t tlen,
2356
2339
bool t_is_prefix)
2414
2397
@retval Positive number, if a > b
2418
my_strnncollsp_utf8mb4(const charset_info_st * const cs,
2400
static int my_strnncollsp_utf8mb4(const charset_info_st* cs,
2419
2401
const unsigned char *s, size_t slen,
2420
2402
const unsigned char *t, size_t tlen,
2421
2403
bool diff_if_only_endspace_difference)
2503
2485
@retval 0 is the strings are equal
2506
int my_strcasecmp_utf8mb4(const charset_info_st * const cs,
2507
const char *s, const char *t)
2488
static int my_strcasecmp_utf8mb4(const charset_info_st* cs, const char *s, const char *t)
2509
2490
MY_UNICASE_INFO **uni_plane= cs->caseinfo;
2510
2491
while (s[0] && t[0])
2567
my_wildcmp_utf8mb4(const charset_info_st * const cs,
2547
static int my_wildcmp_utf8mb4(const charset_info_st* cs,
2568
2548
const char *str, const char *strend,
2569
2549
const char *wildstr, const char *wildend,
2570
2550
int escape, int w_one, int w_many)
2572
return my_wildcmp_unicode(cs, str, strend, wildstr, wildend,
2573
escape, w_one, w_many, cs->caseinfo);
2552
return my_wildcmp_unicode(cs, str, strend, wildstr, wildend, escape, w_one, w_many, cs->caseinfo);
2578
my_strnxfrmlen_utf8mb4(const charset_info_st * const, size_t len)
2556
static size_t my_strnxfrmlen_utf8mb4(const charset_info_st*, size_t len)
2580
2558
/* TODO: fix when working on WL "Unicode new version" */
2581
2559
return (len * 2 + 2) / 4;
2586
my_strnxfrm_utf8mb4(const charset_info_st * const cs,
2563
static size_t my_strnxfrm_utf8mb4(const charset_info_st* cs,
2587
2564
unsigned char *dst, size_t dstlen, uint32_t nweights,
2588
2565
const unsigned char *src, size_t srclen, uint32_t flags)
2630
unsigned int my_ismbchar_utf8mb4(const charset_info_st * const cs,
2631
const char *b, const char *e)
2607
static unsigned int my_ismbchar_utf8mb4(const charset_info_st* cs, const char *b, const char *e)
2634
2610
int res= my_mb_wc_utf8mb4(cs,&wc, (const unsigned char*)b, (const unsigned char*)e);
2744
2719
0, /* min_sort_char */
2745
2720
0xFFFF, /* max_sort_char */
2746
2721
' ', /* pad char */
2747
0, /* escape_with_backslash_is_dangerous */
2748
2722
1, /* levels_for_compare */
2749
2723
1, /* levels_for_order */
2750
2724
&my_charset_utf8mb4_handler,
2779
2753
0, /* min_sort_char */
2780
2754
0xFFFF, /* max_sort_char */
2781
2755
' ', /* pad char */
2782
0, /* escape_with_backslash_is_dangerous */
2783
2756
1, /* levels_for_compare */
2784
2757
1, /* levels_for_order */
2785
2758
&my_charset_utf8mb4_handler,