diff options
author | unknown <bar@bar.mysql.r18.ru> | 2003-05-23 17:45:52 +0500 |
---|---|---|
committer | unknown <bar@bar.mysql.r18.ru> | 2003-05-23 17:45:52 +0500 |
commit | 5aae66c1017aaef0efc0080c095436f954288bd6 (patch) | |
tree | 40660f305f13b43f69d092c4719cebfaaf120a40 /strings | |
parent | f461dea4d7066c6dfe14b33cc549f7e0183f6b8e (diff) | |
download | mariadb-git-5aae66c1017aaef0efc0080c095436f954288bd6.tar.gz |
CHARSET_INFO structure reorganization for easier maintainance
Diffstat (limited to 'strings')
-rw-r--r-- | strings/ctype-big5.c | 67 | ||||
-rw-r--r-- | strings/ctype-bin.c | 65 | ||||
-rw-r--r-- | strings/ctype-czech.c | 40 | ||||
-rw-r--r-- | strings/ctype-euc_kr.c | 66 | ||||
-rw-r--r-- | strings/ctype-extra.c | 26 | ||||
-rw-r--r-- | strings/ctype-gb2312.c | 66 | ||||
-rw-r--r-- | strings/ctype-gbk.c | 66 | ||||
-rw-r--r-- | strings/ctype-latin1.c | 95 | ||||
-rw-r--r-- | strings/ctype-simple.c | 35 | ||||
-rw-r--r-- | strings/ctype-sjis.c | 67 | ||||
-rw-r--r-- | strings/ctype-tis620.c | 48 | ||||
-rw-r--r-- | strings/ctype-ucs2.c | 79 | ||||
-rw-r--r-- | strings/ctype-ujis.c | 49 | ||||
-rw-r--r-- | strings/ctype-utf8.c | 65 | ||||
-rw-r--r-- | strings/ctype-win1250ch.c | 40 |
15 files changed, 482 insertions, 392 deletions
diff --git a/strings/ctype-big5.c b/strings/ctype-big5.c index ec723e8690a..3f7218b20fc 100644 --- a/strings/ctype-big5.c +++ b/strings/ctype-big5.c @@ -6226,6 +6226,42 @@ my_mb_wc_big5(CHARSET_INFO *cs __attribute__((unused)), return 2; } +static MY_COLLATION_HANDLER my_collation_big5_chinese_ci_handler = +{ + my_strnncoll_big5, + my_strnncollsp_big5, + my_strnxfrm_big5, + my_like_range_big5, + my_wildcmp_mb, + my_strcasecmp_mb, + my_hash_sort_simple +}; + +static MY_CHARSET_HANDLER my_charset_big5_handler= +{ + ismbchar_big5, + mbcharlen_big5, + my_numchars_mb, + my_charpos_mb, + my_mb_wc_big5, /* mb_wc */ + my_wc_mb_big5, /* wc_mb */ + my_caseup_str_mb, + my_casedn_str_mb, + my_caseup_mb, + my_casedn_mb, + my_snprintf_8bit, + my_long10_to_str_8bit, + my_longlong10_to_str_8bit, + my_fill_8bit, + + my_strntol_8bit, + my_strntoul_8bit, + my_strntoll_8bit, + my_strntoull_8bit, + my_strntod_8bit, + my_scan_8bit +}; + CHARSET_INFO my_charset_big5_chinese_ci = { 1,0,0, /* number */ @@ -6241,37 +6277,12 @@ CHARSET_INFO my_charset_big5_chinese_ci = NULL, /* tab_from_uni */ "","", 1, /* strxfrm_multiply */ - my_strnncoll_big5, - my_strnncollsp_big5, - my_strnxfrm_big5, - my_like_range_big5, - my_wildcmp_mb, 2, /* mbmaxlen */ - ismbchar_big5, - mbcharlen_big5, - my_numchars_mb, - my_charpos_mb, - my_mb_wc_big5, /* mb_wc */ - my_wc_mb_big5, /* wc_mb */ - my_caseup_str_mb, - my_casedn_str_mb, - my_caseup_mb, - my_casedn_mb, - my_strcasecmp_mb, - my_hash_sort_simple, 0, - my_snprintf_8bit, - my_long10_to_str_8bit, - my_longlong10_to_str_8bit, - my_fill_8bit, - - my_strntol_8bit, - my_strntoul_8bit, - my_strntoll_8bit, - my_strntoull_8bit, - my_strntod_8bit, - my_scan_8bit + &my_charset_big5_handler, + &my_collation_big5_chinese_ci_handler }; + #endif diff --git a/strings/ctype-bin.c b/strings/ctype-bin.c index 77152db845c..ebe73016db7 100644 --- a/strings/ctype-bin.c +++ b/strings/ctype-bin.c @@ -262,6 +262,42 @@ static int my_strnxfrm_bin(CHARSET_INFO *cs __attribute__((unused)), return len; } + +MY_COLLATION_HANDLER my_collation_bin_handler = +{ + my_strnncoll_binary, + my_strnncollsp_binary, + my_strnxfrm_bin, + my_like_range_simple, + my_wildcmp_bin, + my_strcasecmp_bin, + my_hash_sort_bin +}; + +static MY_CHARSET_HANDLER my_charset_handler= +{ + NULL, /* ismbchar */ + NULL, /* mbcharlen */ + my_numchars_8bit, + my_charpos_8bit, + my_mb_wc_bin, + my_wc_mb_bin, + my_caseup_str_bin, + my_casedn_str_bin, + my_caseup_bin, + my_casedn_bin, + my_snprintf_8bit, + my_long10_to_str_8bit, + my_longlong10_to_str_8bit, + my_fill_8bit, + my_strntol_8bit, + my_strntoul_8bit, + my_strntoll_8bit, + my_strntoull_8bit, + my_strntod_8bit, + my_scan_8bit +}; + CHARSET_INFO my_charset_bin = { 63,0,0, /* number */ @@ -277,33 +313,8 @@ CHARSET_INFO my_charset_bin = NULL, /* tab_from_uni */ "","", 0, /* strxfrm_multiply */ - my_strnncoll_binary, /* strnncoll */ - my_strnncollsp_binary, - my_strnxfrm_bin, /* strxnfrm */ - my_like_range_simple, /* like_range */ - my_wildcmp_bin, /* wildcmp */ 1, /* mbmaxlen */ - NULL, /* ismbchar */ - NULL, /* mbcharlen */ - my_numchars_8bit, - my_charpos_8bit, - my_mb_wc_bin, /* mb_wc */ - my_wc_mb_bin, /* wc_mb */ - my_caseup_str_bin, /* caseup_str */ - my_casedn_str_bin, /* casedn_str */ - my_caseup_bin, /* caseup */ - my_casedn_bin, /* casedn */ - my_strcasecmp_bin, /* strcasecmp */ - my_hash_sort_bin, /* hash_sort */ (char) 255, /* max_sort_char */ - my_snprintf_8bit, /* snprintf */ - my_long10_to_str_8bit, - my_longlong10_to_str_8bit, - my_fill_8bit, - my_strntol_8bit, - my_strntoul_8bit, - my_strntoll_8bit, - my_strntoull_8bit, - my_strntod_8bit, - my_scan_8bit + &my_charset_handler, + &my_collation_bin_handler }; diff --git a/strings/ctype-czech.c b/strings/ctype-czech.c index 788cd96ad13..fc3ff137778 100644 --- a/strings/ctype-czech.c +++ b/strings/ctype-czech.c @@ -604,6 +604,16 @@ int my_strnncollsp_czech(CHARSET_INFO * cs, return my_strnncoll_czech(cs,s,slen,t,tlen); } +static MY_COLLATION_HANDLER my_collation_latin2_czech_ci_handler = +{ + my_strnncoll_czech, + my_strnncollsp_czech, + my_strnxfrm_czech, + my_like_range_czech, + my_wildcmp_8bit, + my_strcasecmp_8bit, + my_hash_sort_simple, +}; CHARSET_INFO my_charset_latin2_czech_ci = { @@ -620,37 +630,13 @@ CHARSET_INFO my_charset_latin2_czech_ci = idx_uni_8859_2, /* tab_from_uni */ "","", 4, /* strxfrm_multiply */ - my_strnncoll_czech, - my_strnncollsp_czech, - my_strnxfrm_czech, - my_like_range_czech, - my_wildcmp_8bit, 1, /* mbmaxlen */ - NULL, /* ismbchar */ - NULL, /* mbcharlen */ - my_numchars_8bit, - my_charpos_8bit, - my_mb_wc_8bit, /* mb_wc */ - my_wc_mb_8bit, /* wc_mb */ - my_caseup_str_8bit, - my_casedn_str_8bit, - my_caseup_8bit, - my_casedn_8bit, - my_strcasecmp_8bit, - my_hash_sort_simple, 0, - my_snprintf_8bit, - my_long10_to_str_8bit, - my_longlong10_to_str_8bit, - my_fill_8bit, - my_strntol_8bit, - my_strntoul_8bit, - my_strntoll_8bit, - my_strntoull_8bit, - my_strntod_8bit, - my_scan_8bit + &my_charset_8bit_handler, + &my_collation_latin2_czech_ci_handler }; + #endif #endif diff --git a/strings/ctype-euc_kr.c b/strings/ctype-euc_kr.c index 3bf689910e6..8c5b394cc1f 100644 --- a/strings/ctype-euc_kr.c +++ b/strings/ctype-euc_kr.c @@ -8634,6 +8634,43 @@ my_mb_wc_euc_kr(CHARSET_INFO *cs __attribute__((unused)), return 2; } + +static MY_COLLATION_HANDLER my_collation_ci_handler = +{ + my_strnncoll_simple,/* strnncoll */ + my_strnncollsp_simple, + my_strnxfrm_simple, /* strnxfrm */ + my_like_range_simple,/* like_range */ + my_wildcmp_mb, /* wildcmp */ + my_strcasecmp_mb, + my_hash_sort_simple, +}; + +static MY_CHARSET_HANDLER my_charset_handler= +{ + ismbchar_euc_kr, + mbcharlen_euc_kr, + my_numchars_mb, + my_charpos_mb, + my_mb_wc_euc_kr, /* mb_wc */ + my_wc_mb_euc_kr, /* wc_mb */ + my_caseup_str_mb, + my_casedn_str_mb, + my_caseup_mb, + my_casedn_mb, + my_snprintf_8bit, + my_long10_to_str_8bit, + my_longlong10_to_str_8bit, + my_fill_8bit, + my_strntol_8bit, + my_strntoul_8bit, + my_strntoll_8bit, + my_strntoull_8bit, + my_strntod_8bit, + my_scan_8bit +}; + + CHARSET_INFO my_charset_euckr_korean_ci = { 19,0,0, /* number */ @@ -8649,35 +8686,10 @@ CHARSET_INFO my_charset_euckr_korean_ci = NULL, /* tab_from_uni */ "","", 0, /* strxfrm_multiply */ - my_strnncoll_simple,/* strnncoll */ - my_strnncollsp_simple, - my_strnxfrm_simple, /* strnxfrm */ - my_like_range_simple,/* like_range */ - my_wildcmp_mb, /* wildcmp */ 2, /* mbmaxlen */ - ismbchar_euc_kr, - mbcharlen_euc_kr, - my_numchars_mb, - my_charpos_mb, - my_mb_wc_euc_kr, /* mb_wc */ - my_wc_mb_euc_kr, /* wc_mb */ - my_caseup_str_mb, - my_casedn_str_mb, - my_caseup_mb, - my_casedn_mb, - my_strcasecmp_mb, - my_hash_sort_simple, 0, - my_snprintf_8bit, - my_long10_to_str_8bit, - my_longlong10_to_str_8bit, - my_fill_8bit, - my_strntol_8bit, - my_strntoul_8bit, - my_strntoll_8bit, - my_strntoull_8bit, - my_strntod_8bit, - my_scan_8bit + &my_charset_handler, + &my_collation_ci_handler }; #endif diff --git a/strings/ctype-extra.c b/strings/ctype-extra.c index 40d2b7ab1da..55bfa09ea5f 100644 --- a/strings/ctype-extra.c +++ b/strings/ctype-extra.c @@ -32,35 +32,9 @@ CHARSET_INFO compiled_charsets[] = { NULL, /* tab_from_uni */ "","", 0, - NULL, /* strnncoll */ - NULL, /* strnncollsp */ - NULL, /* strnxfrm */ - NULL, /* like_range */ - NULL, /* wildcmp */ 0, - NULL, - NULL, - NULL, - NULL, - NULL, /* mb_wc */ - NULL, /* wc_mb */ - - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, /* hash_sort */ 0, NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, NULL } }; diff --git a/strings/ctype-gb2312.c b/strings/ctype-gb2312.c index 20e1ce888e8..b3aa58bb38a 100644 --- a/strings/ctype-gb2312.c +++ b/strings/ctype-gb2312.c @@ -5684,6 +5684,43 @@ my_mb_wc_gb2312(CHARSET_INFO *cs __attribute__((unused)), return 2; } + +static MY_COLLATION_HANDLER my_collation_ci_handler = +{ + my_strnncoll_simple,/* strnncoll */ + my_strnncollsp_simple, + my_strnxfrm_simple, /* strnxfrm */ + my_like_range_simple,/* like_range */ + my_wildcmp_mb, /* wildcmp */ + my_strcasecmp_mb, + my_hash_sort_simple, +}; + +static MY_CHARSET_HANDLER my_charset_handler= +{ + ismbchar_gb2312, + mbcharlen_gb2312, + my_numchars_mb, + my_charpos_mb, + my_mb_wc_gb2312, /* mb_wc */ + my_wc_mb_gb2312, /* wc_mb */ + my_caseup_str_mb, + my_casedn_str_mb, + my_caseup_mb, + my_casedn_mb, + my_snprintf_8bit, + my_long10_to_str_8bit, + my_longlong10_to_str_8bit, + my_fill_8bit, + my_strntol_8bit, + my_strntoul_8bit, + my_strntoll_8bit, + my_strntoull_8bit, + my_strntod_8bit, + my_scan_8bit +}; + + CHARSET_INFO my_charset_gb2312_chinese_ci = { 24,0,0, /* number */ @@ -5699,35 +5736,10 @@ CHARSET_INFO my_charset_gb2312_chinese_ci = NULL, /* tab_from_uni */ "","", 0, /* strxfrm_multiply */ - my_strnncoll_simple,/* strnncoll */ - my_strnncollsp_simple, - my_strnxfrm_simple, /* strnxfrm */ - my_like_range_simple,/* like_range */ - my_wildcmp_mb, /* wildcmp */ 2, /* mbmaxlen */ - ismbchar_gb2312, - mbcharlen_gb2312, - my_numchars_mb, - my_charpos_mb, - my_mb_wc_gb2312, /* mb_wc */ - my_wc_mb_gb2312, /* wc_mb */ - my_caseup_str_mb, - my_casedn_str_mb, - my_caseup_mb, - my_casedn_mb, - my_strcasecmp_mb, - my_hash_sort_simple, 0, - my_snprintf_8bit, - my_long10_to_str_8bit, - my_longlong10_to_str_8bit, - my_fill_8bit, - my_strntol_8bit, - my_strntoul_8bit, - my_strntoll_8bit, - my_strntoull_8bit, - my_strntod_8bit, - my_scan_8bit + &my_charset_handler, + &my_collation_ci_handler }; #endif diff --git a/strings/ctype-gbk.c b/strings/ctype-gbk.c index ec0cc01881b..9d249143db8 100644 --- a/strings/ctype-gbk.c +++ b/strings/ctype-gbk.c @@ -9881,6 +9881,43 @@ my_mb_wc_gbk(CHARSET_INFO *cs __attribute__((unused)), } + +static MY_COLLATION_HANDLER my_collation_ci_handler = +{ + my_strnncoll_gbk, + my_strnncollsp_gbk, + my_strnxfrm_gbk, + my_like_range_gbk, + my_wildcmp_mb, + my_strcasecmp_mb, + my_hash_sort_simple, +}; + +static MY_CHARSET_HANDLER my_charset_handler= +{ + ismbchar_gbk, + mbcharlen_gbk, + my_numchars_mb, + my_charpos_mb, + my_mb_wc_gbk, + my_wc_mb_gbk, + my_caseup_str_mb, + my_casedn_str_mb, + my_caseup_mb, + my_casedn_mb, + my_snprintf_8bit, + my_long10_to_str_8bit, + my_longlong10_to_str_8bit, + my_fill_8bit, + my_strntol_8bit, + my_strntoul_8bit, + my_strntoll_8bit, + my_strntoull_8bit, + my_strntod_8bit, + my_scan_8bit +}; + + CHARSET_INFO my_charset_gbk_chinese_ci = { 28,0,0, /* number */ @@ -9896,35 +9933,10 @@ CHARSET_INFO my_charset_gbk_chinese_ci = NULL, /* tab_from_uni */ "","", 1, /* strxfrm_multiply */ - my_strnncoll_gbk, - my_strnncollsp_gbk, - my_strnxfrm_gbk, - my_like_range_gbk, - my_wildcmp_mb, /* wildcmp */ 2, /* mbmaxlen */ - ismbchar_gbk, - mbcharlen_gbk, - my_numchars_mb, - my_charpos_mb, - my_mb_wc_gbk, /* mb_wc */ - my_wc_mb_gbk, /* wc_mb */ - my_caseup_str_mb, - my_casedn_str_mb, - my_caseup_mb, - my_casedn_mb, - my_strcasecmp_mb, - my_hash_sort_simple, 0, - my_snprintf_8bit, - my_long10_to_str_8bit, - my_longlong10_to_str_8bit, - my_fill_8bit, - my_strntol_8bit, - my_strntoul_8bit, - my_strntoll_8bit, - my_strntoull_8bit, - my_strntod_8bit, - my_scan_8bit + &my_charset_handler, + &my_collation_ci_handler }; diff --git a/strings/ctype-latin1.c b/strings/ctype-latin1.c index 4340d0973aa..5ac60326e62 100644 --- a/strings/ctype-latin1.c +++ b/strings/ctype-latin1.c @@ -174,6 +174,30 @@ int my_wc_mb_latin1(CHARSET_INFO *cs __attribute__((unused)), return ((wc < 256) && ((str[0]=uni_latin1[wc]) || (!wc))) ? 1 : MY_CS_ILUNI; } +static MY_CHARSET_HANDLER my_charset_handler= +{ + NULL, + NULL, + my_numchars_8bit, + my_charpos_8bit, + my_mb_wc_latin1, + my_wc_mb_latin1, + my_caseup_str_8bit, + my_casedn_str_8bit, + my_caseup_8bit, + my_casedn_8bit, + my_snprintf_8bit, + my_long10_to_str_8bit, + my_longlong10_to_str_8bit, + my_fill_8bit, + my_strntol_8bit, + my_strntoul_8bit, + my_strntoll_8bit, + my_strntoull_8bit, + my_strntod_8bit, + my_scan_8bit +}; + CHARSET_INFO my_charset_latin1 = { @@ -190,35 +214,10 @@ CHARSET_INFO my_charset_latin1 = NULL, /* tab_from_uni */ "","", 0, /* strxfrm_multiply */ - my_strnncoll_simple, - my_strnncollsp_simple, - my_strnxfrm_simple, - my_like_range_simple, - my_wildcmp_8bit, /* wildcmp */ 1, /* mbmaxlen */ - NULL, /* ismbchar */ - NULL, /* mbcharlen */ - my_numchars_8bit, - my_charpos_8bit, - my_mb_wc_latin1, /* mb_wc */ - my_wc_mb_latin1, /* wc_mb */ - my_caseup_str_8bit, - my_casedn_str_8bit, - my_caseup_8bit, - my_casedn_8bit, - my_strcasecmp_8bit, - my_hash_sort_simple, 0, - my_snprintf_8bit, - my_long10_to_str_8bit, - my_longlong10_to_str_8bit, - my_fill_8bit, - my_strntol_8bit, - my_strntoul_8bit, - my_strntoll_8bit, - my_strntoull_8bit, - my_strntod_8bit, - my_scan_8bit + &my_charset_handler, + &my_collation_8bit_simple_ci_handler }; @@ -428,6 +427,19 @@ static int my_strnxfrm_latin1_de(CHARSET_INFO *cs __attribute__((unused)), return dest - dest_orig; } + +static MY_COLLATION_HANDLER my_collation_german2_ci_handler = +{ + my_strnncoll_latin1_de, + my_strnncollsp_latin1_de, + my_strnxfrm_latin1_de, + my_like_range_simple, + my_wildcmp_8bit, + my_strcasecmp_8bit, + my_hash_sort_simple +}; + + CHARSET_INFO my_charset_latin1_german2_ci = { 31,0,0, /* number */ @@ -443,34 +455,9 @@ CHARSET_INFO my_charset_latin1_german2_ci = NULL, /* tab_from_uni */ "","", 2, /* strxfrm_multiply */ - my_strnncoll_latin1_de, - my_strnncollsp_latin1_de, - my_strnxfrm_latin1_de, - my_like_range_simple, - my_wildcmp_8bit, /* wildcmp */ 1, /* mbmaxlen */ - NULL, /* ismbchar */ - NULL, /* mbcharlen */ - my_numchars_8bit, - my_charpos_8bit, - my_mb_wc_latin1, /* mb_wc */ - my_wc_mb_latin1, /* wc_mb */ - my_caseup_str_8bit, - my_casedn_str_8bit, - my_caseup_8bit, - my_casedn_8bit, - my_strcasecmp_8bit, - my_hash_sort_simple, 0, - my_snprintf_8bit, - my_long10_to_str_8bit, - my_longlong10_to_str_8bit, - my_fill_8bit, - my_strntol_8bit, - my_strntoul_8bit, - my_strntoll_8bit, - my_strntoull_8bit, - my_strntod_8bit, - my_scan_8bit + &my_charset_handler, + &my_collation_german2_ci_handler }; diff --git a/strings/ctype-simple.c b/strings/ctype-simple.c index 7d8f5b9535b..8f3e66f782e 100644 --- a/strings/ctype-simple.c +++ b/strings/ctype-simple.c @@ -1019,3 +1019,38 @@ uint my_charpos_8bit(CHARSET_INFO *cs __attribute__((unused)), { return pos; } + +MY_CHARSET_HANDLER my_charset_8bit_handler= +{ + NULL, /* ismbchar */ + NULL, /* mbcharlen */ + my_numchars_8bit, + my_charpos_8bit, + my_mb_wc_8bit, + my_wc_mb_8bit, + my_caseup_str_8bit, + my_casedn_str_8bit, + my_caseup_8bit, + my_casedn_8bit, + my_snprintf_8bit, + my_long10_to_str_8bit, + my_longlong10_to_str_8bit, + my_fill_8bit, + my_strntol_8bit, + my_strntoul_8bit, + my_strntoll_8bit, + my_strntoull_8bit, + my_strntod_8bit, + my_scan_8bit +}; + +MY_COLLATION_HANDLER my_collation_8bit_simple_ci_handler = +{ + my_strnncoll_simple, + my_strnncollsp_simple, + my_strnxfrm_simple, + my_like_range_simple, + my_wildcmp_8bit, + my_strcasecmp_8bit, + my_hash_sort_simple +}; diff --git a/strings/ctype-sjis.c b/strings/ctype-sjis.c index 058558fa419..3e33fb3810a 100644 --- a/strings/ctype-sjis.c +++ b/strings/ctype-sjis.c @@ -4468,6 +4468,43 @@ my_mb_wc_sjis(CHARSET_INFO *cs __attribute__((unused)), return 2; } + +static MY_COLLATION_HANDLER my_collation_ci_handler = +{ + my_strnncoll_sjis, + my_strnncollsp_sjis, + my_strnxfrm_sjis, + my_like_range_sjis, + my_wildcmp_mb, /* wildcmp */ + my_strcasecmp_8bit, + my_hash_sort_simple, +}; + +static MY_CHARSET_HANDLER my_charset_handler= +{ + ismbchar_sjis, + mbcharlen_sjis, + my_numchars_mb, + my_charpos_mb, + my_mb_wc_sjis, /* mb_wc */ + my_wc_mb_sjis, /* wc_mb */ + my_caseup_str_8bit, + my_casedn_str_8bit, + my_caseup_8bit, + my_casedn_8bit, + my_snprintf_8bit, + my_long10_to_str_8bit, + my_longlong10_to_str_8bit, + my_fill_8bit, + my_strntol_8bit, + my_strntoul_8bit, + my_strntoll_8bit, + my_strntoull_8bit, + my_strntod_8bit, + my_scan_8bit +}; + + CHARSET_INFO my_charset_sjis_japanese_ci = { 13,0,0, /* number */ @@ -4483,35 +4520,11 @@ CHARSET_INFO my_charset_sjis_japanese_ci = NULL, /* tab_from_uni */ "","", 1, /* strxfrm_multiply */ - my_strnncoll_sjis, - my_strnncollsp_sjis, - my_strnxfrm_sjis, - my_like_range_sjis, - my_wildcmp_mb, /* wildcmp */ 2, /* mbmaxlen */ - ismbchar_sjis, - mbcharlen_sjis, - my_numchars_mb, - my_charpos_mb, - my_mb_wc_sjis, /* mb_wc */ - my_wc_mb_sjis, /* wc_mb */ - my_caseup_str_8bit, - my_casedn_str_8bit, - my_caseup_8bit, - my_casedn_8bit, - my_strcasecmp_8bit, - my_hash_sort_simple, 0, - my_snprintf_8bit, - my_long10_to_str_8bit, - my_longlong10_to_str_8bit, - my_fill_8bit, - my_strntol_8bit, - my_strntoul_8bit, - my_strntoll_8bit, - my_strntoull_8bit, - my_strntod_8bit, - my_scan_8bit + &my_charset_handler, + &my_collation_ci_handler + }; #endif diff --git a/strings/ctype-tis620.c b/strings/ctype-tis620.c index 9fcecdfdffd..8574b3d7d84 100644 --- a/strings/ctype-tis620.c +++ b/strings/ctype-tis620.c @@ -688,27 +688,19 @@ void ThNormalize(uchar* ptr, uint field_length, const uchar* from, uint length) } -CHARSET_INFO my_charset_tis620_thai_ci = +static MY_COLLATION_HANDLER my_collation_ci_handler = { - 18,0,0, /* number */ - MY_CS_COMPILED|MY_CS_PRIMARY|MY_CS_STRNXFRM, /* state */ - "tis620", /* cs name */ - "tis620_thai_ci", /* name */ - "", /* comment */ - ctype_tis620, - to_lower_tis620, - to_upper_tis620, - sort_order_tis620, - NULL, /* tab_to_uni */ - NULL, /* tab_from_uni */ - "","", - 4, /* strxfrm_multiply */ my_strnncoll_tis620, my_strnncollsp_tis620, my_strnxfrm_tis620, my_like_range_tis620, my_wildcmp_8bit, /* wildcmp */ - 1, /* mbmaxlen */ + my_strcasecmp_8bit, + my_hash_sort_simple, +}; + +static MY_CHARSET_HANDLER my_charset_handler= +{ NULL, /* ismbchar */ NULL, /* mbcharlen */ my_numchars_8bit, @@ -719,9 +711,6 @@ CHARSET_INFO my_charset_tis620_thai_ci = my_casedn_str_8bit, my_caseup_8bit, my_casedn_8bit, - my_strcasecmp_8bit, - my_hash_sort_simple, - 0, my_snprintf_8bit, my_long10_to_str_8bit, my_longlong10_to_str_8bit, @@ -735,4 +724,27 @@ CHARSET_INFO my_charset_tis620_thai_ci = }; + +CHARSET_INFO my_charset_tis620_thai_ci = +{ + 18,0,0, /* number */ + MY_CS_COMPILED|MY_CS_PRIMARY|MY_CS_STRNXFRM, /* state */ + "tis620", /* cs name */ + "tis620_thai_ci", /* name */ + "", /* comment */ + ctype_tis620, + to_lower_tis620, + to_upper_tis620, + sort_order_tis620, + NULL, /* tab_to_uni */ + NULL, /* tab_from_uni */ + "","", + 4, /* strxfrm_multiply */ + 1, /* mbmaxlen */ + 0, + &my_charset_handler, + &my_collation_ci_handler +}; + + #endif diff --git a/strings/ctype-ucs2.c b/strings/ctype-ucs2.c index dae0632f754..3e3981f1be9 100644 --- a/strings/ctype-ucs2.c +++ b/strings/ctype-ucs2.c @@ -403,7 +403,7 @@ long my_strntol_ucs2(CHARSET_INFO *cs, *err= 0; do { - if ((cnv=cs->mb_wc(cs,&wc,s,e))>0) + if ((cnv=cs->cset->mb_wc(cs,&wc,s,e))>0) { switch (wc) { @@ -438,7 +438,7 @@ bs: cutlim = (uint) (((ulong)~0L) % (unsigned long int) base); do { - if ((cnv=cs->mb_wc(cs,&wc,s,e))>0) + if ((cnv=cs->cset->mb_wc(cs,&wc,s,e))>0) { s+=cnv; if ( wc>='0' && wc<='9') @@ -518,7 +518,7 @@ ulong my_strntoul_ucs2(CHARSET_INFO *cs, *err= 0; do { - if ((cnv=cs->mb_wc(cs,&wc,s,e))>0) + if ((cnv=cs->cset->mb_wc(cs,&wc,s,e))>0) { switch (wc) { @@ -554,7 +554,7 @@ bs: do { - if ((cnv=cs->mb_wc(cs,&wc,s,e))>0) + if ((cnv=cs->cset->mb_wc(cs,&wc,s,e))>0) { s+=cnv; if ( wc>='0' && wc<='9') @@ -628,7 +628,7 @@ longlong my_strntoll_ucs2(CHARSET_INFO *cs, *err= 0; do { - if ((cnv=cs->mb_wc(cs,&wc,s,e))>0) + if ((cnv=cs->cset->mb_wc(cs,&wc,s,e))>0) { switch (wc) { @@ -663,7 +663,7 @@ bs: cutlim = (uint) ((~(ulonglong) 0) % (unsigned long int) base); do { - if ((cnv=cs->mb_wc(cs,&wc,s,e))>0) + if ((cnv=cs->cset->mb_wc(cs,&wc,s,e))>0) { s+=cnv; if ( wc>='0' && wc<='9') @@ -745,7 +745,7 @@ ulonglong my_strntoull_ucs2(CHARSET_INFO *cs, *err= 0; do { - if ((cnv=cs->mb_wc(cs,&wc,s,e))>0) + if ((cnv=cs->cset->mb_wc(cs,&wc,s,e))>0) { switch (wc) { @@ -781,7 +781,7 @@ bs: do { - if ((cnv=cs->mb_wc(cs,&wc,s,e))>0) + if ((cnv=cs->cset->mb_wc(cs,&wc,s,e))>0) { s+=cnv; if ( wc>='0' && wc<='9') @@ -853,7 +853,7 @@ double my_strntod_ucs2(CHARSET_INFO *cs __attribute__((unused)), length= sizeof(buf)-1; end= s+length; - while ((cnv=cs->mb_wc(cs,&wc,s,end)) > 0) + while ((cnv=cs->cset->mb_wc(cs,&wc,s,end)) > 0) { s+=cnv; if (wc > (int) (uchar) 'e' || !wc) @@ -913,7 +913,7 @@ int my_l10tostr_ucs2(CHARSET_INFO *cs, for ( db=dst, de=dst+len ; (dst<de) && *p ; p++) { - int cnvres=cs->wc_mb(cs,(my_wc_t)p[0],(uchar*) dst, (uchar*) de); + int cnvres=cs->cset->wc_mb(cs,(my_wc_t)p[0],(uchar*) dst, (uchar*) de); if (cnvres>0) dst+=cnvres; else @@ -972,7 +972,7 @@ cnv: for ( db=dst, de=dst+len ; (dst<de) && *p ; p++) { - int cnvres=cs->wc_mb(cs, (my_wc_t) p[0], (uchar*) dst, (uchar*) de); + int cnvres=cs->cset->wc_mb(cs, (my_wc_t) p[0], (uchar*) dst, (uchar*) de); if (cnvres>0) dst+=cnvres; else @@ -997,27 +997,20 @@ uint my_charpos_ucs2(CHARSET_INFO *cs __attribute__((unused)), return pos*2; } -CHARSET_INFO my_charset_ucs2_general_ci = + +static MY_COLLATION_HANDLER my_collation_ci_handler = { - 35,0,0, /* number */ - MY_CS_COMPILED|MY_CS_PRIMARY|MY_CS_STRNXFRM|MY_CS_UNICODE, /* state */ - "ucs2", /* cs name */ - "ucs2_general_ci", /* name */ - "", /* comment */ - ctype_ucs2, /* ctype */ - to_lower_ucs2, /* to_lower */ - to_upper_ucs2, /* to_upper */ - to_upper_ucs2, /* sort_order */ - NULL, /* tab_to_uni */ - NULL, /* tab_from_uni */ - "","", - 1, /* strxfrm_multiply */ - my_strnncoll_ucs2, /* strnncoll */ my_strnncoll_ucs2, - my_strnxfrm_ucs2, /* strnxfrm */ - my_like_range_simple,/* like_range */ - my_wildcmp_mb, /* wildcmp */ - 2, /* mbmaxlen */ + my_strnncoll_ucs2, + my_strnxfrm_ucs2, + my_like_range_simple, + my_wildcmp_mb, + my_strcasecmp_ucs2, + my_hash_sort_ucs2 +}; + +static MY_CHARSET_HANDLER my_charset_handler= +{ my_ismbchar_ucs2, /* ismbchar */ my_mbcharlen_ucs2, /* mbcharlen */ my_numchars_ucs2, @@ -1028,9 +1021,6 @@ CHARSET_INFO my_charset_ucs2_general_ci = my_casedn_str_ucs2, my_caseup_ucs2, my_casedn_ucs2, - my_strcasecmp_ucs2, - my_hash_sort_ucs2, /* hash_sort */ - 0, my_snprintf_ucs2, my_l10tostr_ucs2, my_ll10tostr_ucs2, @@ -1044,4 +1034,27 @@ CHARSET_INFO my_charset_ucs2_general_ci = }; + +CHARSET_INFO my_charset_ucs2_general_ci = +{ + 35,0,0, /* number */ + MY_CS_COMPILED|MY_CS_PRIMARY|MY_CS_STRNXFRM|MY_CS_UNICODE, /* state */ + "ucs2", /* cs name */ + "ucs2_general_ci", /* name */ + "", /* comment */ + ctype_ucs2, /* ctype */ + to_lower_ucs2, /* to_lower */ + to_upper_ucs2, /* to_upper */ + to_upper_ucs2, /* sort_order */ + NULL, /* tab_to_uni */ + NULL, /* tab_from_uni */ + "","", + 1, /* strxfrm_multiply */ + 2, /* mbmaxlen */ + 0, + &my_charset_handler, + &my_collation_ci_handler +}; + + #endif diff --git a/strings/ctype-ujis.c b/strings/ctype-ujis.c index 76c69637906..bf81269059c 100644 --- a/strings/ctype-ujis.c +++ b/strings/ctype-ujis.c @@ -8425,27 +8425,20 @@ my_wc_mb_euc_jp(CHARSET_INFO *c,my_wc_t wc, unsigned char *s, unsigned char *e) return MY_CS_ILUNI; } -CHARSET_INFO my_charset_ujis_japanese_ci = + +static MY_COLLATION_HANDLER my_collation_ci_handler = { - 12,0,0, /* number */ - MY_CS_COMPILED|MY_CS_PRIMARY, /* state */ - "ujis", /* cs name */ - "ujis_japanese_ci", /* name */ - "", /* comment */ - ctype_ujis, - to_lower_ujis, - to_upper_ujis, - sort_order_ujis, - NULL, /* tab_to_uni */ - NULL, /* tab_from_uni */ - "","", - 0, /* strxfrm_multiply */ my_strnncoll_simple,/* strnncoll */ my_strnncollsp_simple, my_strnxfrm_simple, /* strnxfrm */ my_like_range_simple,/* like_range */ my_wildcmp_mb, /* wildcmp */ - 3, /* mbmaxlen */ + my_strcasecmp_mb, + my_hash_sort_simple, +}; + +static MY_CHARSET_HANDLER my_charset_handler= +{ ismbchar_ujis, mbcharlen_ujis, my_numchars_mb, @@ -8456,9 +8449,6 @@ CHARSET_INFO my_charset_ujis_japanese_ci = my_casedn_str_mb, my_caseup_mb, my_casedn_mb, - my_strcasecmp_mb, - my_hash_sort_simple, - 0, my_snprintf_8bit, my_long10_to_str_8bit, my_longlong10_to_str_8bit, @@ -8472,4 +8462,27 @@ CHARSET_INFO my_charset_ujis_japanese_ci = }; + +CHARSET_INFO my_charset_ujis_japanese_ci = +{ + 12,0,0, /* number */ + MY_CS_COMPILED|MY_CS_PRIMARY, /* state */ + "ujis", /* cs name */ + "ujis_japanese_ci", /* name */ + "", /* comment */ + ctype_ujis, + to_lower_ujis, + to_upper_ujis, + sort_order_ujis, + NULL, /* tab_to_uni */ + NULL, /* tab_from_uni */ + "","", + 0, /* strxfrm_multiply */ + 3, /* mbmaxlen */ + 0, + &my_charset_handler, + &my_collation_ci_handler +}; + + #endif diff --git a/strings/ctype-utf8.c b/strings/ctype-utf8.c index 9f08ca2e169..16e42385300 100644 --- a/strings/ctype-utf8.c +++ b/strings/ctype-utf8.c @@ -1950,40 +1950,30 @@ static int my_mbcharlen_utf8(CHARSET_INFO *cs __attribute__((unused)) , uint c) return 0; /* Illegal mb head */; } -CHARSET_INFO my_charset_utf8_general_ci = + +static MY_COLLATION_HANDLER my_collation_ci_handler = { - 33,0,0, /* number */ - MY_CS_COMPILED|MY_CS_PRIMARY|MY_CS_STRNXFRM|MY_CS_UNICODE, /* state */ - "utf8", /* cs name */ - "utf8_general_ci", /* name */ - "", /* comment */ - ctype_utf8, /* ctype */ - to_lower_utf8, /* to_lower */ - to_upper_utf8, /* to_upper */ - to_upper_utf8, /* sort_order */ - NULL, /* tab_to_uni */ - NULL, /* tab_from_uni */ - "","", - 1, /* strxfrm_multiply */ - my_strnncoll_utf8, /* strnncoll */ + my_strnncoll_utf8, my_strnncollsp_utf8, - my_strnxfrm_utf8, /* strnxfrm */ - my_like_range_simple,/* like_range */ - my_wildcmp_mb, /* wildcmp */ - 3, /* mbmaxlen */ - my_ismbchar_utf8, /* ismbchar */ - my_mbcharlen_utf8, /* mbcharlen */ + my_strnxfrm_utf8, + my_like_range_simple, + my_wildcmp_mb, + my_strcasecmp_utf8, + my_hash_sort_utf8 +}; + +static MY_CHARSET_HANDLER my_charset_handler= +{ + my_ismbchar_utf8, + my_mbcharlen_utf8, my_numchars_mb, my_charpos_mb, - my_utf8_uni, /* mb_wc */ - my_uni_utf8, /* wc_mb */ + my_utf8_uni, + my_uni_utf8, my_caseup_str_utf8, my_casedn_str_utf8, my_caseup_utf8, my_casedn_utf8, - my_strcasecmp_utf8, - my_hash_sort_utf8, /* hash_sort */ - 0, my_snprintf_8bit, my_long10_to_str_8bit, my_longlong10_to_str_8bit, @@ -1997,6 +1987,29 @@ CHARSET_INFO my_charset_utf8_general_ci = }; + +CHARSET_INFO my_charset_utf8_general_ci = +{ + 33,0,0, /* number */ + MY_CS_COMPILED|MY_CS_PRIMARY|MY_CS_STRNXFRM|MY_CS_UNICODE, /* state */ + "utf8", /* cs name */ + "utf8_general_ci", /* name */ + "", /* comment */ + ctype_utf8, /* ctype */ + to_lower_utf8, /* to_lower */ + to_upper_utf8, /* to_upper */ + to_upper_utf8, /* sort_order */ + NULL, /* tab_to_uni */ + NULL, /* tab_from_uni */ + "","", + 1, /* strxfrm_multiply */ + 3, /* mbmaxlen */ + 0, + &my_charset_handler, + &my_collation_ci_handler +}; + + #ifdef MY_TEST_UTF8 #include <stdio.h> diff --git a/strings/ctype-win1250ch.c b/strings/ctype-win1250ch.c index 87ba58d0553..af4faca46e1 100644 --- a/strings/ctype-win1250ch.c +++ b/strings/ctype-win1250ch.c @@ -640,6 +640,17 @@ static my_bool my_like_range_win1250ch(CHARSET_INFO *cs __attribute__((unused)), } +static MY_COLLATION_HANDLER my_collation_czech_ci_handler = +{ + my_strnncoll_win1250ch, + my_strnncollsp_win1250ch, + my_strnxfrm_win1250ch, + my_like_range_win1250ch, + my_wildcmp_8bit, + my_strcasecmp_8bit, + my_hash_sort_simple +}; + CHARSET_INFO my_charset_cp1250_czech_ci = { 34,0,0, /* number */ @@ -655,35 +666,10 @@ CHARSET_INFO my_charset_cp1250_czech_ci = idx_uni_cp1250, /* tab_from_uni */ "","", 2, /* strxfrm_multiply */ - my_strnncoll_win1250ch, - my_strnncollsp_win1250ch, - my_strnxfrm_win1250ch, - my_like_range_win1250ch, - my_wildcmp_8bit, /* wildcmp */ 1, /* mbmaxlen */ - NULL, /* ismbchar */ - NULL, /* mbcharlen */ - my_numchars_8bit, - my_charpos_8bit, - my_mb_wc_8bit, /* mb_wc */ - my_wc_mb_8bit, /* wc_mb */ - my_caseup_str_8bit, - my_casedn_str_8bit, - my_caseup_8bit, - my_casedn_8bit, - my_strcasecmp_8bit, - my_hash_sort_simple, 0, - my_snprintf_8bit, - my_long10_to_str_8bit, - my_longlong10_to_str_8bit, - my_fill_8bit, - my_strntol_8bit, - my_strntoul_8bit, - my_strntoll_8bit, - my_strntoull_8bit, - my_strntod_8bit, - my_scan_8bit + &my_charset_8bit_handler, + &my_collation_czech_ci_handler }; |