summaryrefslogtreecommitdiff
path: root/strings
diff options
context:
space:
mode:
authorunknown <bar@bar.mysql.r18.ru>2003-05-23 17:45:52 +0500
committerunknown <bar@bar.mysql.r18.ru>2003-05-23 17:45:52 +0500
commit5aae66c1017aaef0efc0080c095436f954288bd6 (patch)
tree40660f305f13b43f69d092c4719cebfaaf120a40 /strings
parentf461dea4d7066c6dfe14b33cc549f7e0183f6b8e (diff)
downloadmariadb-git-5aae66c1017aaef0efc0080c095436f954288bd6.tar.gz
CHARSET_INFO structure reorganization for easier maintainance
Diffstat (limited to 'strings')
-rw-r--r--strings/ctype-big5.c67
-rw-r--r--strings/ctype-bin.c65
-rw-r--r--strings/ctype-czech.c40
-rw-r--r--strings/ctype-euc_kr.c66
-rw-r--r--strings/ctype-extra.c26
-rw-r--r--strings/ctype-gb2312.c66
-rw-r--r--strings/ctype-gbk.c66
-rw-r--r--strings/ctype-latin1.c95
-rw-r--r--strings/ctype-simple.c35
-rw-r--r--strings/ctype-sjis.c67
-rw-r--r--strings/ctype-tis620.c48
-rw-r--r--strings/ctype-ucs2.c79
-rw-r--r--strings/ctype-ujis.c49
-rw-r--r--strings/ctype-utf8.c65
-rw-r--r--strings/ctype-win1250ch.c40
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
};