summaryrefslogtreecommitdiff
path: root/strings
diff options
context:
space:
mode:
authorunknown <bar@bar.mysql.r18.ru>2003-01-31 16:22:22 +0400
committerunknown <bar@bar.mysql.r18.ru>2003-01-31 16:22:22 +0400
commit953e27208bb1c13addaa0caaaa15f8db28ef8d81 (patch)
tree930036a1a437c1a917250b7aa25492d61e5a9038 /strings
parent2bce5e57096ed1adc59fc5cb1a9ff71630fd9fe2 (diff)
downloadmariadb-git-953e27208bb1c13addaa0caaaa15f8db28ef8d81.tar.gz
New functions in CHARSET_INFO structure
Diffstat (limited to 'strings')
-rw-r--r--strings/ctype-big5.c2
-rw-r--r--strings/ctype-bin.c2
-rw-r--r--strings/ctype-czech.c2
-rw-r--r--strings/ctype-euc_kr.c2
-rw-r--r--strings/ctype-extra.c9
-rw-r--r--strings/ctype-gb2312.c2
-rw-r--r--strings/ctype-gbk.c2
-rw-r--r--strings/ctype-latin1.c2
-rw-r--r--strings/ctype-latin1_de.c2
-rw-r--r--strings/ctype-mb.c28
-rw-r--r--strings/ctype-simple.c16
-rw-r--r--strings/ctype-sjis.c2
-rw-r--r--strings/ctype-tis620.c2
-rw-r--r--strings/ctype-ujis.c2
-rw-r--r--strings/ctype-utf8.c19
-rw-r--r--strings/ctype-win1250ch.c2
16 files changed, 94 insertions, 2 deletions
diff --git a/strings/ctype-big5.c b/strings/ctype-big5.c
index 89a25666bd8..7827b8714ec 100644
--- a/strings/ctype-big5.c
+++ b/strings/ctype-big5.c
@@ -6254,6 +6254,8 @@ CHARSET_INFO my_charset_big5 =
ismbchar_big5,
ismbhead_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,
diff --git a/strings/ctype-bin.c b/strings/ctype-bin.c
index 1b9c67c10a9..4d428828826 100644
--- a/strings/ctype-bin.c
+++ b/strings/ctype-bin.c
@@ -292,6 +292,8 @@ CHARSET_INFO my_charset_bin =
NULL, /* ismbchar */
NULL, /* ismbhead */
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 */
diff --git a/strings/ctype-czech.c b/strings/ctype-czech.c
index 9d6b8fe2131..f42ab66fed9 100644
--- a/strings/ctype-czech.c
+++ b/strings/ctype-czech.c
@@ -628,6 +628,8 @@ CHARSET_INFO my_charset_czech =
NULL, /* ismbchar */
NULL, /* ismbhead */
NULL, /* mbcharlen */
+ my_numchars_8bit,
+ my_charpos_8bit,
my_mb_wc_8bit, /* mb_wc */
my_wc_mb_8bit, /* wc_mb */
my_caseup_str_8bit,
diff --git a/strings/ctype-euc_kr.c b/strings/ctype-euc_kr.c
index 938f215e2de..e49bf6a38fd 100644
--- a/strings/ctype-euc_kr.c
+++ b/strings/ctype-euc_kr.c
@@ -8662,6 +8662,8 @@ CHARSET_INFO my_charset_euc_kr =
ismbchar_euc_kr,
ismbhead_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,
diff --git a/strings/ctype-extra.c b/strings/ctype-extra.c
index 6100c74860b..3e3cd38c063 100644
--- a/strings/ctype-extra.c
+++ b/strings/ctype-extra.c
@@ -2828,6 +2828,8 @@ CHARSET_INFO compiled_charsets[] = {
NULL, /* ismbchar */
NULL, /* ismbhead */
NULL, /* mbcharlen */
+ my_numchars_8bit,
+ my_charpos_8bit,
my_mb_wc_8bit, /* mb_wc */
my_wc_mb_8bit, /* wc_mb */
my_caseup_str_8bit,
@@ -2877,6 +2879,8 @@ CHARSET_INFO compiled_charsets[] = {
NULL, /* ismbchar */
NULL, /* ismbhead */
NULL, /* mbcharlen */
+ my_numchars_8bit,
+ my_charpos_8bit,
my_mb_wc_8bit, /* mb_wc */
my_wc_mb_8bit, /* wc_mb */
my_caseup_str_8bit,
@@ -2925,6 +2929,8 @@ CHARSET_INFO compiled_charsets[] = {
NULL, /* ismbchar */
NULL, /* ismbhead */
NULL, /* mbcharlen */
+ my_numchars_8bit,
+ my_charpos_8bit,
my_mb_wc_8bit, /* mb_wc */
my_wc_mb_8bit, /* wc_mb */
my_caseup_str_8bit,
@@ -3937,7 +3943,8 @@ CHARSET_INFO compiled_charsets[] = {
NULL,
NULL,
NULL,
-
+ NULL,
+ NULL,
NULL, /* mb_wc */
NULL, /* wc_mb */
diff --git a/strings/ctype-gb2312.c b/strings/ctype-gb2312.c
index ff2dcd381c1..9cc19dc46ef 100644
--- a/strings/ctype-gb2312.c
+++ b/strings/ctype-gb2312.c
@@ -5712,6 +5712,8 @@ CHARSET_INFO my_charset_gb2312 =
ismbchar_gb2312,
ismbhead_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,
diff --git a/strings/ctype-gbk.c b/strings/ctype-gbk.c
index a7a29a4af7a..42a3686475a 100644
--- a/strings/ctype-gbk.c
+++ b/strings/ctype-gbk.c
@@ -9909,6 +9909,8 @@ CHARSET_INFO my_charset_gbk =
ismbchar_gbk,
ismbhead_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,
diff --git a/strings/ctype-latin1.c b/strings/ctype-latin1.c
index 588eff0cab1..518418a9050 100644
--- a/strings/ctype-latin1.c
+++ b/strings/ctype-latin1.c
@@ -198,6 +198,8 @@ CHARSET_INFO my_charset_latin1 =
NULL, /* ismbchar */
NULL, /* ismbhead */
NULL, /* mbcharlen */
+ my_numchars_8bit,
+ my_charpos_8bit,
my_mb_wc_latin1, /* mb_wc */
my_wc_mb_latin1, /* wc_mb */
my_caseup_str_8bit,
diff --git a/strings/ctype-latin1_de.c b/strings/ctype-latin1_de.c
index 0a6de1ca86b..93c8ba54bc0 100644
--- a/strings/ctype-latin1_de.c
+++ b/strings/ctype-latin1_de.c
@@ -369,6 +369,8 @@ CHARSET_INFO my_charset_latin1_de =
NULL, /* ismbchar */
NULL, /* ismbhead */
NULL, /* mbcharlen */
+ my_numchars_8bit,
+ my_charpos_8bit,
my_mb_wc_8bit, /* mb_wc */
my_wc_mb_8bit, /* wc_mb */
my_caseup_str_8bit,
diff --git a/strings/ctype-mb.c b/strings/ctype-mb.c
index 4c8471d4217..f5b7000cb18 100644
--- a/strings/ctype-mb.c
+++ b/strings/ctype-mb.c
@@ -276,5 +276,33 @@ int my_wildcmp_mb(CHARSET_INFO *cs,
return (str != str_end ? 1 : 0);
}
+uint my_numchars_mb(CHARSET_INFO *cs __attribute__((unused)),
+ const char *b, const char *e)
+{
+ register uint32 n=0,mblen;
+ while (b < e)
+ {
+ b+= (mblen= my_ismbchar(cs,b,e)) ? mblen : 1;
+ ++n;
+ }
+ return n;
+}
+
+uint my_charpos_mb(CHARSET_INFO *cs __attribute__((unused)),
+ const char *b __attribute__((unused)),
+ const char *e __attribute__((unused)),
+ uint pos)
+{
+ uint res=0, mblen;
+ const char *b0;
+
+ while (pos && b<e)
+ {
+ b+= (mblen= my_ismbchar(cs,b,e)) ? mblen : 1;
+ pos--;
+ }
+ return b-b0;
+}
+
#endif
diff --git a/strings/ctype-simple.c b/strings/ctype-simple.c
index c4c89d02d58..5fb62d3056f 100644
--- a/strings/ctype-simple.c
+++ b/strings/ctype-simple.c
@@ -1035,4 +1035,18 @@ void my_fill_8bit(CHARSET_INFO *cs __attribute__((unused)),
char *s, uint l, int fill)
{
bfill(s,l,fill);
-} \ No newline at end of file
+}
+
+uint my_numchars_8bit(CHARSET_INFO *cs __attribute__((unused)),
+ const char *b, const char *e)
+{
+ return e-b;
+}
+
+uint my_charpos_8bit(CHARSET_INFO *cs __attribute__((unused)),
+ const char *b __attribute__((unused)),
+ const char *e __attribute__((unused)),
+ uint pos)
+{
+ return pos;
+}
diff --git a/strings/ctype-sjis.c b/strings/ctype-sjis.c
index 4d9bb4be30c..a266fa71199 100644
--- a/strings/ctype-sjis.c
+++ b/strings/ctype-sjis.c
@@ -4496,6 +4496,8 @@ CHARSET_INFO my_charset_sjis =
ismbchar_sjis,
ismbhead_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,
diff --git a/strings/ctype-tis620.c b/strings/ctype-tis620.c
index d43361a1723..bf3d332880d 100644
--- a/strings/ctype-tis620.c
+++ b/strings/ctype-tis620.c
@@ -719,6 +719,8 @@ CHARSET_INFO my_charset_tis620 =
NULL, /* ismbchar */
NULL, /* ismbhead */
NULL, /* mbcharlen */
+ my_numchars_8bit,
+ my_charpos_8bit,
my_mb_wc_8bit, /* mb_wc */
my_wc_mb_8bit, /* wc_mb */
my_caseup_str_8bit,
diff --git a/strings/ctype-ujis.c b/strings/ctype-ujis.c
index 19f89f1b755..d39be825ef0 100644
--- a/strings/ctype-ujis.c
+++ b/strings/ctype-ujis.c
@@ -8453,6 +8453,8 @@ CHARSET_INFO my_charset_ujis =
ismbchar_ujis,
ismbhead_ujis,
mbcharlen_ujis,
+ my_numchars_mb,
+ my_charpos_mb,
my_mb_wc_euc_jp, /* mb_wc */
my_wc_mb_euc_jp, /* wc_mb */
my_caseup_str_mb,
diff --git a/strings/ctype-utf8.c b/strings/ctype-utf8.c
index fc8a4c0fb64..6eebcb022a5 100644
--- a/strings/ctype-utf8.c
+++ b/strings/ctype-utf8.c
@@ -1998,6 +1998,8 @@ CHARSET_INFO my_charset_utf8 =
my_ismbchar_utf8, /* ismbchar */
my_ismbhead_utf8, /* ismbhead */
my_mbcharlen_utf8, /* mbcharlen */
+ my_numchars_mb,
+ my_charpos_mb,
my_utf8_uni, /* mb_wc */
my_uni_utf8, /* wc_mb */
my_caseup_str_utf8,
@@ -3064,6 +3066,21 @@ cnv:
return (int) (dst-db);
}
+static
+uint my_numchars_ucs2(CHARSET_INFO *cs __attribute__((unused)),
+ const char *b, const char *e)
+{
+ return (e-b)/2;
+}
+
+static
+uint my_charpos_ucs2(CHARSET_INFO *cs __attribute__((unused)),
+ const char *b __attribute__((unused)),
+ const char *e __attribute__((unused)),
+ uint pos)
+{
+ return pos/2;
+}
CHARSET_INFO my_charset_ucs2 =
{
@@ -3088,6 +3105,8 @@ CHARSET_INFO my_charset_ucs2 =
my_ismbchar_ucs2, /* ismbchar */
my_ismbhead_ucs2, /* ismbhead */
my_mbcharlen_ucs2, /* mbcharlen */
+ my_numchars_ucs2,
+ my_charpos_ucs2,
my_ucs2_uni, /* mb_wc */
my_uni_ucs2, /* wc_mb */
my_caseup_str_ucs2,
diff --git a/strings/ctype-win1250ch.c b/strings/ctype-win1250ch.c
index 3ed48f13913..467d1ba4c91 100644
--- a/strings/ctype-win1250ch.c
+++ b/strings/ctype-win1250ch.c
@@ -663,6 +663,8 @@ CHARSET_INFO my_charset_win1250ch =
NULL, /* ismbchar */
NULL, /* ismbhead */
NULL, /* mbcharlen */
+ my_numchars_8bit,
+ my_charpos_8bit,
my_mb_wc_8bit, /* mb_wc */
my_wc_mb_8bit, /* wc_mb */
my_caseup_str_8bit,