@@ -29,6 +29,22 @@ extern "C" {
2929
3030#define CHARSET_DIR "charsets/"
3131
32+ #define my_wc_t ulong
33+
34+ typedef struct unicase_info_st {
35+ uint16 toupper ;
36+ uint16 tolower ;
37+ uint16 sort ;
38+ } MY_UNICASE_INFO ;
39+
40+ #define MY_CS_ILSEQ 0
41+ #define MY_CS_ILUNI 0
42+ #define MY_CS_TOOSMALL -1
43+ #define MY_CS_TOOFEW (n ) (-1-(n))
44+
45+
46+
47+
3248typedef struct charset_info_st
3349{
3450 uint number ;
@@ -48,9 +64,9 @@ typedef struct charset_info_st
4864 char * , char * , uint * , uint * );
4965
5066 uint mbmaxlen ;
51- int (* ismbchar )(const char * , const char * );
52- my_bool (* ismbhead )(uint );
53- int (* mbcharlen )(uint );
67+ int (* ismbchar )(struct charset_info_st * , const char * , const char * );
68+ my_bool (* ismbhead )(struct charset_info_st * , uint );
69+ int (* mbcharlen )(struct charset_info_st * , uint );
5470
5571 /* Functions for case convertion */
5672 void (* caseup_str )(struct charset_info_st * , char * );
@@ -107,9 +123,9 @@ extern int my_strnncoll_big5(CHARSET_INFO *,const uchar *, uint, const uchar
107123extern int my_strnxfrm_big5 (CHARSET_INFO * ,uchar * , uint , const uchar * , uint );
108124extern my_bool my_like_range_big5 (CHARSET_INFO * ,const char * , uint , pchar , uint ,
109125 char * , char * , uint * , uint * );
110- extern int ismbchar_big5 (const char * , const char * );
111- extern my_bool ismbhead_big5 (uint );
112- extern int mbcharlen_big5 (uint );
126+ extern int ismbchar_big5 (CHARSET_INFO * , const char * , const char * );
127+ extern my_bool ismbhead_big5 (CHARSET_INFO * , uint );
128+ extern int mbcharlen_big5 (CHARSET_INFO * , uint );
113129#endif
114130
115131#ifdef HAVE_CHARSET_czech
@@ -125,17 +141,17 @@ extern my_bool my_like_range_czech(CHARSET_INFO *,
125141#ifdef HAVE_CHARSET_euc_kr
126142/* declarations for the euc_kr character set */
127143extern uchar ctype_euc_kr [], to_lower_euc_kr [], to_upper_euc_kr [], sort_order_euc_kr [];
128- extern int ismbchar_euc_kr (const char * , const char * );
129- extern my_bool ismbhead_euc_kr (uint );
130- extern int mbcharlen_euc_kr (uint );
144+ extern int ismbchar_euc_kr (CHARSET_INFO * , const char * , const char * );
145+ extern my_bool ismbhead_euc_kr (CHARSET_INFO * , uint );
146+ extern int mbcharlen_euc_kr (CHARSET_INFO * , uint );
131147#endif
132148
133149#ifdef HAVE_CHARSET_gb2312
134150/* declarations for the gb2312 character set */
135151extern uchar ctype_gb2312 [], to_lower_gb2312 [], to_upper_gb2312 [], sort_order_gb2312 [];
136- extern int ismbchar_gb2312 (const char * , const char * );
137- extern my_bool ismbhead_gb2312 (uint );
138- extern int mbcharlen_gb2312 (uint );
152+ extern int ismbchar_gb2312 (CHARSET_INFO * , const char * , const char * );
153+ extern my_bool ismbhead_gb2312 (CHARSET_INFO * , uint );
154+ extern int mbcharlen_gb2312 (CHARSET_INFO * , uint );
139155#endif
140156
141157#ifdef HAVE_CHARSET_gbk
@@ -145,9 +161,9 @@ extern int my_strnncoll_gbk(CHARSET_INFO *, const uchar *, uint, const uchar
145161extern int my_strnxfrm_gbk (CHARSET_INFO * , uchar * , uint , const uchar * , uint );
146162extern my_bool my_like_range_gbk (CHARSET_INFO * , const char * , uint , pchar , uint ,
147163 char * , char * , uint * , uint * );
148- extern int ismbchar_gbk (const char * , const char * );
149- extern my_bool ismbhead_gbk (uint );
150- extern int mbcharlen_gbk (uint );
164+ extern int ismbchar_gbk (CHARSET_INFO * , const char * , const char * );
165+ extern my_bool ismbhead_gbk (CHARSET_INFO * , uint );
166+ extern int mbcharlen_gbk (CHARSET_INFO * , uint );
151167#endif
152168
153169#ifdef HAVE_CHARSET_latin1_de
@@ -166,9 +182,9 @@ extern int my_strnncoll_sjis(CHARSET_INFO *, const uchar *, uint, const ucha
166182extern int my_strnxfrm_sjis (CHARSET_INFO * , uchar * , uint , const uchar * , uint );
167183extern my_bool my_like_range_sjis (CHARSET_INFO * , const char * , uint , pchar , uint ,
168184 char * , char * , uint * , uint * );
169- extern int ismbchar_sjis (const char * , const char * );
170- extern my_bool ismbhead_sjis (uint );
171- extern int mbcharlen_sjis (uint );
185+ extern int ismbchar_sjis (CHARSET_INFO * , const char * , const char * );
186+ extern my_bool ismbhead_sjis (CHARSET_INFO * , uint );
187+ extern int mbcharlen_sjis (CHARSET_INFO * , uint );
172188#endif
173189
174190#ifdef HAVE_CHARSET_tis620
@@ -183,11 +199,38 @@ extern my_bool my_like_range_tis620(CHARSET_INFO *, const char *, uint, pchar, u
183199#ifdef HAVE_CHARSET_ujis
184200/* declarations for the ujis character set */
185201extern uchar ctype_ujis [], to_lower_ujis [], to_upper_ujis [], sort_order_ujis [];
186- extern int ismbchar_ujis (const char * , const char * );
187- extern my_bool ismbhead_ujis (uint );
188- extern int mbcharlen_ujis (uint );
202+ extern int ismbchar_ujis (CHARSET_INFO * , const char * , const char * );
203+ extern my_bool ismbhead_ujis (CHARSET_INFO * , uint );
204+ extern int mbcharlen_ujis (CHARSET_INFO * , uint );
189205#endif
190206
207+ #ifdef HAVE_CHARSET_utf8
208+
209+ extern uchar ctype_utf8 [];
210+ extern uchar to_lower_utf8 [];
211+ extern uchar to_upper_utf8 [];
212+
213+ int my_strnncoll_utf8 (CHARSET_INFO * cs ,
214+ const uchar * s , uint s_len , const uchar * t , uint t_len );
215+
216+ int my_strnxfrm_utf8 (CHARSET_INFO * cs ,
217+ uchar * dest , uint destlen , const uchar * src , uint srclen );
218+
219+ int my_ismbchar_utf8 (CHARSET_INFO * cs , const char * b , const char * e );
220+ my_bool my_ismbhead_utf8 (CHARSET_INFO * cs , uint ch );
221+ int my_mbcharlen_utf8 (CHARSET_INFO * cs , uint c );
222+
223+ void my_caseup_str_utf8 (CHARSET_INFO * cs , char * s );
224+ void my_casedn_str_utf8 (CHARSET_INFO * cs , char * s );
225+ void my_caseup_utf8 (CHARSET_INFO * cs , char * s , uint len );
226+ void my_casedn_utf8 (CHARSET_INFO * cs , char * s , uint len );
227+
228+ int my_strcasecmp_utf8 (CHARSET_INFO * cs , const char * s , const char * t );
229+ int my_strncasecmp_utf8 (CHARSET_INFO * cs , const char * s ,const char * t ,uint l );
230+
231+ int my_utf8_uni (CHARSET_INFO * cs , my_wc_t * p , const uchar * s , const uchar * e );
232+ int my_uni_utf8 (CHARSET_INFO * cs , my_wc_t pwc , uchar * b , uchar * e );
233+ #endif
191234
192235#define _U 01 /* Upper case */
193236#define _L 02 /* Lower case */
@@ -229,9 +272,9 @@ extern int mbcharlen_ujis(uint);
229272 ((s)->like_range((s), (a), (b), (c), (d), (e), (f), (g), (h)))
230273
231274#define use_mb (s ) ((s)->ismbchar != NULL)
232- #define my_ismbchar (s , a , b ) ((s)->ismbchar((a), (b)))
233- #define my_ismbhead (s , a ) ((s)->ismbhead((a)))
234- #define my_mbcharlen (s , a ) ((s)->mbcharlen((a)))
275+ #define my_ismbchar (s , a , b ) ((s)->ismbchar((s), ( a), (b)))
276+ #define my_ismbhead (s , a ) ((s)->ismbhead((s), ( a)))
277+ #define my_mbcharlen (s , a ) ((s)->mbcharlen((s),( a)))
235278
236279#define my_caseup (s , a , l ) ((s)->caseup((s), (a), (l)))
237280#define my_casedn (s , a , l ) ((s)->casedn((s), (a), (l)))
0 commit comments