diff options
author | unknown <bar@bar.mysql.r18.ru> | 2003-01-31 16:22:22 +0400 |
---|---|---|
committer | unknown <bar@bar.mysql.r18.ru> | 2003-01-31 16:22:22 +0400 |
commit | 953e27208bb1c13addaa0caaaa15f8db28ef8d81 (patch) | |
tree | 930036a1a437c1a917250b7aa25492d61e5a9038 /strings | |
parent | 2bce5e57096ed1adc59fc5cb1a9ff71630fd9fe2 (diff) | |
download | mariadb-git-953e27208bb1c13addaa0caaaa15f8db28ef8d81.tar.gz |
New functions in CHARSET_INFO structure
Diffstat (limited to 'strings')
-rw-r--r-- | strings/ctype-big5.c | 2 | ||||
-rw-r--r-- | strings/ctype-bin.c | 2 | ||||
-rw-r--r-- | strings/ctype-czech.c | 2 | ||||
-rw-r--r-- | strings/ctype-euc_kr.c | 2 | ||||
-rw-r--r-- | strings/ctype-extra.c | 9 | ||||
-rw-r--r-- | strings/ctype-gb2312.c | 2 | ||||
-rw-r--r-- | strings/ctype-gbk.c | 2 | ||||
-rw-r--r-- | strings/ctype-latin1.c | 2 | ||||
-rw-r--r-- | strings/ctype-latin1_de.c | 2 | ||||
-rw-r--r-- | strings/ctype-mb.c | 28 | ||||
-rw-r--r-- | strings/ctype-simple.c | 16 | ||||
-rw-r--r-- | strings/ctype-sjis.c | 2 | ||||
-rw-r--r-- | strings/ctype-tis620.c | 2 | ||||
-rw-r--r-- | strings/ctype-ujis.c | 2 | ||||
-rw-r--r-- | strings/ctype-utf8.c | 19 | ||||
-rw-r--r-- | strings/ctype-win1250ch.c | 2 |
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, |