~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to drizzled/charset.h

  • Committer: Olaf van der Spek
  • Date: 2011-10-24 09:51:02 UTC
  • mto: This revision was merged to the branch mainline in revision 2447.
  • Revision ID: olafvdspek@gmail.com-20111024095102-jj62tzw3ro28ai9s
Refactor

Show diffs side-by-side

added added

removed removed

Lines of Context:
258
258
 
259
259
  MY_CHARSET_HANDLER *cset;
260
260
  MY_COLLATION_HANDLER *coll;
 
261
 
 
262
  bool isalpha(unsigned char c) const
 
263
  {
 
264
    return (ctype + 1)[c] & (_MY_U | _MY_L);
 
265
  }
 
266
 
 
267
  bool isupper(unsigned char c) const
 
268
  {
 
269
    return (ctype + 1)[c] & _MY_U;
 
270
  }
 
271
 
 
272
  bool islower(unsigned char c) const
 
273
  {
 
274
    return (ctype + 1)[c] & _MY_L;
 
275
  }
 
276
 
 
277
  bool isdigit(unsigned char c) const
 
278
  {
 
279
    return (ctype + 1)[c] & _MY_NMR;
 
280
  }
 
281
 
 
282
  bool isxdigit(unsigned char c) const
 
283
  {
 
284
    return (ctype + 1)[c] & _MY_X;
 
285
  }
 
286
 
 
287
  bool isalnum(unsigned char c) const
 
288
  {
 
289
    return (ctype + 1)[c] & (_MY_U | _MY_L | _MY_NMR);
 
290
  }
 
291
 
 
292
  bool isspace(unsigned char c) const
 
293
  {
 
294
    return (ctype + 1)[c] & _MY_SPC;
 
295
  }
 
296
 
 
297
  bool ispunct(unsigned char c) const  
 
298
  {
 
299
    return (ctype + 1)[c] & _MY_PNT;
 
300
  }
 
301
 
 
302
  bool isprint(unsigned char c) const
 
303
  {
 
304
    return (ctype + 1)[c] & (_MY_PNT | _MY_U | _MY_L | _MY_NMR | _MY_B);
 
305
  }
 
306
 
 
307
  bool isgraph(unsigned char c) const
 
308
  {
 
309
    return (ctype + 1)[c] & (_MY_PNT | _MY_U | _MY_L | _MY_NMR);
 
310
  }
 
311
 
 
312
  bool iscntrl(unsigned char c) const
 
313
  {
 
314
    return (ctype + 1)[c] & _MY_CTR;
 
315
  }
 
316
 
 
317
  bool isvar(char c) const
 
318
  {
 
319
    return isalnum(c) || (c) == '_';
 
320
  }
261
321
};
262
322
 
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));
294
353
 
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);
315
373
 
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);
318
375
 
319
376
void my_fill_8bit(const charset_info_st*, char* to, size_t l, int fill);
320
377
 
332
389
                          char *min_str, char *max_str,
333
390
                          size_t *min_length, size_t *max_length);
334
391
 
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,
338
 
                            size_t res_length,
339
 
                            char *min_str, char *max_str,
340
 
                            size_t *min_length, size_t *max_length);
341
 
 
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,
345
 
                             size_t res_length,
346
 
                             char *min_str, char *max_str,
347
 
                             size_t *min_length, size_t *max_length);
348
 
 
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,
352
 
                             size_t res_length,
353
 
                             char *min_str, char *max_str,
354
 
                             size_t *min_length, size_t *max_length);
355
 
 
356
 
 
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,
450
485
 
451
486
int my_mb_wc_filename(const charset_info_st*, my_wc_t *pwc, const unsigned char *s, const unsigned char *e);
452
487
 
453
 
 
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);
456
 
 
457
 
size_t my_strnxfrmlen_utf8mb4(const charset_info_st*, size_t len);
458
 
size_t
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);
462
 
 
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);
473
 
 
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,
477
 
                     bool t_is_prefix);
478
 
 
479
 
int my_mb_wc_utf8mb4(const charset_info_st*,
480
 
                 my_wc_t * pwc, const unsigned char *s, const unsigned char *e);
