~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to drizzled/charset.h

  • Committer: Olaf van der Spek
  • Date: 2011-10-23 19:30:49 UTC
  • mto: This revision was merged to the branch mainline in revision 2447.
  • Revision ID: olafvdspek@gmail.com-20111023193049-yci63y74smzkt98i
Refactor

Show diffs side-by-side

added added

removed removed

Lines of Context:
105
105
#define _MY_X   0200    /* heXadecimal digit */
106
106
 
107
107
/* Some typedef to make it easy for C++ to make function pointers */
108
 
typedef int (*my_charset_conv_mb_wc)(const charset_info_st*, my_wc_t *, const unsigned char *, const unsigned char *);
109
 
typedef int (*my_charset_conv_wc_mb)(const charset_info_st*, my_wc_t, unsigned char *, unsigned char *);
110
 
typedef size_t (*my_charset_conv_case)(const charset_info_st*, char *, size_t, char *, size_t);
 
108
typedef int (*my_charset_conv_mb_wc)(const charset_info_st*, my_wc_t *, const unsigned char*, const unsigned char *);
 
109
typedef int (*my_charset_conv_wc_mb)(const charset_info_st*, my_wc_t, unsigned char*, unsigned char *);
 
110
typedef size_t (*my_charset_conv_case)(const charset_info_st*, char*, size_t, char*, size_t);
111
111
 
