259
259
MY_CHARSET_HANDLER *cset;
260
260
MY_COLLATION_HANDLER *coll;
262
bool isalpha(unsigned char c) const
264
return (ctype + 1)[c] & (_MY_U | _MY_L);
267
bool isupper(unsigned char c) const
269
return (ctype + 1)[c] & _MY_U;
272
bool islower(unsigned char c) const
274
return (ctype + 1)[c] & _MY_L;
277
bool isdigit(unsigned char c) const
279
return (ctype + 1)[c] & _MY_NMR;
282
bool isxdigit(unsigned char c) const
284
return (ctype + 1)[c] & _MY_X;
287
bool isalnum(unsigned char c) const
289
return (ctype + 1)[c] & (_MY_U | _MY_L | _MY_NMR);
292
bool isspace(unsigned char c) const
294
return (ctype + 1)[c] & _MY_SPC;
297
bool ispunct(unsigned char c) const
299
return (ctype + 1)[c] & _MY_PNT;
302
bool isprint(unsigned char c) const
304
return (ctype + 1)[c] & (_MY_PNT | _MY_U | _MY_L | _MY_NMR | _MY_B);
307
bool isgraph(unsigned char c) const
309
return (ctype + 1)[c] & (_MY_PNT | _MY_U | _MY_L | _MY_NMR);
312
bool iscntrl(unsigned char c) const
314
return (ctype + 1)[c] & _MY_CTR;
317
bool isvar(char c) const
319
return isalnum(c) || (c) == '_';
263
323
extern DRIZZLED_API charset_info_st *all_charsets[256];
288
348
extern size_t my_lengthsp_8bit(const charset_info_st*, const char *ptr, size_t length);
289
349
extern uint32_t my_instr_simple(const charset_info_st*, const char *b, size_t b_length, const char *s, size_t s_length, my_match_t *match, uint32_t nmatch);
290
350
extern MY_CHARSET_HANDLER my_charset_8bit_handler;
291
extern MY_CHARSET_HANDLER my_charset_ucs2_handler;
292
351
extern int my_strcasecmp_mb(const charset_info_st* cs, const char *s, const char *t);
293
352
extern bool my_parse_charset_xml(const char *bug, size_t len, int (*add)(charset_info_st *cs));
311
370
size_t my_long10_to_str_8bit(const charset_info_st*, char *to, size_t l, int radix, long int val);
312
371
size_t my_int64_t10_to_str_8bit(const charset_info_st*, char *to, size_t l, int radix, int64_t val);
313
372
int64_t my_strtoll10_8bit(const charset_info_st*, const char *nptr, char **endptr, int *error);
314
int64_t my_strtoll10_ucs2(charset_info_st *cs, const char *nptr, char **endptr, int *error);
316
374
uint64_t my_strntoull10rnd_8bit(const charset_info_st*, const char *str, size_t length, int unsigned_fl, char **endptr, int *error);
317
uint64_t my_strntoull10rnd_ucs2(charset_info_st *cs, const char *str, size_t length, int unsigned_fl, char **endptr, int *error);
319
376
void my_fill_8bit(const charset_info_st*, char* to, size_t l, int fill);
332
389
char *min_str, char *max_str,
333
390
size_t *min_length, size_t *max_length);
335
bool my_like_range_ucs2(const charset_info_st*,
336
const char *ptr, size_t ptr_length,
337
char escape, char w_one, char w_many,
339
char *min_str, char *max_str,
340
size_t *min_length, size_t *max_length);
342
bool my_like_range_utf16(const charset_info_st*,
343
const char *ptr, size_t ptr_length,
344
char escape, char w_one, char w_many,
346
char *min_str, char *max_str,
347
size_t *min_length, size_t *max_length);
349
bool my_like_range_utf32(const charset_info_st*,
350
const char *ptr, size_t ptr_length,
351
char escape, char w_one, char w_many,
353
char *min_str, char *max_str,
354
size_t *min_length, size_t *max_length);
357
392
int my_wildcmp_8bit(const charset_info_st*,
358
393
const char *str,const char *str_end,
359
394
const char *wildstr,const char *wildend,
451
486
int my_mb_wc_filename(const charset_info_st*, my_wc_t *pwc, const unsigned char *s, const unsigned char *e);
454
unsigned int my_ismbchar_utf8mb4(const charset_info_st*, const char *b, const char *e);
455
unsigned int my_mbcharlen_utf8mb4(const charset_info_st*, uint32_t c);
457
size_t my_strnxfrmlen_utf8mb4(const charset_info_st*, size_t len);
459
my_strnxfrm_utf8mb4(const charset_info_st*,
460
unsigned char *dst, size_t dstlen, uint32_t nweights,
461
const unsigned char *src, size_t srclen, uint32_t flags);
463
int my_wildcmp_utf8mb4(const charset_info_st*,
464
const char *str, const char *strend,
465
const char *wildstr, const char *wildend,
466
int escape, int w_one, int w_many);
467
int my_strnncollsp_utf8mb4(const charset_info_st*,
468
const unsigned char *s, size_t slen,
469
const unsigned char *t, size_t tlen,
470
bool diff_if_only_endspace_difference);
471
int my_strcasecmp_utf8mb4(const charset_info_st*,
472
const char *s, const char *t);
474
int my_strnncoll_utf8mb4(const charset_info_st*,
475
const unsigned char *s, size_t slen,
476
const unsigned char *t, size_t tlen,
479
int my_mb_wc_utf8mb4(const charset_info_st*,
480
my_wc_t * pwc, const unsigned char *s, const unsigned char *e);
482
int my_wc_mb_utf8mb4(const charset_info_st*,
483
my_wc_t wc, unsigned char *r, unsigned char *e);
485
size_t my_caseup_str_utf8mb4(const charset_info_st*, char *src);
486
size_t my_casedn_str_utf8mb4(const charset_info_st*, char *src);
488
size_t my_caseup_utf8mb4(const charset_info_st*, char *src, size_t srclen,
489
char *dst, size_t dstlen);
490
size_t my_casedn_utf8mb4(const charset_info_st*,
491
char *src, size_t srclen,
492
char *dst, size_t dstlen);
495
488
int my_strnncoll_any_uca(const charset_info_st*,
496
489
const unsigned char *s, size_t slen,
497
490
const unsigned char *t, size_t tlen,
587
560
return s->to_lower[c];
590
inline static bool my_isalpha(const charset_info_st *s, unsigned char c)
592
return (s->ctype+1)[c] & (_MY_U | _MY_L);
595
inline static bool my_isupper(const charset_info_st *s, unsigned char c)
597
return (s->ctype+1)[c] & _MY_U;
600
inline static bool my_islower(const charset_info_st *s, unsigned char c)
602
return (s->ctype+1)[c] & _MY_L;
605
inline static bool my_isdigit(const charset_info_st *s, unsigned char c)
607
return (s->ctype+1)[c] & _MY_NMR;
610
inline static bool my_isxdigit(const charset_info_st *s, unsigned char c)
612
return (s->ctype+1)[c] & _MY_X;
615
inline static bool my_isalnum(const charset_info_st *s, unsigned char c)
617
return (s->ctype+1)[c] & (_MY_U | _MY_L | _MY_NMR);
620
inline static bool my_isspace(const charset_info_st *s, unsigned char c)
622
return (s->ctype+1)[c] & _MY_SPC;
625
inline static bool my_ispunct(const charset_info_st *s, unsigned char c)
627
return (s->ctype+1)[c] & _MY_PNT;
630
inline static bool my_isprint(const charset_info_st *s, unsigned char c)
632
return (s->ctype+1)[c] & (_MY_PNT | _MY_U | _MY_L | _MY_NMR | _MY_B);
635
inline static bool my_isgraph(const charset_info_st *s, unsigned char c)
637
return (s->ctype+1)[c] & (_MY_PNT | _MY_U | _MY_L | _MY_NMR);
640
inline static bool my_iscntrl(const charset_info_st *s, unsigned char c)
642
return (s->ctype+1)[c] & _MY_CTR;
645
/* Some macros that should be cleaned up a little */
646
inline static bool my_isvar(const charset_info_st *s, char c)
648
return my_isalnum(s,c) || (c) == '_';
651
inline static bool my_isvar_start(const charset_info_st *s, char c)
653
return my_isalpha(s,c) || (c) == '_';
656
563
inline static bool my_binary_compare(const charset_info_st *s)
658
565
return s->state & MY_CS_BINSORT;