481
 
 
482
 
int my_wc_mb_utf8mb4(const charset_info_st*,
483
 
                 my_wc_t wc, unsigned char *r, unsigned char *e);
484
 
 
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);
487
 
 
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);
493
 
 
494
 
 
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,
557
550
                          const unsigned char *t, size_t tlen,
558
551
                          bool);
559
552
 
560
 
inline static bool my_isascii(char c)      
561
 
{
562
 
  return (!(c & ~0177));
563
 
}
564
 
 
565
 
inline static char my_toascii(char c)
566
 
{
567
 
  return (c & 0177);
568
 
}
569
 
 
570
 
inline static char my_tocntrl(char c) 
571
 
{
572
 
  return (c & 31);
573
 
}
574
 
 
575
 
inline static char my_toprint(char c)
576
 
{
577
 
  return (c | 64);
578
 
}
579
 
 
580
553
inline static char my_toupper(const charset_info_st *s, unsigned char c)
581
554
{
582
555
  return s->to_upper[c];
587
560
  return s->to_lower[c];
588
561
}
589
562
 
590
 
inline static bool my_isalpha(const charset_info_st *s, unsigned char c)
591
 
{
592
 
  return (s->ctype+1)[c] & (_MY_U | _MY_L);
593
 
}
594
 
 
595
 
inline static bool my_isupper(const charset_info_st *s, unsigned char c)
596
 
{
597
 
  return (s->ctype+1)[c] & _MY_U;
598
 
}
599
 
 
600
 
inline static bool my_islower(const charset_info_st *s, unsigned char c)
601
 
{
602
 
  return (s->ctype+1)[c] & _MY_L;
603
 
}
604
 
 
605
 
inline static bool my_isdigit(const charset_info_st *s, unsigned char c)
606
 
{
607
 
  return (s->ctype+1)[c] & _MY_NMR;
608
 
}
609
 
 
610
 
inline static bool my_isxdigit(const charset_info_st *s, unsigned char c)
611
 
{
612
 
  return (s->ctype+1)[c] & _MY_X;
613
 
}
614
 
 
615
 
inline static bool my_isalnum(const charset_info_st *s, unsigned char c) 
616
 
{
617
 
  return (s->ctype+1)[c] & (_MY_U | _MY_L | _MY_NMR);
618
 
}
619
 
 
620
 
inline static bool my_isspace(const charset_info_st *s, unsigned char c)
621
 
{
622
 
  return (s->ctype+1)[c] & _MY_SPC;
623
 
}
624
 
 
625
 
inline static bool my_ispunct(const charset_info_st *s, unsigned char c)  
626
 
{
627
 
  return (s->ctype+1)[c] & _MY_PNT;
628
 
}
629
 
 
630
 
inline static bool my_isprint(const charset_info_st *s, unsigned char c)  
631
 
{
632
 
  return (s->ctype+1)[c] & (_MY_PNT | _MY_U | _MY_L | _MY_NMR | _MY_B);
633
 
}
634
 
 
635
 
inline static bool my_isgraph(const charset_info_st *s, unsigned char c)
636
 
{
637
 
  return (s->ctype+1)[c] & (_MY_PNT | _MY_U | _MY_L | _MY_NMR);
638
 
}
639
 
 
640
 
inline static bool my_iscntrl(const charset_info_st *s, unsigned char c)  
641
 
{
642
 
  return (s->ctype+1)[c] & _MY_CTR;
643
 
}
644
 
 
645
 
/* Some macros that should be cleaned up a little */
646
 
inline static bool my_isvar(const charset_info_st *s, char c)
647
 
{
648
 
  return my_isalnum(s,c) || (c) == '_';
649
 
}
650
 
 
651
 
inline static bool my_isvar_start(const charset_info_st *s, char c)
652
 
{
653
 
  return my_isalpha(s,c) || (c) == '_';
654
 
}
655
 
 
656
563
inline static bool my_binary_compare(const charset_info_st *s)
657
564
{
658
565
  return s->state  & MY_CS_BINSORT;