112
112
struct MY_UNICASE_INFO
113
113
{
118
118
 
119
119
struct MY_UNI_CTYPE
120
120
{
121
 
  unsigned char  pctype;
122
 
  unsigned char  *ctype;
 
121
  unsigned char pctype;
 
122
  unsigned char* ctype;
123
123
};
124
124
 
125
 
/* A helper function for "need at least n bytes" */
126
 
inline static int my_cs_toosmalln(int n)
127
 
{
128
 
  return -100 - n;
129
 
}
130
 
 
131
125
struct MY_UNI_IDX
132
126
{
133
127
  uint16_t from;
163
157
{
164
158
  bool (*init)(charset_info_st&, unsigned char *(*alloc)(size_t));
165
159
  /* Collation routines */
166
 
  int     (*strnncoll)(const charset_info_st*,
167
 
                       const unsigned char *, size_t, const unsigned char *, size_t, bool);
168
 
  int     (*strnncollsp)(const charset_info_st*,
169
 
                         const unsigned char *, size_t, const unsigned char *, size_t,
170
 
                         bool diff_if_only_endspace_difference);
171
 
  size_t  (*strnxfrm)(const charset_info_st*,
172
 
                      unsigned char *dst, size_t dstlen, uint32_t nweights,
173
 
                      const unsigned char *src, size_t srclen, uint32_t flags);
174
 
  size_t    (*strnxfrmlen)(const charset_info_st*, size_t);
175
 
  bool (*like_range)(const charset_info_st*,
176
 
                        const char *s, size_t s_length,
177
 
                        char escape, char w_one, char w_many,
178
 
                        size_t res_length,
179
 
                        char *min_str, char *max_str,
180
 
                        size_t *min_len, size_t *max_len);
181
 
  int     (*wildcmp)(const charset_info_st*,
182
 
                     const char *str,const char *str_end,
183
 
                     const char *wildstr,const char *wildend,
184
 
                     int escape,int w_one, int w_many);
185
 
 
186
 
  int  (*strcasecmp)(const charset_info_st*, const char *, const char *);
187
 
 
188
 
  uint32_t (*instr)(const charset_info_st*,
189
 
                const char *b, size_t b_length,
190
 
                const char *s, size_t s_length,
191
 
                my_match_t *match, uint32_t nmatch);
 
160
  int (*strnncoll)(const charset_info_st*, const unsigned char*, size_t, const unsigned char*, size_t, bool);
 
161
  int (*strnncollsp)(const charset_info_st*, const unsigned char*, size_t, const unsigned char*, size_t, bool diff_if_only_endspace_difference);
 
162
  size_t (*strnxfrm)(const charset_info_st*, unsigned char *dst, size_t dstlen, uint32_t nweights, const unsigned char *src, size_t srclen, uint32_t flags);
 
163
  size_t (*strnxfrmlen)(const charset_info_st*, size_t);
 
164
  bool (*like_range)(const charset_info_st*, const char *s, size_t s_length, char escape, char w_one, char w_many, 
 
165
    size_t res_length, char *min_str, char *max_str, size_t *min_len, size_t *max_len);
 
166
  int (*wildcmp)(const charset_info_st*, const char *str,const char *str_end, const char *wildstr, const char *wildend, int escape,int w_one, int w_many);
 
167
 
 
168
  int (*strcasecmp)(const charset_info_st*, const char*, const char *);
 
169
 
 
170
  uint32_t (*instr)(const charset_info_st*, const char *b, size_t b_length, const char *s, size_t s_length, my_match_t *match, uint32_t nmatch);
192
171
 
193
172
  /* Hash calculation */
194
 
  void (*hash_sort)(const charset_info_st *cs, const unsigned char *key, size_t len,
195
 
                    uint32_t *nr1, uint32_t *nr2);
196
 
  bool (*propagate)(const charset_info_st *cs, const unsigned char *str, size_t len);
 
173
  void (*hash_sort)(const charset_info_st*, const unsigned char *key, size_t len, uint32_t *nr1, uint32_t *nr2);
 
174
  bool (*propagate)();
197
175
};
198
176
 
199
177
/* See strings/charset_info_st.txt about information on this structure  */
200
 
typedef struct my_charset_handler_st
 
178
struct MY_CHARSET_HANDLER
201
179
{
202
 
  void (*init_unused)();
203
180
  /* Multibyte routines */
204
 
  uint32_t    (*ismbchar)(const charset_info_st*, const char *, const char *);
205
 
  uint32_t    (*mbcharlen)(const charset_info_st*, uint32_t c);
206
 
  size_t  (*numchars)(const charset_info_st*, const char *b, const char *e);
207
 
  size_t  (*charpos)(const charset_info_st*, const char *b, const char *e, size_t pos);
208
 
  size_t  (*well_formed_len)(const charset_info_st&, str_ref, size_t nchars, int *error);
209
 
  size_t  (*lengthsp)(const charset_info_st*, const char *ptr, size_t length);
210
 
  size_t  (*numcells)(const charset_info_st*, const char *b, const char *e);
 
181
  uint32_t (*ismbchar)(const charset_info_st*, const char*, const char *);
 
182
  uint32_t (*mbcharlen)(const charset_info_st*, uint32_t c);
 
183
  size_t (*numchars)(const charset_info_st*, const char *b, const char *e);
 
184
  size_t (*charpos)(const charset_info_st*, const char *b, const char *e, size_t pos);
 
185
  size_t (*well_formed_len)(const charset_info_st&, str_ref, size_t nchars, int *error);
 
186
  size_t (*lengthsp)(const charset_info_st*, const char *ptr, size_t length);
 
187
  size_t (*numcells)(const charset_info_st*, const char *b, const char *e);
211
188
 
212
189
  /* Unicode conversion */
213
190
  my_charset_conv_mb_wc mb_wc;
214
191
  my_charset_conv_wc_mb wc_mb;
215
192
 
216
193
  /* CTYPE scanner */
217
 
  int (*ctype)(const charset_info_st *cs, int *ctype,
218
 
               const unsigned char *s, const unsigned char *e);
 
194
  int (*ctype)(const charset_info_st *cs, int *ctype, const unsigned char *s, const unsigned char *e);
219
195
 
220
196
  /* Functions for case and sort conversion */
221
 
  size_t  (*caseup_str)(const charset_info_st*, char *);
222
 
  size_t  (*casedn_str)(const charset_info_st*, char *);
 
197
  size_t (*caseup_str)(const charset_info_st*, char *);
 
198
  size_t (*casedn_str)(const charset_info_st*, char *);
223
199
 
224
200
  my_charset_conv_case caseup;
225
201
  my_charset_conv_case casedn;
226
202
 
227
203
  /* Charset dependant snprintf() */
228
 
  size_t (*snprintf)(const charset_info_st*, char *to, size_t n,
229
 
                     const char *fmt,
230
 
                     ...)
 
204
  size_t (*snprintf)(const charset_info_st*, char *to, size_t n, const char *fmt, ...)
231
205
#if defined(__GNUC__) && !defined(__INTEL_COMPILER)
232
206
                         __attribute__((format(printf, 4, 5)))
233
207
#endif
234
208
                         ;
235
 
  size_t (*long10_to_str)(const charset_info_st*, char *to, size_t n,
236
 
                          int radix, long int val);
237
 
  size_t (*int64_t10_to_str)(const charset_info_st*, char *to, size_t n,
238
 
                              int radix, int64_t val);
 
209
  size_t (*long10_to_str)(const charset_info_st*, char *to, size_t n, int radix, long int val);
 
210
  size_t (*int64_t10_to_str)(const charset_info_st*, char *to, size_t n, int radix, int64_t val);
239
211
 
240
212
  void (*fill)(const charset_info_st*, char *to, size_t len, int fill);
241
213
 
242
214
  /* String-to-number conversion routines */
243
 
  long        (*strntol)(const charset_info_st*, const char *s, size_t l,
244
 
                         int base, char **e, int *err);
245
 
  unsigned long      (*strntoul)(const charset_info_st*, const char *s, size_t l,
246
 
                         int base, char **e, int *err);
247
 
  int64_t   (*strntoll)(const charset_info_st*, const char *s, size_t l,
248
 
                         int base, char **e, int *err);
249
 
  uint64_t (*strntoull)(const charset_info_st*, const char *s, size_t l,
250
 
                         int base, char **e, int *err);
251
 
  double      (*strntod)(const charset_info_st*, char *s, size_t l, char **e,
252
 
                         int *err);
253
 
  int64_t    (*strtoll10)(const charset_info_st *cs,
254
 
                           const char *nptr, char **endptr, int *error);
255
 
  uint64_t   (*strntoull10rnd)(const charset_info_st *cs,
256
 
                                const char *str, size_t length,
257
 
                                int unsigned_fl,
258
 
                                char **endptr, int *error);
259
 
  size_t        (*scan)(const charset_info_st*, const char *b, const char *e,
260
 
                        int sq);
261
 
} MY_CHARSET_HANDLER;
262
 
 
 
215
  long (*strntol)(const charset_info_st*, const char *s, size_t l, int base, char **e, int *err);
 
216
  unsigned long (*strntoul)(const charset_info_st*, const char *s, size_t l, int base, char **e, int *err);
 
217
  int64_t (*strntoll)(const charset_info_st*, const char *s, size_t l, int base, char **e, int *err);
 
218
  uint64_t (*strntoull)(const charset_info_st*, const char *s, size_t l, int base, char **e, int *err);
 
219
  double (*strntod)(const charset_info_st*, char *s, size_t l, char **e, int *err);
 
220
  int64_t (*strtoll10)(const charset_info_st *cs, const char *nptr, char **endptr, int *error);
 
221
  uint64_t (*strntoull10rnd)(const charset_info_st *cs, const char *str, size_t length, int unsigned_fl, char **endptr, int *error);
 
222
  size_t (*scan)(const charset_info_st*, const char *b, const char *e, int sq);
 
223
};
263
224
 
264
225
/* See strings/charset_info_st.txt about information on this structure  */
265
226
struct charset_info_st
304
265
extern uint32_t get_charset_number(const char *cs_name, uint32_t cs_flags);
305
266
extern uint32_t get_collation_number(const char *name);
306
267
extern const char *get_charset_name(uint32_t cs_number);
307
 
extern bool resolve_charset(const char *cs_name,
308
 
                            const charset_info_st *default_cs,
309
 
                            const charset_info_st **cs);
310
 
extern bool resolve_collation(const char *cl_name,
311
 
                             const charset_info_st *default_cl,
312
 
                             const charset_info_st **cl);
 
268
extern bool resolve_charset(const char *cs_name, const charset_info_st *default_cs, const charset_info_st **cs);
 
269
extern bool resolve_collation(const char *cl_name, const charset_info_st *default_cl, const charset_info_st **cl);
313
270
extern void free_charsets();
314
271
extern char *get_charsets_dir(char *buf);
315
272
extern bool my_charset_same(const charset_info_st *cs1, const charset_info_st *cs2);
316
 
extern size_t escape_string_for_drizzle(const charset_info_st *charset_info,
317
 
                                        char *to, size_t to_length,
318
 
                                        const char *from, size_t length);
319
 
extern size_t escape_quotes_for_drizzle(const charset_info_st *charset_info,
320
 
                                        char *to, size_t to_length,
321
 
                                        const char *from, size_t length);
 
273
extern size_t escape_string_for_drizzle(const charset_info_st *charset_info, char *to, size_t to_length, const char *from, size_t length);
 
274
extern size_t escape_quotes_for_drizzle(const charset_info_st *charset_info, char *to, size_t to_length, const char *from, size_t length);
322
275
extern DRIZZLED_API const charset_info_st *default_charset_info;
323
276
extern DRIZZLED_API const charset_info_st *system_charset_info;
324
277
extern const charset_info_st *files_charset_info;
331
284
extern DRIZZLED_API charset_info_st my_charset_utf8mb4_general_ci;
332
285
extern DRIZZLED_API charset_info_st my_charset_utf8mb4_unicode_ci;
333
286
size_t my_strnxfrmlen_simple(const charset_info_st*, size_t);
334
 
extern int  my_strnncollsp_simple(const charset_info_st*, const unsigned char *, size_t,
335
 
                                  const unsigned char *, size_t,
336
 
                                  bool diff_if_only_endspace_difference);
337
 
extern size_t my_lengthsp_8bit(const charset_info_st* cs, const char *ptr, size_t length);
338
 
extern uint32_t my_instr_simple(const charset_info_st*,
339
 
                            const char *b, size_t b_length,
340
 
                            const char *s, size_t s_length,
341
 
                            my_match_t *match, uint32_t nmatch);
 
287
extern int my_strnncollsp_simple(const charset_info_st*, const unsigned char*, size_t, const unsigned char*, size_t, bool diff_if_only_endspace_difference);
 
288
extern size_t my_lengthsp_8bit(const charset_info_st*, const char *ptr, size_t length);
 
289
extern uint32_t my_instr_simple(const charset_info_st*, const char *b, size_t b_length, const char *s, size_t s_length, my_match_t *match, uint32_t nmatch);
342
290
extern MY_CHARSET_HANDLER my_charset_8bit_handler;
343
291
extern MY_CHARSET_HANDLER my_charset_ucs2_handler;
344
292
extern int my_strcasecmp_mb(const charset_info_st*  cs, const char *s, const char *t);
345
 
extern bool my_parse_charset_xml(const char *bug, size_t len,
346
 
                                    int (*add)(charset_info_st *cs));
 
293
extern bool my_parse_charset_xml(const char *bug, size_t len, int (*add)(charset_info_st *cs));
347
294
 
348
295
DRIZZLED_API const charset_info_st *get_charset(uint32_t cs_number);
349
296
DRIZZLED_API const charset_info_st *get_charset_by_name(const char *cs_name);
350
297
DRIZZLED_API const charset_info_st *get_charset_by_csname(const char *cs_name, uint32_t cs_flags);
351
298
 
352
299
/* Functions for 8bit */
353
 
int my_mb_ctype_8bit(const charset_info_st*,int *, const unsigned char *,const unsigned char *);
354
 
int my_mb_ctype_mb(const charset_info_st*,int *, const unsigned char *,const unsigned char *);
355
 
 
356
 
size_t my_scan_8bit(const charset_info_st* cs, const char *b, const char *e, int sq);
357
 
 
358
 
size_t my_snprintf_8bit(const charset_info_st*, char *to, size_t n,
359
 
                        const char *fmt, ...)
360
 
  __attribute__((format(printf, 4, 5)));
361
 
 
362
 
long       my_strntol_8bit(const charset_info_st*, const char *s, size_t l, int base,
363
 
                           char **e, int *err);
364
 
unsigned long      my_strntoul_8bit(const charset_info_st*, const char *s, size_t l, int base,
365
 
                            char **e, int *err);
366
 
int64_t   my_strntoll_8bit(const charset_info_st*, const char *s, size_t l, int base,
367
 
                            char **e, int *err);
368
 
uint64_t my_strntoull_8bit(const charset_info_st*, const char *s, size_t l, int base,
369
 
                            char **e, int *err);
370
 
double      my_strntod_8bit(const charset_info_st*, char *s, size_t l,char **e,
371
 
                            int *err);
372
 
size_t my_long10_to_str_8bit(const charset_info_st*, char *to, size_t l, int radix,
373
 
                             long int val);
374
 
size_t my_int64_t10_to_str_8bit(const charset_info_st*, char *to, size_t l, int radix,
375
 
                                 int64_t val);
376
 
int64_t my_strtoll10_8bit(const charset_info_st* cs,
377
 
                           const char *nptr, char **endptr, int *error);
378
 
int64_t my_strtoll10_ucs2(charset_info_st *cs,
379
 
                           const char *nptr, char **endptr, int *error);
380
 
 
381
 
uint64_t my_strntoull10rnd_8bit(const charset_info_st* cs,
382
 
                                 const char *str, size_t length, int
383
 
                                 unsigned_fl, char **endptr, int *error);
384
 
uint64_t my_strntoull10rnd_ucs2(charset_info_st *cs,
385
 
                                 const char *str, size_t length,
386
 
                                 int unsigned_fl, char **endptr, int *error);
387
 
 
388
 
void my_fill_8bit(const charset_info_st* cs, char* to, size_t l, int fill);
389
 
 
390
 
bool  my_like_range_simple(const charset_info_st* cs,
 
300
int my_mb_ctype_8bit(const charset_info_st*,int *, const unsigned char*,const unsigned char *);
 
301
int my_mb_ctype_mb(const charset_info_st*,int *, const unsigned char*,const unsigned char *);
 
302
 
 
303
size_t my_scan_8bit(const charset_info_st*, const char *b, const char *e, int sq);
 
304
size_t my_snprintf_8bit(const charset_info_st*, char *to, size_t n, const char *fmt, ...) __attribute__((format(printf, 4, 5)));
 
305
 
 
306
long my_strntol_8bit(const charset_info_st*, const char *s, size_t l, int base, char **e, int *err);
 
307
unsigned long my_strntoul_8bit(const charset_info_st*, const char *s, size_t l, int base, char **e, int *err);
 
308
int64_t my_strntoll_8bit(const charset_info_st*, const char *s, size_t l, int base, char **e, int *err);
 
309
uint64_t my_strntoull_8bit(const charset_info_st*, const char *s, size_t l, int base, char **e, int *err);
 
310
double my_strntod_8bit(const charset_info_st*, char *s, size_t l,char **e, int *err);
 
311
size_t my_long10_to_str_8bit(const charset_info_st*, char *to, size_t l, int radix, long int val);
 
312
size_t my_int64_t10_to_str_8bit(const charset_info_st*, char *to, size_t l, int radix, int64_t val);
 
313
int64_t my_strtoll10_8bit(const charset_info_st*, const char *nptr, char **endptr, int *error);
 
314
int64_t my_strtoll10_ucs2(charset_info_st *cs, const char *nptr, char **endptr, int *error);
 
315
 
 
316
uint64_t my_strntoull10rnd_8bit(const charset_info_st*, const char *str, size_t length, int unsigned_fl, char **endptr, int *error);
 
317
uint64_t my_strntoull10rnd_ucs2(charset_info_st *cs, const char *str, size_t length, int unsigned_fl, char **endptr, int *error);
 
318
 
 
319
void my_fill_8bit(const charset_info_st*, char* to, size_t l, int fill);
 
320
 
 
321
bool  my_like_range_simple(const charset_info_st*,
391
322
                              const char *ptr, size_t ptr_length,
392
323
                              char escape, char w_one, char w_many,
393
324
                              size_t res_length,
394
325
                              char *min_str, char *max_str,
395
326
                              size_t *min_length, size_t *max_length);
396
327
 
397
 
bool  my_like_range_mb(const charset_info_st* cs,
 
328
bool  my_like_range_mb(const charset_info_st*,
398
329
                          const char *ptr, size_t ptr_length,
399
330
                          char escape, char w_one, char w_many,
400
331
                          size_t res_length,
401
332
                          char *min_str, char *max_str,
402
333
                          size_t *min_length, size_t *max_length);
403
334
 
404
 
bool  my_like_range_ucs2(const charset_info_st* cs,
 
335
bool  my_like_range_ucs2(const charset_info_st*,
405
336
                            const char *ptr, size_t ptr_length,
406
337
                            char escape, char w_one, char w_many,
407
338
                            size_t res_length,
408
339
                            char *min_str, char *max_str,
409
340
                            size_t *min_length, size_t *max_length);
410
341
 
411
 
bool  my_like_range_utf16(const charset_info_st* cs,
 
342
bool  my_like_range_utf16(const charset_info_st*,
412
343
                             const char *ptr, size_t ptr_length,
413
344
                             char escape, char w_one, char w_many,
414
345
                             size_t res_length,
415
346
                             char *min_str, char *max_str,
416
347
                             size_t *min_length, size_t *max_length);
417
348
 
418
 
bool  my_like_range_utf32(const charset_info_st* cs,
 
349
bool  my_like_range_utf32(const charset_info_st*,
419
350
                             const char *ptr, size_t ptr_length,
420
351
                             char escape, char w_one, char w_many,
421
352
                             size_t res_length,
461
392
                        const unsigned char *t, size_t tlen,
462
393
                        bool t_is_prefix);
463
394
 
464
 
int my_strnncollsp_mb_bin(const charset_info_st* cs,
 
395
int my_strnncollsp_mb_bin(const charset_info_st*,
465
396
                          const unsigned char *a, size_t a_length,
466
397
                          const unsigned char *b, size_t b_length,
467
398
                          bool diff_if_only_endspace_difference);
468
399
 
469
 
int my_wildcmp_mb_bin(const charset_info_st* cs,
 
400
int my_wildcmp_mb_bin(const charset_info_st*,
470
401
                      const char *str,const char *str_end,
471
402
                      const char *wildstr,const char *wildend,
472
403
                      int escape, int w_one, int w_many);
480
411
                      unsigned char *dst, size_t dstlen, uint32_t nweights,
481
412
                      const unsigned char *src, size_t srclen, uint32_t flags);
482
413
 
483
 
int my_wildcmp_unicode(const charset_info_st* cs,
 
414
int my_wildcmp_unicode(const charset_info_st*,
484
415
                       const char *str, const char *str_end,
485
416
                       const char *wildstr, const char *wildend,
486
417
                       int escape, int w_one, int w_many,
487
418
                       MY_UNICASE_INFO **weights);
488
419
 
489
 
bool my_propagate_simple(const charset_info_st* cs, const unsigned char *str, size_t len);
490
 
bool my_propagate_complex(const charset_info_st* cs, const unsigned char *str, size_t len);
 
420
bool my_propagate_simple();
 
421
bool my_propagate_complex();
491
422
 
492
423
 
493
424
uint32_t my_strxfrm_flag_normalize(uint32_t flags, uint32_t nlevels);
494
425
void my_strxfrm_desc_and_reverse(unsigned char *str, unsigned char *strend,
495
426
                                 uint32_t flags, uint32_t level);
496
 
size_t my_strxfrm_pad_desc_and_reverse(const charset_info_st* cs,
 
427
size_t my_strxfrm_pad_desc_and_reverse(const charset_info_st*,
497
428
                                       unsigned char *str, unsigned char *frmend, unsigned char *strend,
498
429
                                       uint32_t nweights, uint32_t flags, uint32_t level);
499
430
 
500
 
bool my_charset_is_ascii_compatible(const charset_info_st* cs);
 
431
bool my_charset_is_ascii_compatible(const charset_info_st*);
501
432
 
502
433
/*
503
434
  Compare 0-terminated UTF8 strings.
515
446
    - positive number if s > t
516
447
    - 0 is the strings are equal
517
448
*/
518
 
int my_wc_mb_filename(const charset_info_st*,
519
 
                  my_wc_t wc, unsigned char *s, unsigned char *e);
520
 
 
521
 
int my_mb_wc_filename(const charset_info_st*,
522
 
                  my_wc_t *pwc, const unsigned char *s, const unsigned char *e);
523
 
 
524
 
 
525
 
unsigned int my_ismbchar_utf8mb4(const charset_info_st* cs, const char *b, const char *e);
 
449
int my_wc_mb_filename(const charset_info_st*, my_wc_t wc, unsigned char *s, unsigned char *e);
 
450
 
 
451
int my_mb_wc_filename(const charset_info_st*, my_wc_t *pwc, const unsigned char *s, const unsigned char *e);
 
452
 
 
453
 
 
454
unsigned int my_ismbchar_utf8mb4(const charset_info_st*, const char *b, const char *e);
526
455
unsigned int my_mbcharlen_utf8mb4(const charset_info_st*, uint32_t c);
527
456
 
528
457
size_t my_strnxfrmlen_utf8mb4(const charset_info_st*, size_t len);
529
458
size_t
530
 
my_strnxfrm_utf8mb4(const charset_info_st* cs,
 
459
my_strnxfrm_utf8mb4(const charset_info_st*,
531
460
                    unsigned char *dst, size_t dstlen, uint32_t nweights,
532
461
                    const unsigned char *src, size_t srclen, uint32_t flags);
533
462
 
534
 
int my_wildcmp_utf8mb4(const charset_info_st* cs,
 
463
int my_wildcmp_utf8mb4(const charset_info_st*,
535
464
                   const char *str, const char *strend,
536
465
                   const char *wildstr, const char *wildend,
537
466
                   int escape, int w_one, int w_many);
538
 
int my_strnncollsp_utf8mb4(const charset_info_st* cs,
 
467
int my_strnncollsp_utf8mb4(const charset_info_st*,
539
468
                       const unsigned char *s, size_t slen,
540
469
                       const unsigned char *t, size_t tlen,
541
470
                       bool diff_if_only_endspace_difference);
542
 
int my_strcasecmp_utf8mb4(const charset_info_st* cs,
 
471
int my_strcasecmp_utf8mb4(const charset_info_st*,
543
472
                          const char *s, const char *t);
544
473
 
545
 
int my_strnncoll_utf8mb4(const charset_info_st* cs,
 
474
int my_strnncoll_utf8mb4(const charset_info_st*,
546
475
                     const unsigned char *s, size_t slen,
547
476
                     const unsigned char *t, size_t tlen,
548
477
                     bool t_is_prefix);
549
478
 
550
 
int my_mb_wc_utf8mb4(const charset_info_st* cs,
 
479
int my_mb_wc_utf8mb4(const charset_info_st*,
551
480
                 my_wc_t * pwc, const unsigned char *s, const unsigned char *e);
552
481
 
553
 
int my_wc_mb_utf8mb4(const charset_info_st* cs,
 
482
int my_wc_mb_utf8mb4(const charset_info_st*,
554
483
                 my_wc_t wc, unsigned char *r, unsigned char *e);
555
484
 
556
 
size_t my_caseup_str_utf8mb4(const charset_info_st* cs, char *src);
557
 
size_t my_casedn_str_utf8mb4(const charset_info_st* cs, char *src);
 
485
size_t my_caseup_str_utf8mb4(const charset_info_st*, char *src);
 
486
size_t my_casedn_str_utf8mb4(const charset_info_st*, char *src);
558
487
 
559
 
size_t my_caseup_utf8mb4(const charset_info_st* cs, char *src, size_t srclen,
 
488
size_t my_caseup_utf8mb4(const charset_info_st*, char *src, size_t srclen,
560
489
                  char *dst, size_t dstlen);
561
 
size_t my_casedn_utf8mb4(const charset_info_st* cs,
 
490
size_t my_casedn_utf8mb4(const charset_info_st*,
562
491
                  char *src, size_t srclen,
563
492
                  char *dst, size_t dstlen);
564
493
 
565
494
 
566
 
int my_strnncoll_any_uca(const charset_info_st* cs,
 
495
int my_strnncoll_any_uca(const charset_info_st*,
567
496
                         const unsigned char *s, size_t slen,
568
497
                         const unsigned char *t, size_t tlen,
569
498
                         bool t_is_prefix);
570
499
 
571
 
int my_strnncollsp_any_uca(const charset_info_st* cs,
 
500
int my_strnncollsp_any_uca(const charset_info_st*,
572
501
                           const unsigned char *s, size_t slen,
573
502
                           const unsigned char *t, size_t tlen,
574
503
                           bool diff_if_only_endspace_difference);
575
504
 
576
 
void my_hash_sort_any_uca(const charset_info_st* cs,
 
505
void my_hash_sort_any_uca(const charset_info_st*,
577
506
                          const unsigned char *s, size_t slen,
578
507
                          uint32_t *n1, uint32_t *n2);
579
508
 
580
 
size_t my_strnxfrm_any_uca(const charset_info_st* cs,
 
509
size_t my_strnxfrm_any_uca(const charset_info_st*,
581
510
                           unsigned char *dst, size_t dstlen, uint32_t nweights,
582
511
                           const unsigned char *src, size_t srclen,
583
512
                           uint32_t flags);
584
513
 
585
 
int my_wildcmp_uca(const charset_info_st* cs,
 
514
int my_wildcmp_uca(const charset_info_st*,
586
515
                   const char *str,const char *str_end,
587
516
                   const char *wildstr,const char *wildend,
588
517
                   int escape, int w_one, int w_many);
596
525
                            const unsigned char *b, size_t b_length,
597
526
                            bool diff_if_only_endspace_difference);
598
527
size_t my_case_str_bin(const charset_info_st*, char *);
599
 
size_t my_case_bin(const charset_info_st*, char *,
600
 
                   size_t srclen, char *, size_t);
 
528
size_t my_case_bin(const charset_info_st*, char*,
 
529
                   size_t srclen, char*, size_t);
601
530
int my_strcasecmp_bin(const charset_info_st*,
602
531
                      const char *s, const char *t);
603
 
size_t my_strnxfrm_8bit_bin(const charset_info_st* cs,
 
532
size_t my_strnxfrm_8bit_bin(const charset_info_st*,
604
533
                     unsigned char * dst, size_t dstlen, uint32_t nweights,
605
534
                     const unsigned char *src, size_t srclen, uint32_t flags);
606
535
uint32_t my_instr_bin(const charset_info_st*,
608
537
                      const char *s, size_t s_length,
609
538
                      my_match_t *match, uint32_t nmatch);
610
539
size_t my_lengthsp_binary(const charset_info_st*,
611
 
                          const char *, size_t length);
 
540
                          const char*, size_t length);
612
541
int my_mb_wc_bin(const charset_info_st*,
613
542
                 my_wc_t *wc, const unsigned char *str,
614
543
                 const unsigned char *end);
623
552
                        const unsigned char *s, size_t slen,
624
553
                        const unsigned char *t, size_t tlen,
625
554
                        bool t_is_prefix);
626
 
int my_strnncollsp_binary(const charset_info_st* cs,
 
555
int my_strnncollsp_binary(const charset_info_st*,
627
556
                          const unsigned char *s, size_t slen,
628
557
                          const unsigned char *t, size_t tlen,
629
558
                          bool);
845
774
  return (cs->cset->strntod(cs, s, l, e, err));
846
775
}
847
776
 
848
 
int make_escape_code(const charset_info_st* cs, const char *escape);
 
777
int make_escape_code(const charset_info_st*, const char *escape);
849
778
 
850
779
} /* namespace drizzled */
851