~stewart/drizzle/use-catalog-for-path

« back to all changes in this revision

Viewing changes to drizzled/ctype-uca.cc

  • Committer: Brian Aker
  • Date: 2011-03-28 02:46:21 UTC
  • Revision ID: brian@tangent.org-20110328024621-wtkdtlvdplqm0ybf
Shift CHARSET_INFO to charset_info_st

Show diffs side-by-side

added added

removed removed

Lines of Context:
6762
6762
  uint16_t implicit[2];
6763
6763
  int page;
6764
6764
  int code;
6765
 
  const CHARSET_INFO * cs;
 
6765
  const charset_info_st * cs;
6766
6766
} my_uca_scanner;
6767
6767
 
6768
6768
/*
6771
6771
*/
6772
6772
typedef struct my_uca_scanner_handler_st
6773
6773
{
6774
 
  void (*init)(my_uca_scanner *scanner, const CHARSET_INFO * const cs,
 
6774
  void (*init)(my_uca_scanner *scanner, const charset_info_st * const cs,
6775
6775
               const unsigned char *str, size_t length);
6776
6776
  int (*next)(my_uca_scanner *scanner);
6777
6777
} my_uca_scanner_handler;
6784
6784
  The same two functions for any character set
6785
6785
*/
6786
6786
static void my_uca_scanner_init_any(my_uca_scanner *scanner,
6787
 
                                    const CHARSET_INFO * const cs,
 
6787
                                    const charset_info_st * const cs,
6788
6788
                                    const unsigned char *str, size_t length)
6789
6789
{
6790
6790
  /* Note, no needs to initialize scanner->wbeg */
6928
6928
    positive number - means the first string is bigger
6929
6929
*/
6930
6930
 
6931
 
static int my_strnncoll_uca(const CHARSET_INFO * const cs,
 
6931
static int my_strnncoll_uca(const charset_info_st * const cs,
6932
6932
                            my_uca_scanner_handler *scanner_handler,
6933
6933
                            const unsigned char *s, size_t slen,
6934
6934
                            const unsigned char *t, size_t tlen,
6999
6999
    positive number - means the first string is bigger
7000
7000
*/
7001
7001
 
7002
 
static int my_strnncollsp_uca(const CHARSET_INFO * const cs,
 
7002
static int my_strnncollsp_uca(const charset_info_st * const cs,
7003
7003
                              my_uca_scanner_handler *scanner_handler,
7004
7004
                              const unsigned char *s, size_t slen,
7005
7005
                              const unsigned char *t, size_t tlen,
7077
7077
    N/A
7078
7078
*/
7079
7079
 
7080
 
static void my_hash_sort_uca(const CHARSET_INFO * const cs,
 
7080
static void my_hash_sort_uca(const charset_info_st * const cs,
7081
7081
                             my_uca_scanner_handler *scanner_handler,
7082
7082
                             const unsigned char *s, size_t slen,
7083
7083
                             uint32_t *n1, uint32_t *n2)
7129
7129
    Number of bytes that have been written into the binary image.
7130
7130
*/
7131
7131
 
7132
 
static size_t my_strnxfrm_uca(const CHARSET_INFO * const cs,
 
7132
static size_t my_strnxfrm_uca(const charset_info_st * const cs,
7133
7133
                           my_uca_scanner_handler *scanner_handler,
7134
7134
                           unsigned char *dst, size_t dstlen, uint32_t nweights,
7135
7135
                           const unsigned char *src, size_t srclen, uint32_t flags)
7171
7171
  little-endian and big-endian machines.
7172
7172
*/
7173
7173
 
7174
 
static int my_uca_charcmp(const CHARSET_INFO * const cs, my_wc_t wc1, my_wc_t wc2)
 
7174
static int my_uca_charcmp(const charset_info_st * const cs, my_wc_t wc1, my_wc_t wc2)
7175
7175
{
7176
7176
  size_t page1= wc1 >> MY_UCA_PSHIFT;
7177
7177
  size_t page2= wc2 >> MY_UCA_PSHIFT;
7201
7201
**       1 if matched with wildcard
7202
7202
*/
7203
7203
 
7204
 
int my_wildcmp_uca(const CHARSET_INFO * const cs,
 
7204
int my_wildcmp_uca(const charset_info_st * const cs,
7205
7205
                   const char *str,const char *str_end,
7206
7206
                   const char *wildstr,const char *wildend,
7207
7207
                   int escape, int w_one, int w_many)
7705
7705
  default weights.
7706
7706
*/
7707
7707
 
7708
 
static bool create_tailoring(CHARSET_INFO *cs, cs_alloc_func alloc)
 
7708
static bool create_tailoring(charset_info_st *cs, cs_alloc_func alloc)
7709
7709
{
7710
7710
  MY_COLL_RULE rule[MY_MAX_COLL_RULE];
7711
7711
  char errstr[128];
7858
7858
 
7859
7859
 
7860
7860
/*
7861
 
  Universal CHARSET_INFO compatible wrappers
 
7861
  Universal charset_info_st compatible wrappers
7862
7862
  for the above internal functions.
7863
7863
  Should work for any character set.
7864
7864
*/
7865
7865
 
7866
 
bool my_coll_init_uca(CHARSET_INFO *cs, cs_alloc_func alloc)
 
7866
bool my_coll_init_uca(charset_info_st *cs, cs_alloc_func alloc)
7867
7867
{
7868
7868
  cs->pad_char= ' ';
7869
7869
  return create_tailoring(cs, alloc);
7870
7870
}
7871
7871
 
7872
 
int my_strnncoll_any_uca(const CHARSET_INFO * const cs,
 
7872
int my_strnncoll_any_uca(const charset_info_st * const cs,
7873
7873
                         const unsigned char *s, size_t slen,
7874
7874
                         const unsigned char *t, size_t tlen,
7875
7875
                         bool t_is_prefix)
7878
7878
                          s, slen, t, tlen, t_is_prefix);
7879
7879
}
7880
7880
 
7881
 
int my_strnncollsp_any_uca(const CHARSET_INFO * const cs,
 
7881
int my_strnncollsp_any_uca(const charset_info_st * const cs,
7882
7882
                           const unsigned char *s, size_t slen,
7883
7883
                           const unsigned char *t, size_t tlen,
7884
7884
                           bool diff_if_only_endspace_difference)
7888
7888
                            diff_if_only_endspace_difference);
7889
7889
}
7890
7890
 
7891
 
void my_hash_sort_any_uca(const CHARSET_INFO * const cs,
 
7891
void my_hash_sort_any_uca(const charset_info_st * const cs,
7892
7892
                          const unsigned char *s, size_t slen,
7893
7893
                          uint32_t *n1, uint32_t *n2)
7894
7894
{
7895
7895
  my_hash_sort_uca(cs, &my_any_uca_scanner_handler, s, slen, n1, n2);
7896
7896
}
7897
7897
 
7898
 
size_t my_strnxfrm_any_uca(const CHARSET_INFO * const cs,
 
7898
size_t my_strnxfrm_any_uca(const charset_info_st * const cs,
7899
7899
                           unsigned char *dst, size_t dstlen, uint32_t nweights,
7900
7900
                           const unsigned char *src, size_t srclen,
7901
7901
                           uint32_t flags)
7950
7950
 
7951
7951
extern MY_CHARSET_HANDLER my_charset_utf8mb4_handler;
7952
7952
 
7953
 
CHARSET_INFO my_charset_utf8mb4_unicode_ci=
 
7953
charset_info_st my_charset_utf8mb4_unicode_ci=
7954
7954
{
7955
7955
    224,0,0,             /* number       */
7956
7956
    MY_CS_COMPILED|MY_CS_STRNXFRM|MY_CS_UNICODE,
7985
7985
};
7986
7986
 
7987
7987
 
7988
 
CHARSET_INFO my_charset_utf8mb4_icelandic_uca_ci=
 
7988
charset_info_st my_charset_utf8mb4_icelandic_uca_ci=
7989
7989
{
7990
7990
    225,0,0,             /* number       */
7991
7991
    MY_CS_COMPILED|MY_CS_STRNXFRM|MY_CS_UNICODE,
8019
8019
    &my_collation_any_uca_handler
8020
8020
};
8021
8021
 
8022
 
CHARSET_INFO my_charset_utf8mb4_latvian_uca_ci=
 
8022
charset_info_st my_charset_utf8mb4_latvian_uca_ci=
8023
8023
{
8024
8024
    226,0,0,             /* number       */
8025
8025
    MY_CS_COMPILED|MY_CS_STRNXFRM|MY_CS_UNICODE,
8053
8053
    &my_collation_any_uca_handler
8054
8054
};
8055
8055
 
8056
 
CHARSET_INFO my_charset_utf8mb4_romanian_uca_ci=
 
8056
charset_info_st my_charset_utf8mb4_romanian_uca_ci=
8057
8057
{
8058
8058
    227,0,0,             /* number       */
8059
8059
    MY_CS_COMPILED|MY_CS_STRNXFRM|MY_CS_UNICODE,
8087
8087
    &my_collation_any_uca_handler
8088
8088
};
8089
8089
 
8090
 
CHARSET_INFO my_charset_utf8mb4_slovenian_uca_ci=
 
8090
charset_info_st my_charset_utf8mb4_slovenian_uca_ci=
8091
8091
{
8092
8092
    228,0,0,             /* number       */
8093
8093
    MY_CS_COMPILED|MY_CS_STRNXFRM|MY_CS_UNICODE,
8121
8121
    &my_collation_any_uca_handler
8122
8122
};
8123
8123
 
8124
 
CHARSET_INFO my_charset_utf8mb4_polish_uca_ci=
 
8124
charset_info_st my_charset_utf8mb4_polish_uca_ci=
8125
8125
{
8126
8126
    229,0,0,             /* number       */
8127
8127
    MY_CS_COMPILED|MY_CS_STRNXFRM|MY_CS_UNICODE,
8155
8155
    &my_collation_any_uca_handler
8156
8156
};
8157
8157
 
8158
 
CHARSET_INFO my_charset_utf8mb4_estonian_uca_ci=
 
8158
charset_info_st my_charset_utf8mb4_estonian_uca_ci=
8159
8159
{
8160
8160
    230,0,0,             /* number       */
8161
8161
    MY_CS_COMPILED|MY_CS_STRNXFRM|MY_CS_UNICODE,
8189
8189
    &my_collation_any_uca_handler
8190
8190
};
8191
8191
 
8192
 
CHARSET_INFO my_charset_utf8mb4_spanish_uca_ci=
 
8192
charset_info_st my_charset_utf8mb4_spanish_uca_ci=
8193
8193
{
8194
8194
    231,0,0,             /* number       */
8195
8195
    MY_CS_COMPILED|MY_CS_STRNXFRM|MY_CS_UNICODE,
8223
8223
    &my_collation_any_uca_handler
8224
8224
};
8225
8225
 
8226
 
CHARSET_INFO my_charset_utf8mb4_swedish_uca_ci=
 
8226
charset_info_st my_charset_utf8mb4_swedish_uca_ci=
8227
8227
{
8228
8228
    232,0,0,             /* number       */
8229
8229
    MY_CS_COMPILED|MY_CS_STRNXFRM|MY_CS_UNICODE,
8257
8257
    &my_collation_any_uca_handler
8258
8258
};
8259
8259
 
8260
 
CHARSET_INFO my_charset_utf8mb4_turkish_uca_ci=
 
8260
charset_info_st my_charset_utf8mb4_turkish_uca_ci=
8261
8261
{
8262
8262
    233,0,0,             /* number       */
8263
8263
    MY_CS_COMPILED|MY_CS_STRNXFRM|MY_CS_UNICODE,
8291
8291
    &my_collation_any_uca_handler
8292
8292
};
8293
8293
 
8294
 
CHARSET_INFO my_charset_utf8mb4_czech_uca_ci=
 
8294
charset_info_st my_charset_utf8mb4_czech_uca_ci=
8295
8295
{
8296
8296
    234,0,0,             /* number       */
8297
8297
    MY_CS_COMPILED|MY_CS_STRNXFRM|MY_CS_UNICODE,
8326
8326
};
8327
8327
 
8328
8328
 
8329
 
CHARSET_INFO my_charset_utf8mb4_danish_uca_ci=
 
8329
charset_info_st my_charset_utf8mb4_danish_uca_ci=
8330
8330
{
8331
8331
    235,0,0,             /* number       */
8332
8332
    MY_CS_COMPILED|MY_CS_STRNXFRM|MY_CS_UNICODE,
8360
8360
    &my_collation_any_uca_handler
8361
8361
};
8362
8362
 
8363
 
CHARSET_INFO my_charset_utf8mb4_lithuanian_uca_ci=
 
8363
charset_info_st my_charset_utf8mb4_lithuanian_uca_ci=
8364
8364
{
8365
8365
    236,0,0,             /* number       */
8366
8366
    MY_CS_COMPILED|MY_CS_STRNXFRM|MY_CS_UNICODE,
8394
8394
    &my_collation_any_uca_handler
8395
8395
};
8396
8396
 
8397
 
CHARSET_INFO my_charset_utf8mb4_slovak_uca_ci=
 
8397
charset_info_st my_charset_utf8mb4_slovak_uca_ci=
8398
8398
{
8399
8399
    237,0,0,             /* number       */
8400
8400
    MY_CS_COMPILED|MY_CS_STRNXFRM|MY_CS_UNICODE,
8428
8428
    &my_collation_any_uca_handler
8429
8429
};
8430
8430
 
8431
 
CHARSET_INFO my_charset_utf8mb4_spanish2_uca_ci=
 
8431
charset_info_st my_charset_utf8mb4_spanish2_uca_ci=
8432
8432
{
8433
8433
    238,0,0,             /* number       */
8434
8434
    MY_CS_COMPILED|MY_CS_STRNXFRM|MY_CS_UNICODE,
8462
8462
    &my_collation_any_uca_handler
8463
8463
};
8464
8464
 
8465
 
CHARSET_INFO my_charset_utf8mb4_roman_uca_ci=
 
8465
charset_info_st my_charset_utf8mb4_roman_uca_ci=
8466
8466
{
8467
8467
    239,0,0,             /* number       */
8468
8468
    MY_CS_COMPILED|MY_CS_STRNXFRM|MY_CS_UNICODE,
8496
8496
    &my_collation_any_uca_handler
8497
8497
};
8498
8498
 
8499
 
CHARSET_INFO my_charset_utf8mb4_persian_uca_ci=
 
8499
charset_info_st my_charset_utf8mb4_persian_uca_ci=
8500
8500
{
8501
8501
    240,0,0,             /* number       */
8502
8502
    MY_CS_COMPILED|MY_CS_STRNXFRM|MY_CS_UNICODE,
8530
8530
    &my_collation_any_uca_handler
8531
8531
};
8532
8532
 
8533
 
CHARSET_INFO my_charset_utf8mb4_esperanto_uca_ci=
 
8533
charset_info_st my_charset_utf8mb4_esperanto_uca_ci=
8534
8534
{
8535
8535
    241,0,0,             /* number       */
8536
8536
    MY_CS_COMPILED|MY_CS_STRNXFRM|MY_CS_UNICODE,
8564
8564
    &my_collation_any_uca_handler
8565
8565
};
8566
8566
 
8567
 
CHARSET_INFO my_charset_utf8mb4_hungarian_uca_ci=
 
8567
charset_info_st my_charset_utf8mb4_hungarian_uca_ci=
8568
8568
{
8569
8569
    242,0,0,             /* number       */
8570
8570
    MY_CS_COMPILED|MY_CS_STRNXFRM|MY_CS_UNICODE,
8598
8598
    &my_collation_any_uca_handler
8599
8599
};
8600
8600
 
8601
 
CHARSET_INFO my_charset_utf8mb4_sinhala_uca_ci=
 
8601
charset_info_st my_charset_utf8mb4_sinhala_uca_ci=
8602
8602
{
8603
8603
    243,0,0,            /* number       */
8604
8604
    MY_CS_COMPILED|MY_CS_STRNXFRM|MY_CS_UNICODE,