~drizzle-trunk/drizzle/development

1 by brian
clean slate
1
/* Copyright (C) 2000 MySQL AB
2
3
   This program is free software; you can redistribute it and/or modify
4
   it under the terms of the GNU General Public License as published by
5
   the Free Software Foundation; version 2 of the License.
6
7
   This program is distributed in the hope that it will be useful,
8
   but WITHOUT ANY WARRANTY; without even the implied warranty of
9
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
10
   GNU General Public License for more details.
11
12
   You should have received a copy of the GNU General Public License
13
   along with this program; if not, write to the Free Software
1802.10.2 by Monty Taylor
Update all of the copyright headers to include the correct address.
14
   Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA */
1 by brian
clean slate
15
16
/*
17
  A better inplementation of the UNIX ctype(3) library.
18
*/
19
1241.9.61 by Monty Taylor
No more mystrings in drizzled/
20
#ifndef DRIZZLED_CHARSET_INFO_H
21
#define DRIZZLED_CHARSET_INFO_H
1 by brian
clean slate
22
612.2.4 by Monty Taylor
Moved some defines to config.h. Stopped including config.h directly anywhere.
23
#include <sys/types.h>
548 by Monty Taylor
Moved my_handler to myisam, which is where it actually belongs.
24
1280.1.10 by Monty Taylor
Put everything in drizzled into drizzled namespace.
25
namespace drizzled
26
{
1 by brian
clean slate
27
28
#define MY_CS_NAME_SIZE			32
29
#define MY_CS_CTYPE_TABLE_SIZE		257
30
#define MY_CS_TO_LOWER_TABLE_SIZE	256
31
#define MY_CS_TO_UPPER_TABLE_SIZE	256
32
#define MY_CS_SORT_ORDER_TABLE_SIZE	256
33
#define MY_CS_TO_UNI_TABLE_SIZE		256
34
35
#define CHARSET_DIR	"charsets/"
36
612.2.4 by Monty Taylor
Moved some defines to config.h. Stopped including config.h directly anywhere.
37
#define my_wc_t unsigned long
1 by brian
clean slate
38
39
typedef struct unicase_info_st
40
{
206 by Brian Aker
Removed final uint dead types.
41
  uint16_t toupper;
42
  uint16_t tolower;
43
  uint16_t sort;
1 by brian
clean slate
44
} MY_UNICASE_INFO;
45
46
47
extern MY_UNICASE_INFO *my_unicase_default[256];
48
extern MY_UNICASE_INFO *my_unicase_turkish[256];
49
50
typedef struct uni_ctype_st
51
{
481 by Brian Aker
Remove all of uchar.
52
  unsigned char  pctype;
53
  unsigned char  *ctype;
1 by brian
clean slate
54
} MY_UNI_CTYPE;
55
56
extern MY_UNI_CTYPE my_uni_ctype[256];
57
58
/* wm_wc and wc_mb return codes */
59
#define MY_CS_ILSEQ	0     /* Wrong by sequence: wb_wc                   */
60
#define MY_CS_ILUNI	0     /* Cannot encode Unicode to charset: wc_mb    */
61
#define MY_CS_TOOSMALL  -101  /* Need at least one byte:    wc_mb and mb_wc */
62
#define MY_CS_TOOSMALL2 -102  /* Need at least two bytes:   wc_mb and mb_wc */
63
#define MY_CS_TOOSMALL3 -103  /* Need at least three bytes: wc_mb and mb_wc */
64
/* These following three are currently not really used */
65
#define MY_CS_TOOSMALL4 -104  /* Need at least 4 bytes: wc_mb and mb_wc */
66
#define MY_CS_TOOSMALL5 -105  /* Need at least 5 bytes: wc_mb and mb_wc */
67
#define MY_CS_TOOSMALL6 -106  /* Need at least 6 bytes: wc_mb and mb_wc */
68
/* A helper macros for "need at least n bytes" */
69
#define MY_CS_TOOSMALLN(n)    (-100-(n))
70
71
#define MY_SEQ_INTTAIL	1
72
#define MY_SEQ_SPACES	2
73
74
        /* My charsets_list flags */
75
#define MY_CS_COMPILED  1      /* compiled-in sets               */
76
#define MY_CS_CONFIG    2      /* sets that have a *.conf file   */
77
#define MY_CS_INDEX     4      /* sets listed in the Index file  */
78
#define MY_CS_LOADED    8      /* sets that are currently loaded */
79
#define MY_CS_BINSORT	16     /* if binary sort order           */
80
#define MY_CS_PRIMARY	32     /* if primary collation           */
81
#define MY_CS_STRNXFRM	64     /* if strnxfrm is used for sort   */
82
#define MY_CS_UNICODE	128    /* is a charset is full unicode   */
83
#define MY_CS_READY	256    /* if a charset is initialized    */
84
#define MY_CS_AVAILABLE	512    /* If either compiled-in or loaded*/
660.1.3 by Eric Herman
removed trailing whitespace with simple script:
85
#define MY_CS_CSSORT	1024   /* if case sensitive sort order   */
86
#define MY_CS_HIDDEN	2048   /* don't display in SHOW          */
1 by brian
clean slate
87
#define MY_CS_NONASCII  8192   /* if not ASCII-compatible        */
88
#define MY_CHARSET_UNDEFINED 0
89
90
/* Flags for strxfrm */
91
#define MY_STRXFRM_LEVEL1          0x00000001 /* for primary weights   */
92
#define MY_STRXFRM_LEVEL2          0x00000002 /* for secondary weights */
93
#define MY_STRXFRM_LEVEL3          0x00000004 /* for tertiary weights  */
94
#define MY_STRXFRM_LEVEL4          0x00000008 /* fourth level weights  */
95
#define MY_STRXFRM_LEVEL5          0x00000010 /* fifth level weights   */
96
#define MY_STRXFRM_LEVEL6          0x00000020 /* sixth level weights   */
97
#define MY_STRXFRM_LEVEL_ALL       0x0000003F /* Bit OR for the above six */
98
#define MY_STRXFRM_NLEVELS         6          /* Number of possible levels*/
99
100
#define MY_STRXFRM_PAD_WITH_SPACE  0x00000040 /* if pad result with spaces */
101
#define MY_STRXFRM_UNUSED_00000080 0x00000080 /* for future extensions     */
102
103
#define MY_STRXFRM_DESC_LEVEL1     0x00000100 /* if desc order for level1 */
104
#define MY_STRXFRM_DESC_LEVEL2     0x00000200 /* if desc order for level2 */
105
#define MY_STRXFRM_DESC_LEVEL3     0x00000300 /* if desc order for level3 */
106
#define MY_STRXFRM_DESC_LEVEL4     0x00000800 /* if desc order for level4 */
107
#define MY_STRXFRM_DESC_LEVEL5     0x00001000 /* if desc order for level5 */
108
#define MY_STRXFRM_DESC_LEVEL6     0x00002000 /* if desc order for level6 */
109
#define MY_STRXFRM_DESC_SHIFT      8
110
111
#define MY_STRXFRM_UNUSED_00004000 0x00004000 /* for future extensions     */
112
#define MY_STRXFRM_UNUSED_00008000 0x00008000 /* for future extensions     */
113
114
#define MY_STRXFRM_REVERSE_LEVEL1  0x00010000 /* if reverse order for level1 */
115
#define MY_STRXFRM_REVERSE_LEVEL2  0x00020000 /* if reverse order for level2 */
116
#define MY_STRXFRM_REVERSE_LEVEL3  0x00040000 /* if reverse order for level3 */
117
#define MY_STRXFRM_REVERSE_LEVEL4  0x00080000 /* if reverse order for level4 */
118
#define MY_STRXFRM_REVERSE_LEVEL5  0x00100000 /* if reverse order for level5 */
119
#define MY_STRXFRM_REVERSE_LEVEL6  0x00200000 /* if reverse order for level6 */
120
#define MY_STRXFRM_REVERSE_SHIFT   16
121
122
123
typedef struct my_uni_idx_st
124
{
206 by Brian Aker
Removed final uint dead types.
125
  uint16_t from;
126
  uint16_t to;
481 by Brian Aker
Remove all of uchar.
127
  unsigned char  *tab;
1 by brian
clean slate
128
} MY_UNI_IDX;
129
130
typedef struct
131
{
411 by Brian Aker
Removed legacy bits around enum.
132
  uint32_t beg;
133
  uint32_t end;
134
  uint32_t mb_len;
1 by brian
clean slate
135
} my_match_t;
136
137
enum my_lex_states
138
{
660.1.3 by Eric Herman
removed trailing whitespace with simple script:
139
  MY_LEX_START, MY_LEX_CHAR, MY_LEX_IDENT,
1 by brian
clean slate
140
  MY_LEX_IDENT_SEP, MY_LEX_IDENT_START,
141
  MY_LEX_REAL, MY_LEX_HEX_NUMBER, MY_LEX_BIN_NUMBER,
142
  MY_LEX_CMP_OP, MY_LEX_LONG_CMP_OP, MY_LEX_STRING, MY_LEX_COMMENT, MY_LEX_END,
143
  MY_LEX_OPERATOR_OR_IDENT, MY_LEX_NUMBER_IDENT, MY_LEX_INT_OR_REAL,
660.1.3 by Eric Herman
removed trailing whitespace with simple script:
144
  MY_LEX_REAL_OR_POINT, MY_LEX_BOOL, MY_LEX_EOL, MY_LEX_ESCAPE,
145
  MY_LEX_LONG_COMMENT, MY_LEX_END_LONG_COMMENT, MY_LEX_SEMICOLON,
146
  MY_LEX_SET_VAR, MY_LEX_USER_END, MY_LEX_HOSTNAME, MY_LEX_SKIP,
1 by brian
clean slate
147
  MY_LEX_USER_VARIABLE_DELIMITER, MY_LEX_SYSTEM_VAR,
148
  MY_LEX_IDENT_OR_KEYWORD,
235 by Brian Aker
Final bit of NCHAR removed.
149
  MY_LEX_IDENT_OR_HEX, MY_LEX_IDENT_OR_BIN,
1 by brian
clean slate
150
  MY_LEX_STRING_OR_DELIMITER
151
};
152
153
struct charset_info_st;
154
155
156
/* See strings/CHARSET_INFO.txt for information about this structure  */
157
typedef struct my_collation_handler_st
158
{
276 by Brian Aker
Cleaned out my_bool from strings.
159
  bool (*init)(struct charset_info_st *, void *(*alloc)(size_t));
1 by brian
clean slate
160
  /* Collation routines */
264.2.6 by Andrey Hristov
Constify the usage of CHARSET_INFO almost to the last place in the code.
161
  int     (*strnncoll)(const struct charset_info_st * const,
481 by Brian Aker
Remove all of uchar.
162
		       const unsigned char *, size_t, const unsigned char *, size_t, bool);
264.2.6 by Andrey Hristov
Constify the usage of CHARSET_INFO almost to the last place in the code.
163
  int     (*strnncollsp)(const struct charset_info_st * const,
481 by Brian Aker
Remove all of uchar.
164
                         const unsigned char *, size_t, const unsigned char *, size_t,
276 by Brian Aker
Cleaned out my_bool from strings.
165
                         bool diff_if_only_endspace_difference);
264.2.6 by Andrey Hristov
Constify the usage of CHARSET_INFO almost to the last place in the code.
166
  size_t  (*strnxfrm)(const struct charset_info_st * const,
481 by Brian Aker
Remove all of uchar.
167
                      unsigned char *dst, size_t dstlen, uint32_t nweights,
168
                      const unsigned char *src, size_t srclen, uint32_t flags);
264.2.6 by Andrey Hristov
Constify the usage of CHARSET_INFO almost to the last place in the code.
169
  size_t    (*strnxfrmlen)(const struct charset_info_st * const, size_t);
276 by Brian Aker
Cleaned out my_bool from strings.
170
  bool (*like_range)(const struct charset_info_st * const,
77.1.95 by Monty Taylor
Fixed silly my_bool==char nonsense.
171
                        const char *s, size_t s_length,
172
                        char escape, char w_one, char w_many,
173
                        size_t res_length,
174
                        char *min_str, char *max_str,
175
                        size_t *min_len, size_t *max_len);
264.2.6 by Andrey Hristov
Constify the usage of CHARSET_INFO almost to the last place in the code.
176
  int     (*wildcmp)(const struct charset_info_st * const,
1 by brian
clean slate
177
  		     const char *str,const char *str_end,
178
                     const char *wildstr,const char *wildend,
179
                     int escape,int w_one, int w_many);
180
264.2.6 by Andrey Hristov
Constify the usage of CHARSET_INFO almost to the last place in the code.
181
  int  (*strcasecmp)(const struct charset_info_st * const, const char *, const char *);
660.1.3 by Eric Herman
removed trailing whitespace with simple script:
182
411 by Brian Aker
Removed legacy bits around enum.
183
  uint32_t (*instr)(const struct charset_info_st * const,
1 by brian
clean slate
184
                const char *b, size_t b_length,
185
                const char *s, size_t s_length,
411 by Brian Aker
Removed legacy bits around enum.
186
                my_match_t *match, uint32_t nmatch);
660.1.3 by Eric Herman
removed trailing whitespace with simple script:
187
1 by brian
clean slate
188
  /* Hash calculation */
481 by Brian Aker
Remove all of uchar.
189
  void (*hash_sort)(const struct charset_info_st *cs, const unsigned char *key, size_t len,
660.1.3 by Eric Herman
removed trailing whitespace with simple script:
190
                    uint32_t *nr1, uint32_t *nr2);
481 by Brian Aker
Remove all of uchar.
191
  bool (*propagate)(const struct charset_info_st *cs, const unsigned char *str, size_t len);
1 by brian
clean slate
192
} MY_COLLATION_HANDLER;
193
194
extern MY_COLLATION_HANDLER my_collation_mb_bin_handler;
195
extern MY_COLLATION_HANDLER my_collation_8bit_simple_ci_handler;
196
extern MY_COLLATION_HANDLER my_collation_ucs2_uca_handler;
197
198
/* Some typedef to make it easy for C++ to make function pointers */
264.2.6 by Andrey Hristov
Constify the usage of CHARSET_INFO almost to the last place in the code.
199
typedef int (*my_charset_conv_mb_wc)(const struct charset_info_st * const, my_wc_t *,
481 by Brian Aker
Remove all of uchar.
200
                                     const unsigned char *, const unsigned char *);
264.2.6 by Andrey Hristov
Constify the usage of CHARSET_INFO almost to the last place in the code.
201
typedef int (*my_charset_conv_wc_mb)(const struct charset_info_st * const, my_wc_t,
481 by Brian Aker
Remove all of uchar.
202
                                     unsigned char *, unsigned char *);
264.2.6 by Andrey Hristov
Constify the usage of CHARSET_INFO almost to the last place in the code.
203
typedef size_t (*my_charset_conv_case)(const struct charset_info_st * const,
1 by brian
clean slate
204
                                       char *, size_t, char *, size_t);
205
206
207
/* See strings/CHARSET_INFO.txt about information on this structure  */
208
typedef struct my_charset_handler_st
209
{
276 by Brian Aker
Cleaned out my_bool from strings.
210
  bool (*init)(struct charset_info_st *, void *(*alloc)(size_t));
1 by brian
clean slate
211
  /* Multibyte routines */
411 by Brian Aker
Removed legacy bits around enum.
212
  uint32_t    (*ismbchar)(const struct charset_info_st * const, const char *, const char *);
213
  uint32_t    (*mbcharlen)(const struct charset_info_st * const, uint32_t c);
264.2.6 by Andrey Hristov
Constify the usage of CHARSET_INFO almost to the last place in the code.
214
  size_t  (*numchars)(const struct charset_info_st * const, const char *b, const char *e);
215
  size_t  (*charpos)(const struct charset_info_st * const, const char *b, const char *e,
1 by brian
clean slate
216
                     size_t pos);
264.2.6 by Andrey Hristov
Constify the usage of CHARSET_INFO almost to the last place in the code.
217
  size_t  (*well_formed_len)(const struct charset_info_st * const,
1 by brian
clean slate
218
                             const char *b,const char *e,
219
                             size_t nchars, int *error);
264.2.6 by Andrey Hristov
Constify the usage of CHARSET_INFO almost to the last place in the code.
220
  size_t  (*lengthsp)(const struct charset_info_st * const, const char *ptr, size_t length);
221
  size_t  (*numcells)(const struct charset_info_st * const, const char *b, const char *e);
660.1.3 by Eric Herman
removed trailing whitespace with simple script:
222
1 by brian
clean slate
223
  /* Unicode conversion */
224
  my_charset_conv_mb_wc mb_wc;
225
  my_charset_conv_wc_mb wc_mb;
226
227
  /* CTYPE scanner */
236.3.9 by Andrey Hristov
- Fix build of exotic, mostly non-western, charsets (--with-extra-charsets)
228
  int (*ctype)(const struct charset_info_st *cs, int *ctype,
481 by Brian Aker
Remove all of uchar.
229
               const unsigned char *s, const unsigned char *e);
660.1.3 by Eric Herman
removed trailing whitespace with simple script:
230
1 by brian
clean slate
231
  /* Functions for case and sort conversion */
264.2.6 by Andrey Hristov
Constify the usage of CHARSET_INFO almost to the last place in the code.
232
  size_t  (*caseup_str)(const struct charset_info_st * const, char *);
233
  size_t  (*casedn_str)(const struct charset_info_st * const, char *);
1 by brian
clean slate
234
235
  my_charset_conv_case caseup;
236
  my_charset_conv_case casedn;
237
238
  /* Charset dependant snprintf() */
264.2.6 by Andrey Hristov
Constify the usage of CHARSET_INFO almost to the last place in the code.
239
  size_t (*snprintf)(const struct charset_info_st * const, char *to, size_t n,
1 by brian
clean slate
240
                     const char *fmt,
1816.2.1 by Monty Taylor
Made ICC warning suppressions a little more sensible given what we can't accomplish any time in the near future.
241
                     ...)
242
#if defined(__GNUC__) && !defined(__INTEL_COMPILER)
243
                         __attribute__((format(printf, 4, 5)))
244
#endif
245
                         ;
264.2.6 by Andrey Hristov
Constify the usage of CHARSET_INFO almost to the last place in the code.
246
  size_t (*long10_to_str)(const struct charset_info_st * const, char *to, size_t n,
1 by brian
clean slate
247
                          int radix, long int val);
264.2.6 by Andrey Hristov
Constify the usage of CHARSET_INFO almost to the last place in the code.
248
  size_t (*int64_t10_to_str)(const struct charset_info_st * const, char *to, size_t n,
152 by Brian Aker
longlong replacement
249
                              int radix, int64_t val);
660.1.3 by Eric Herman
removed trailing whitespace with simple script:
250
264.2.6 by Andrey Hristov
Constify the usage of CHARSET_INFO almost to the last place in the code.
251
  void (*fill)(const struct charset_info_st * const, char *to, size_t len, int fill);
660.1.3 by Eric Herman
removed trailing whitespace with simple script:
252
1 by brian
clean slate
253
  /* String-to-number conversion routines */
264.2.6 by Andrey Hristov
Constify the usage of CHARSET_INFO almost to the last place in the code.
254
  long        (*strntol)(const struct charset_info_st * const, const char *s, size_t l,
255
			 int base, char **e, int *err);
612.2.4 by Monty Taylor
Moved some defines to config.h. Stopped including config.h directly anywhere.
256
  unsigned long      (*strntoul)(const struct charset_info_st * const, const char *s, size_t l,
264.2.6 by Andrey Hristov
Constify the usage of CHARSET_INFO almost to the last place in the code.
257
			 int base, char **e, int *err);
258
  int64_t   (*strntoll)(const struct charset_info_st * const, const char *s, size_t l,
259
			 int base, char **e, int *err);
260
  uint64_t (*strntoull)(const struct charset_info_st * const, const char *s, size_t l,
261
			 int base, char **e, int *err);
262
  double      (*strntod)(const struct charset_info_st * const, char *s, size_t l, char **e,
1 by brian
clean slate
263
			 int *err);
236.3.9 by Andrey Hristov
- Fix build of exotic, mostly non-western, charsets (--with-extra-charsets)
264
  int64_t    (*strtoll10)(const struct charset_info_st *cs,
1 by brian
clean slate
265
                           const char *nptr, char **endptr, int *error);
236.3.9 by Andrey Hristov
- Fix build of exotic, mostly non-western, charsets (--with-extra-charsets)
266
  uint64_t   (*strntoull10rnd)(const struct charset_info_st *cs,
1 by brian
clean slate
267
                                const char *str, size_t length,
268
                                int unsigned_fl,
269
                                char **endptr, int *error);
264.2.6 by Andrey Hristov
Constify the usage of CHARSET_INFO almost to the last place in the code.
270
  size_t        (*scan)(const struct charset_info_st * const, const char *b, const char *e,
1 by brian
clean slate
271
                        int sq);
272
} MY_CHARSET_HANDLER;
273
274
extern MY_CHARSET_HANDLER my_charset_8bit_handler;
275
extern MY_CHARSET_HANDLER my_charset_ucs2_handler;
276
277
278
/* See strings/CHARSET_INFO.txt about information on this structure  */
279
typedef struct charset_info_st
280
{
411 by Brian Aker
Removed legacy bits around enum.
281
  uint32_t      number;
282
  uint32_t      primary_number;
283
  uint32_t      binary_number;
284
  uint32_t      state;
1 by brian
clean slate
285
  const char *csname;
286
  const char *name;
287
  const char *comment;
288
  const char *tailoring;
481 by Brian Aker
Remove all of uchar.
289
  unsigned char    *ctype;
290
  unsigned char    *to_lower;
291
  unsigned char    *to_upper;
292
  unsigned char    *sort_order;
206 by Brian Aker
Removed final uint dead types.
293
  uint16_t   *contractions;
294
  uint16_t   **sort_order_big;
295
  uint16_t      *tab_to_uni;
1 by brian
clean slate
296
  MY_UNI_IDX  *tab_from_uni;
297
  MY_UNICASE_INFO **caseinfo;
481 by Brian Aker
Remove all of uchar.
298
  unsigned char     *state_map;
299
  unsigned char     *ident_map;
411 by Brian Aker
Removed legacy bits around enum.
300
  uint32_t      strxfrm_multiply;
481 by Brian Aker
Remove all of uchar.
301
  unsigned char     caseup_multiply;
302
  unsigned char     casedn_multiply;
411 by Brian Aker
Removed legacy bits around enum.
303
  uint32_t      mbminlen;
304
  uint32_t      mbmaxlen;
206 by Brian Aker
Removed final uint dead types.
305
  uint16_t    min_sort_char;
306
  uint16_t    max_sort_char; /* For LIKE optimization */
481 by Brian Aker
Remove all of uchar.
307
  unsigned char     pad_char;
276 by Brian Aker
Cleaned out my_bool from strings.
308
  bool   escape_with_backslash_is_dangerous;
481 by Brian Aker
Remove all of uchar.
309
  unsigned char     levels_for_compare;
310
  unsigned char     levels_for_order;
660.1.3 by Eric Herman
removed trailing whitespace with simple script:
311
1 by brian
clean slate
312
  MY_CHARSET_HANDLER *cset;
313
  MY_COLLATION_HANDLER *coll;
660.1.3 by Eric Herman
removed trailing whitespace with simple script:
314
1 by brian
clean slate
315
} CHARSET_INFO;
520.6.7 by Monty Taylor
Moved a bunch of crap out of common_includes.
316
365.2.9 by Monty Taylor
Got rid of all instances of ~0
317
#define ILLEGAL_CHARSET_INFO_NUMBER (UINT32_MAX)
1 by brian
clean slate
318
319
320
extern CHARSET_INFO my_charset_bin;
321
extern CHARSET_INFO my_charset_utf8mb4_bin;
322
extern CHARSET_INFO my_charset_utf8mb4_general_ci;
323
extern CHARSET_INFO my_charset_utf8mb4_unicode_ci;
324
325
#define MY_UTF8MB4                 "utf8"
1280.1.10 by Monty Taylor
Put everything in drizzled into drizzled namespace.
326
#define my_charset_utf8_general_ci ::drizzled::my_charset_utf8mb4_general_ci
327
#define my_charset_utf8_bin        ::drizzled::my_charset_utf8mb4_bin
1 by brian
clean slate
328
329
330
/* declarations for simple charsets */
264.2.6 by Andrey Hristov
Constify the usage of CHARSET_INFO almost to the last place in the code.
331
size_t my_strnxfrmlen_simple(const CHARSET_INFO * const, size_t);
1 by brian
clean slate
332
481 by Brian Aker
Remove all of uchar.
333
extern int  my_strnncollsp_simple(const CHARSET_INFO * const, const unsigned char *, size_t,
334
                                  const unsigned char *, size_t,
276 by Brian Aker
Cleaned out my_bool from strings.
335
                                  bool diff_if_only_endspace_difference);
1 by brian
clean slate
336
264.2.6 by Andrey Hristov
Constify the usage of CHARSET_INFO almost to the last place in the code.
337
extern size_t my_lengthsp_8bit(const CHARSET_INFO * const cs, const char *ptr, size_t length);
1 by brian
clean slate
338
411 by Brian Aker
Removed legacy bits around enum.
339
extern uint32_t my_instr_simple(const CHARSET_INFO * const,
1 by brian
clean slate
340
                            const char *b, size_t b_length,
341
                            const char *s, size_t s_length,
411 by Brian Aker
Removed legacy bits around enum.
342
                            my_match_t *match, uint32_t nmatch);
1 by brian
clean slate
343
344
345
/* Functions for 8bit */
481 by Brian Aker
Remove all of uchar.
346
int my_mb_ctype_8bit(const CHARSET_INFO * const,int *, const unsigned char *,const unsigned char *);
347
int my_mb_ctype_mb(const CHARSET_INFO * const,int *, const unsigned char *,const unsigned char *);
264.2.6 by Andrey Hristov
Constify the usage of CHARSET_INFO almost to the last place in the code.
348
349
size_t my_scan_8bit(const CHARSET_INFO * const cs, const char *b, const char *e, int sq);
350
351
size_t my_snprintf_8bit(const CHARSET_INFO * const, char *to, size_t n,
1 by brian
clean slate
352
                        const char *fmt, ...)
212.5.26 by Monty Taylor
Removed my_attribute. Renaming __attribute__((format(x,y,z))) to ATTRIBUTE_FORMAT(x,y,z) is retarded. So we don't do it anymore.
353
  __attribute__((format(printf, 4, 5)));
1 by brian
clean slate
354
264.2.6 by Andrey Hristov
Constify the usage of CHARSET_INFO almost to the last place in the code.
355
long       my_strntol_8bit(const CHARSET_INFO * const, const char *s, size_t l, int base,
1 by brian
clean slate
356
                           char **e, int *err);
612.2.4 by Monty Taylor
Moved some defines to config.h. Stopped including config.h directly anywhere.
357
unsigned long      my_strntoul_8bit(const CHARSET_INFO * const, const char *s, size_t l, int base,
264.2.6 by Andrey Hristov
Constify the usage of CHARSET_INFO almost to the last place in the code.
358
			    char **e, int *err);
359
int64_t   my_strntoll_8bit(const CHARSET_INFO * const, const char *s, size_t l, int base,
360
			    char **e, int *err);
361
uint64_t my_strntoull_8bit(const CHARSET_INFO * const, const char *s, size_t l, int base,
362
			    char **e, int *err);
363
double      my_strntod_8bit(const CHARSET_INFO * const, char *s, size_t l,char **e,
1 by brian
clean slate
364
			    int *err);
264.2.6 by Andrey Hristov
Constify the usage of CHARSET_INFO almost to the last place in the code.
365
size_t my_long10_to_str_8bit(const CHARSET_INFO * const, char *to, size_t l, int radix,
1 by brian
clean slate
366
                             long int val);
264.2.6 by Andrey Hristov
Constify the usage of CHARSET_INFO almost to the last place in the code.
367
size_t my_int64_t10_to_str_8bit(const CHARSET_INFO * const, char *to, size_t l, int radix,
152 by Brian Aker
longlong replacement
368
                                 int64_t val);
1 by brian
clean slate
369
264.2.6 by Andrey Hristov
Constify the usage of CHARSET_INFO almost to the last place in the code.
370
int64_t my_strtoll10_8bit(const CHARSET_INFO * const cs,
1 by brian
clean slate
371
                           const char *nptr, char **endptr, int *error);
660.1.3 by Eric Herman
removed trailing whitespace with simple script:
372
int64_t my_strtoll10_ucs2(CHARSET_INFO *cs,
1 by brian
clean slate
373
                           const char *nptr, char **endptr, int *error);
374
264.2.6 by Andrey Hristov
Constify the usage of CHARSET_INFO almost to the last place in the code.
375
uint64_t my_strntoull10rnd_8bit(const CHARSET_INFO * const cs,
1 by brian
clean slate
376
                                 const char *str, size_t length, int
377
                                 unsigned_fl, char **endptr, int *error);
660.1.3 by Eric Herman
removed trailing whitespace with simple script:
378
uint64_t my_strntoull10rnd_ucs2(CHARSET_INFO *cs,
1 by brian
clean slate
379
                                 const char *str, size_t length,
380
                                 int unsigned_fl, char **endptr, int *error);
381
264.2.6 by Andrey Hristov
Constify the usage of CHARSET_INFO almost to the last place in the code.
382
void my_fill_8bit(const CHARSET_INFO * const cs, char* to, size_t l, int fill);
1 by brian
clean slate
383
276 by Brian Aker
Cleaned out my_bool from strings.
384
bool  my_like_range_simple(const CHARSET_INFO * const cs,
1 by brian
clean slate
385
			      const char *ptr, size_t ptr_length,
77.1.95 by Monty Taylor
Fixed silly my_bool==char nonsense.
386
			      char escape, char w_one, char w_many,
1 by brian
clean slate
387
			      size_t res_length,
388
			      char *min_str, char *max_str,
389
			      size_t *min_length, size_t *max_length);
390
276 by Brian Aker
Cleaned out my_bool from strings.
391
bool  my_like_range_mb(const CHARSET_INFO * const cs,
1 by brian
clean slate
392
			  const char *ptr, size_t ptr_length,
77.1.95 by Monty Taylor
Fixed silly my_bool==char nonsense.
393
			  char escape, char w_one, char w_many,
1 by brian
clean slate
394
			  size_t res_length,
395
			  char *min_str, char *max_str,
396
			  size_t *min_length, size_t *max_length);
397
276 by Brian Aker
Cleaned out my_bool from strings.
398
bool  my_like_range_ucs2(const CHARSET_INFO * const cs,
1 by brian
clean slate
399
			    const char *ptr, size_t ptr_length,
77.1.95 by Monty Taylor
Fixed silly my_bool==char nonsense.
400
			    char escape, char w_one, char w_many,
1 by brian
clean slate
401
			    size_t res_length,
402
			    char *min_str, char *max_str,
403
			    size_t *min_length, size_t *max_length);
404
276 by Brian Aker
Cleaned out my_bool from strings.
405
bool  my_like_range_utf16(const CHARSET_INFO * const cs,
264.2.6 by Andrey Hristov
Constify the usage of CHARSET_INFO almost to the last place in the code.
406
			     const char *ptr, size_t ptr_length,
407
			     char escape, char w_one, char w_many,
408
			     size_t res_length,
409
			     char *min_str, char *max_str,
410
			     size_t *min_length, size_t *max_length);
411
276 by Brian Aker
Cleaned out my_bool from strings.
412
bool  my_like_range_utf32(const CHARSET_INFO * const cs,
264.2.6 by Andrey Hristov
Constify the usage of CHARSET_INFO almost to the last place in the code.
413
			     const char *ptr, size_t ptr_length,
414
			     char escape, char w_one, char w_many,
415
			     size_t res_length,
416
			     char *min_str, char *max_str,
417
			     size_t *min_length, size_t *max_length);
418
419
420
int my_wildcmp_8bit(const CHARSET_INFO * const,
1 by brian
clean slate
421
		    const char *str,const char *str_end,
422
		    const char *wildstr,const char *wildend,
423
		    int escape, int w_one, int w_many);
424
264.2.6 by Andrey Hristov
Constify the usage of CHARSET_INFO almost to the last place in the code.
425
int my_wildcmp_bin(const CHARSET_INFO * const,
1 by brian
clean slate
426
		   const char *str,const char *str_end,
427
		   const char *wildstr,const char *wildend,
428
		   int escape, int w_one, int w_many);
429
264.2.6 by Andrey Hristov
Constify the usage of CHARSET_INFO almost to the last place in the code.
430
size_t my_numchars_8bit(const CHARSET_INFO * const, const char *b, const char *e);
431
size_t my_numcells_8bit(const CHARSET_INFO * const, const char *b, const char *e);
432
size_t my_charpos_8bit(const CHARSET_INFO * const, const char *b, const char *e, size_t pos);
433
size_t my_well_formed_len_8bit(const CHARSET_INFO * const, const char *b, const char *e,
1 by brian
clean slate
434
                             size_t pos, int *error);
632.1.10 by Monty Taylor
Got rid of Sun Studio warnings.
435
typedef  void *(*cs_alloc_func)(size_t);
436
bool my_coll_init_simple(CHARSET_INFO *cs, cs_alloc_func alloc);
437
bool my_cset_init_8bit(CHARSET_INFO *cs, cs_alloc_func alloc);
411 by Brian Aker
Removed legacy bits around enum.
438
uint32_t my_mbcharlen_8bit(const CHARSET_INFO * const, uint32_t c);
1 by brian
clean slate
439
440
441
/* Functions for multibyte charsets */
264.2.6 by Andrey Hristov
Constify the usage of CHARSET_INFO almost to the last place in the code.
442
extern size_t my_caseup_str_mb(const CHARSET_INFO * const, char *);
443
extern size_t my_casedn_str_mb(const CHARSET_INFO * const, char *);
444
extern size_t my_caseup_mb(const CHARSET_INFO * const, char *src, size_t srclen,
445
                                         char *dst, size_t dstlen);
446
extern size_t my_casedn_mb(const CHARSET_INFO * const, char *src, size_t srclen,
447
                                         char *dst, size_t dstlen);
448
extern int my_strcasecmp_mb(const CHARSET_INFO * const  cs, const char *s, const char *t);
1 by brian
clean slate
449
264.2.6 by Andrey Hristov
Constify the usage of CHARSET_INFO almost to the last place in the code.
450
int my_wildcmp_mb(const CHARSET_INFO * const,
1 by brian
clean slate
451
		  const char *str,const char *str_end,
452
		  const char *wildstr,const char *wildend,
453
		  int escape, int w_one, int w_many);
264.2.6 by Andrey Hristov
Constify the usage of CHARSET_INFO almost to the last place in the code.
454
size_t my_numchars_mb(const CHARSET_INFO * const, const char *b, const char *e);
455
size_t my_numcells_mb(const CHARSET_INFO * const, const char *b, const char *e);
456
size_t my_charpos_mb(const CHARSET_INFO * const, const char *b, const char *e, size_t pos);
457
size_t my_well_formed_len_mb(const CHARSET_INFO * const, const char *b, const char *e,
1 by brian
clean slate
458
                             size_t pos, int *error);
411 by Brian Aker
Removed legacy bits around enum.
459
uint32_t my_instr_mb(const CHARSET_INFO * const,
1 by brian
clean slate
460
                 const char *b, size_t b_length,
461
                 const char *s, size_t s_length,
411 by Brian Aker
Removed legacy bits around enum.
462
                 my_match_t *match, uint32_t nmatch);
1 by brian
clean slate
463
264.2.6 by Andrey Hristov
Constify the usage of CHARSET_INFO almost to the last place in the code.
464
int my_strnncoll_mb_bin(const CHARSET_INFO * const  cs,
481 by Brian Aker
Remove all of uchar.
465
                        const unsigned char *s, size_t slen,
466
                        const unsigned char *t, size_t tlen,
276 by Brian Aker
Cleaned out my_bool from strings.
467
                        bool t_is_prefix);
1 by brian
clean slate
468
264.2.6 by Andrey Hristov
Constify the usage of CHARSET_INFO almost to the last place in the code.
469
int my_strnncollsp_mb_bin(const CHARSET_INFO * const cs,
481 by Brian Aker
Remove all of uchar.
470
                          const unsigned char *a, size_t a_length,
471
                          const unsigned char *b, size_t b_length,
276 by Brian Aker
Cleaned out my_bool from strings.
472
                          bool diff_if_only_endspace_difference);
1 by brian
clean slate
473
264.2.6 by Andrey Hristov
Constify the usage of CHARSET_INFO almost to the last place in the code.
474
int my_wildcmp_mb_bin(const CHARSET_INFO * const cs,
1 by brian
clean slate
475
                      const char *str,const char *str_end,
476
                      const char *wildstr,const char *wildend,
477
                      int escape, int w_one, int w_many);
478
647 by Brian Aker
Clean up of code for Solaris (removed dead lock call).
479
int my_strcasecmp_mb_bin(const CHARSET_INFO * const, const char *s, const char *t);
1 by brian
clean slate
480
1280.1.10 by Monty Taylor
Put everything in drizzled into drizzled namespace.
481
void my_hash_sort_mb_bin(const CHARSET_INFO * const,
481 by Brian Aker
Remove all of uchar.
482
                         const unsigned char *key, size_t len, uint32_t *nr1, uint32_t *nr2);
1 by brian
clean slate
483
264.2.6 by Andrey Hristov
Constify the usage of CHARSET_INFO almost to the last place in the code.
484
size_t my_strnxfrm_mb(const CHARSET_INFO * const,
481 by Brian Aker
Remove all of uchar.
485
                      unsigned char *dst, size_t dstlen, uint32_t nweights,
486
                      const unsigned char *src, size_t srclen, uint32_t flags);
1 by brian
clean slate
487
264.2.6 by Andrey Hristov
Constify the usage of CHARSET_INFO almost to the last place in the code.
488
int my_wildcmp_unicode(const CHARSET_INFO * const cs,
1 by brian
clean slate
489
                       const char *str, const char *str_end,
490
                       const char *wildstr, const char *wildend,
491
                       int escape, int w_one, int w_many,
492
                       MY_UNICASE_INFO **weights);
493
276 by Brian Aker
Cleaned out my_bool from strings.
494
extern bool my_parse_charset_xml(const char *bug, size_t len,
1 by brian
clean slate
495
				    int (*add)(CHARSET_INFO *cs));
496
481 by Brian Aker
Remove all of uchar.
497
bool my_propagate_simple(const CHARSET_INFO * const cs, const unsigned char *str, size_t len);
498
bool my_propagate_complex(const CHARSET_INFO * const cs, const unsigned char *str, size_t len);
264.2.6 by Andrey Hristov
Constify the usage of CHARSET_INFO almost to the last place in the code.
499
500
411 by Brian Aker
Removed legacy bits around enum.
501
uint32_t my_strxfrm_flag_normalize(uint32_t flags, uint32_t nlevels);
481 by Brian Aker
Remove all of uchar.
502
void my_strxfrm_desc_and_reverse(unsigned char *str, unsigned char *strend,
411 by Brian Aker
Removed legacy bits around enum.
503
                                 uint32_t flags, uint32_t level);
264.2.6 by Andrey Hristov
Constify the usage of CHARSET_INFO almost to the last place in the code.
504
size_t my_strxfrm_pad_desc_and_reverse(const CHARSET_INFO * const cs,
481 by Brian Aker
Remove all of uchar.
505
                                       unsigned char *str, unsigned char *frmend, unsigned char *strend,
411 by Brian Aker
Removed legacy bits around enum.
506
                                       uint32_t nweights, uint32_t flags, uint32_t level);
1 by brian
clean slate
507
276 by Brian Aker
Cleaned out my_bool from strings.
508
bool my_charset_is_ascii_compatible(const CHARSET_INFO * const cs);
1 by brian
clean slate
509
632.1.10 by Monty Taylor
Got rid of Sun Studio warnings.
510
/*
511
  Compare 0-terminated UTF8 strings.
512
513
  SYNOPSIS
514
    my_strcasecmp_utf8mb3()
515
    cs                  character set handler
516
    s                   First 0-terminated string to compare
517
    t                   Second 0-terminated string to compare
518
519
  IMPLEMENTATION
520
521
  RETURN
522
    - negative number if s < t
523
    - positive number if s > t
524
    - 0 is the strings are equal
525
*/
526
int
527
my_wc_mb_filename(const CHARSET_INFO * const,
528
                  my_wc_t wc, unsigned char *s, unsigned char *e);
529
530
int
531
my_mb_wc_filename(const CHARSET_INFO * const,
532
                  my_wc_t *pwc, const unsigned char *s, const unsigned char *e);
533
660.1.3 by Eric Herman
removed trailing whitespace with simple script:
534
632.1.10 by Monty Taylor
Got rid of Sun Studio warnings.
535
unsigned int my_ismbchar_utf8mb4(const CHARSET_INFO * const cs,                                  const char *b, const char *e);
536
unsigned int my_mbcharlen_utf8mb4(const CHARSET_INFO * const, uint32_t c);
537
538
size_t my_strnxfrmlen_utf8mb4(const CHARSET_INFO * const, size_t len);
539
size_t
540
my_strnxfrm_utf8mb4(const CHARSET_INFO * const cs,
541
                    unsigned char *dst, size_t dstlen, uint32_t nweights,
542
                    const unsigned char *src, size_t srclen, uint32_t flags);
543
544
int
545
my_wildcmp_utf8mb4(const CHARSET_INFO * const cs,
546
                   const char *str, const char *strend,
547
                   const char *wildstr, const char *wildend,
548
                   int escape, int w_one, int w_many);
549
int
550
my_strnncollsp_utf8mb4(const CHARSET_INFO * const cs,
551
                       const unsigned char *s, size_t slen,
552
                       const unsigned char *t, size_t tlen,
553
                       bool diff_if_only_endspace_difference);
554
int my_strcasecmp_utf8mb4(const CHARSET_INFO * const cs,
555
                          const char *s, const char *t);
556
557
int
558
my_strnncoll_utf8mb4(const CHARSET_INFO * const cs,
559
                     const unsigned char *s, size_t slen,
560
                     const unsigned char *t, size_t tlen,
561
                     bool t_is_prefix);
562
563
int
564
my_mb_wc_utf8mb4(const CHARSET_INFO * const cs,
565
                 my_wc_t * pwc, const unsigned char *s, const unsigned char *e);
566
567
int
568
my_wc_mb_utf8mb4(const CHARSET_INFO * const cs,
569
                 my_wc_t wc, unsigned char *r, unsigned char *e);
570
571
size_t my_caseup_str_utf8mb4(const CHARSET_INFO * const cs, char *src);
572
size_t my_casedn_str_utf8mb4(const CHARSET_INFO * const cs, char *src);
573
574
size_t
575
my_caseup_utf8mb4(const CHARSET_INFO * const cs, char *src, size_t srclen,
576
                  char *dst, size_t dstlen);
577
size_t
578
my_casedn_utf8mb4(const CHARSET_INFO * const cs,
579
                  char *src, size_t srclen,
580
                  char *dst, size_t dstlen);
581
582
583
bool my_coll_init_uca(CHARSET_INFO *cs, cs_alloc_func alloc);
584
585
int my_strnncoll_any_uca(const CHARSET_INFO * const cs,
586
                         const unsigned char *s, size_t slen,
587
                         const unsigned char *t, size_t tlen,
588
                         bool t_is_prefix);
589
590
int my_strnncollsp_any_uca(const CHARSET_INFO * const cs,
591
                           const unsigned char *s, size_t slen,
592
                           const unsigned char *t, size_t tlen,
593
                           bool diff_if_only_endspace_difference);
594
595
void my_hash_sort_any_uca(const CHARSET_INFO * const cs,
596
                          const unsigned char *s, size_t slen,
597
                          uint32_t *n1, uint32_t *n2);
598
660.1.3 by Eric Herman
removed trailing whitespace with simple script:
599
size_t my_strnxfrm_any_uca(const CHARSET_INFO * const cs,
632.1.10 by Monty Taylor
Got rid of Sun Studio warnings.
600
                           unsigned char *dst, size_t dstlen, uint32_t nweights,
601
                           const unsigned char *src, size_t srclen,
602
                           uint32_t flags);
603
604
int my_wildcmp_uca(const CHARSET_INFO * const cs,
605
                   const char *str,const char *str_end,
606
                   const char *wildstr,const char *wildend,
607
                   int escape, int w_one, int w_many);
608
609
int my_strnncoll_8bit_bin(const CHARSET_INFO * const,
610
                          const unsigned char *s, size_t slen,
611
                          const unsigned char *t, size_t tlen,
612
                          bool t_is_prefix);
613
int my_strnncollsp_8bit_bin(const CHARSET_INFO * const,
660.1.3 by Eric Herman
removed trailing whitespace with simple script:
614
                            const unsigned char *a, size_t a_length,
632.1.10 by Monty Taylor
Got rid of Sun Studio warnings.
615
                            const unsigned char *b, size_t b_length,
616
                            bool diff_if_only_endspace_difference);
617
size_t my_case_str_bin(const CHARSET_INFO * const, char *);
618
size_t my_case_bin(const CHARSET_INFO * const, char *,
619
                   size_t srclen, char *, size_t);
620
int my_strcasecmp_bin(const CHARSET_INFO * const,
621
                      const char *s, const char *t);
622
size_t
623
my_strnxfrm_8bit_bin(const CHARSET_INFO * const cs,
624
                     unsigned char * dst, size_t dstlen, uint32_t nweights,
625
                     const unsigned char *src, size_t srclen, uint32_t flags);
626
uint32_t my_instr_bin(const CHARSET_INFO * const,
627
                      const char *b, size_t b_length,
628
                      const char *s, size_t s_length,
629
                      my_match_t *match, uint32_t nmatch);
630
size_t my_lengthsp_binary(const CHARSET_INFO * const,
631
                          const char *, size_t length);
632
int my_mb_wc_bin(const CHARSET_INFO * const,
633
                 my_wc_t *wc, const unsigned char *str,
634
                 const unsigned char *end);
635
int my_wc_mb_bin(const CHARSET_INFO * const, my_wc_t wc,
636
                 unsigned char *str, unsigned char *end);
637
void my_hash_sort_8bit_bin(const CHARSET_INFO * const,
638
                           const unsigned char *key, size_t len,
639
                           uint32_t *nr1, uint32_t *nr2);
640
bool my_coll_init_8bit_bin(CHARSET_INFO *cs,
641
                           cs_alloc_func);
642
int my_strnncoll_binary(const CHARSET_INFO * const,
643
                        const unsigned char *s, size_t slen,
644
                        const unsigned char *t, size_t tlen,
645
                        bool t_is_prefix);
646
int my_strnncollsp_binary(const CHARSET_INFO * const cs,
647
                          const unsigned char *s, size_t slen,
648
                          const unsigned char *t, size_t tlen,
649
                          bool);
650
651
1 by brian
clean slate
652
#define	_MY_U	01	/* Upper case */
653
#define	_MY_L	02	/* Lower case */
654
#define	_MY_NMR	04	/* Numeral (digit) */
655
#define	_MY_SPC	010	/* Spacing character */
656
#define	_MY_PNT	020	/* Punctuation */
657
#define	_MY_CTR	040	/* Control character */
658
#define	_MY_B	0100	/* Blank */
659
#define	_MY_X	0200	/* heXadecimal digit */
660
661
662
#define	my_isascii(c)	(!((c) & ~0177))
663
#define	my_toascii(c)	((c) & 0177)
664
#define my_tocntrl(c)	((c) & 31)
665
#define my_toprint(c)	((c) | 64)
481 by Brian Aker
Remove all of uchar.
666
#define my_toupper(s,c)	(char) ((s)->to_upper[(unsigned char) (c)])
667
#define my_tolower(s,c)	(char) ((s)->to_lower[(unsigned char) (c)])
668
#define	my_isalpha(s, c)  (((s)->ctype+1)[(unsigned char) (c)] & (_MY_U | _MY_L))
669
#define	my_isupper(s, c)  (((s)->ctype+1)[(unsigned char) (c)] & _MY_U)
670
#define	my_islower(s, c)  (((s)->ctype+1)[(unsigned char) (c)] & _MY_L)
671
#define	my_isdigit(s, c)  (((s)->ctype+1)[(unsigned char) (c)] & _MY_NMR)
672
#define	my_isxdigit(s, c) (((s)->ctype+1)[(unsigned char) (c)] & _MY_X)
673
#define	my_isalnum(s, c)  (((s)->ctype+1)[(unsigned char) (c)] & (_MY_U | _MY_L | _MY_NMR))
674
#define	my_isspace(s, c)  (((s)->ctype+1)[(unsigned char) (c)] & _MY_SPC)
675
#define	my_ispunct(s, c)  (((s)->ctype+1)[(unsigned char) (c)] & _MY_PNT)
676
#define	my_isprint(s, c)  (((s)->ctype+1)[(unsigned char) (c)] & (_MY_PNT | _MY_U | _MY_L | _MY_NMR | _MY_B))
677
#define	my_isgraph(s, c)  (((s)->ctype+1)[(unsigned char) (c)] & (_MY_PNT | _MY_U | _MY_L | _MY_NMR))
678
#define	my_iscntrl(s, c)  (((s)->ctype+1)[(unsigned char) (c)] & _MY_CTR)
1 by brian
clean slate
679
680
/* Some macros that should be cleaned up a little */
681
#define my_isvar(s,c)                 (my_isalnum(s,c) || (c) == '_')
682
#define my_isvar_start(s,c)           (my_isalpha(s,c) || (c) == '_')
683
684
#define my_binary_compare(s)	      ((s)->state  & MY_CS_BINSORT)
685
#define use_strnxfrm(s)               ((s)->state  & MY_CS_STRNXFRM)
686
#define my_strnxfrm(cs, d, dl, s, sl) \
687
   ((cs)->coll->strnxfrm((cs), (d), (dl), (dl), (s), (sl), MY_STRXFRM_PAD_WITH_SPACE))
688
#define my_strnncoll(s, a, b, c, d) ((s)->coll->strnncoll((s), (a), (b), (c), (d), 0))
689
#define my_like_range(s, a, b, c, d, e, f, g, h, i, j) \
690
   ((s)->coll->like_range((s), (a), (b), (c), (d), (e), (f), (g), (h), (i), (j)))
691
#define my_wildcmp(cs,s,se,w,we,e,o,m) ((cs)->coll->wildcmp((cs),(s),(se),(w),(we),(e),(o),(m)))
692
#define my_strcasecmp(s, a, b)        ((s)->coll->strcasecmp((s), (a), (b)))
693
#define my_charpos(cs, b, e, num)     (cs)->cset->charpos((cs), (const char*) (b), (const char *)(e), (num))
694
695
696
#define use_mb(s)                     ((s)->cset->ismbchar != NULL)
697
#define my_ismbchar(s, a, b)          ((s)->cset->ismbchar((s), (a), (b)))
698
#define my_mbcharlen(s, a)            ((s)->cset->mbcharlen((s),(a)))
699
700
#define my_caseup_str(s, a)           ((s)->cset->caseup_str((s), (a)))
701
#define my_casedn_str(s, a)           ((s)->cset->casedn_str((s), (a)))
702
#define my_strntol(s, a, b, c, d, e)  ((s)->cset->strntol((s),(a),(b),(c),(d),(e)))
703
#define my_strntoul(s, a, b, c, d, e) ((s)->cset->strntoul((s),(a),(b),(c),(d),(e)))
704
#define my_strntoll(s, a, b, c, d, e) ((s)->cset->strntoll((s),(a),(b),(c),(d),(e)))
705
#define my_strntoull(s, a, b, c,d, e) ((s)->cset->strntoull((s),(a),(b),(c),(d),(e)))
706
#define my_strntod(s, a, b, c, d)     ((s)->cset->strntod((s),(a),(b),(c),(d)))
707
1054.2.11 by Monty Taylor
Removed copy_and_convert.
708
int make_escape_code(const CHARSET_INFO * const cs, const char *escape);
1 by brian
clean slate
709
1280.1.10 by Monty Taylor
Put everything in drizzled into drizzled namespace.
710
} /* namespace drizzled */
1 by brian
clean slate
711
1241.9.61 by Monty Taylor
No more mystrings in drizzled/
712
#endif /* DRIZZLED_CHARSET_INFO_H */