~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,
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.
241
                     ...) __attribute__((format(printf, 4, 5)));
264.2.6 by Andrey Hristov
Constify the usage of CHARSET_INFO almost to the last place in the code.
242
  size_t (*long10_to_str)(const struct charset_info_st * const, char *to, size_t n,
1 by brian
clean slate
243
                          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.
244
  size_t (*int64_t10_to_str)(const struct charset_info_st * const, char *to, size_t n,
152 by Brian Aker
longlong replacement
245
                              int radix, int64_t val);
660.1.3 by Eric Herman
removed trailing whitespace with simple script:
246
264.2.6 by Andrey Hristov
Constify the usage of CHARSET_INFO almost to the last place in the code.
247
  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:
248
1 by brian
clean slate
249
  /* 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.
250
  long        (*strntol)(const struct charset_info_st * const, const char *s, size_t l,
251
			 int base, char **e, int *err);
612.2.4 by Monty Taylor
Moved some defines to config.h. Stopped including config.h directly anywhere.
252
  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.
253
			 int base, char **e, int *err);
254
  int64_t   (*strntoll)(const struct charset_info_st * const, const char *s, size_t l,
255
			 int base, char **e, int *err);
256
  uint64_t (*strntoull)(const struct charset_info_st * const, const char *s, size_t l,
257
			 int base, char **e, int *err);
258
  double      (*strntod)(const struct charset_info_st * const, char *s, size_t l, char **e,
1 by brian
clean slate
259
			 int *err);
236.3.9 by Andrey Hristov
- Fix build of exotic, mostly non-western, charsets (--with-extra-charsets)
260
  int64_t    (*strtoll10)(const struct charset_info_st *cs,
1 by brian
clean slate
261
                           const char *nptr, char **endptr, int *error);
236.3.9 by Andrey Hristov
- Fix build of exotic, mostly non-western, charsets (--with-extra-charsets)
262
  uint64_t   (*strntoull10rnd)(const struct charset_info_st *cs,
1 by brian
clean slate
263
                                const char *str, size_t length,
264
                                int unsigned_fl,
265
                                char **endptr, int *error);
264.2.6 by Andrey Hristov
Constify the usage of CHARSET_INFO almost to the last place in the code.
266
  size_t        (*scan)(const struct charset_info_st * const, const char *b, const char *e,
1 by brian
clean slate
267
                        int sq);
268
} MY_CHARSET_HANDLER;
269
270
extern MY_CHARSET_HANDLER my_charset_8bit_handler;
271
extern MY_CHARSET_HANDLER my_charset_ucs2_handler;
272
273
274
/* See strings/CHARSET_INFO.txt about information on this structure  */
275
typedef struct charset_info_st
276
{
411 by Brian Aker
Removed legacy bits around enum.
277
  uint32_t      number;
278
  uint32_t      primary_number;
279
  uint32_t      binary_number;
280
  uint32_t      state;
1 by brian
clean slate
281
  const char *csname;
282
  const char *name;
283
  const char *comment;
284
  const char *tailoring;
481 by Brian Aker
Remove all of uchar.
285
  unsigned char    *ctype;
286
  unsigned char    *to_lower;
287
  unsigned char    *to_upper;
288
  unsigned char    *sort_order;
206 by Brian Aker
Removed final uint dead types.
289
  uint16_t   *contractions;
290
  uint16_t   **sort_order_big;
291
  uint16_t      *tab_to_uni;
1 by brian
clean slate
292
  MY_UNI_IDX  *tab_from_uni;
293
  MY_UNICASE_INFO **caseinfo;
481 by Brian Aker
Remove all of uchar.
294
  unsigned char     *state_map;
295
  unsigned char     *ident_map;
411 by Brian Aker
Removed legacy bits around enum.
296
  uint32_t      strxfrm_multiply;
481 by Brian Aker
Remove all of uchar.
297
  unsigned char     caseup_multiply;
298
  unsigned char     casedn_multiply;
411 by Brian Aker
Removed legacy bits around enum.
299
  uint32_t      mbminlen;
300
  uint32_t      mbmaxlen;
206 by Brian Aker
Removed final uint dead types.
301
  uint16_t    min_sort_char;
302
  uint16_t    max_sort_char; /* For LIKE optimization */
481 by Brian Aker
Remove all of uchar.
303
  unsigned char     pad_char;
276 by Brian Aker
Cleaned out my_bool from strings.
304
  bool   escape_with_backslash_is_dangerous;
481 by Brian Aker
Remove all of uchar.
305
  unsigned char     levels_for_compare;
306
  unsigned char     levels_for_order;
660.1.3 by Eric Herman
removed trailing whitespace with simple script:
307
1 by brian
clean slate
308
  MY_CHARSET_HANDLER *cset;
309
  MY_COLLATION_HANDLER *coll;
660.1.3 by Eric Herman
removed trailing whitespace with simple script:
310
1 by brian
clean slate
311
} CHARSET_INFO;
520.6.7 by Monty Taylor
Moved a bunch of crap out of common_includes.
312
365.2.9 by Monty Taylor
Got rid of all instances of ~0
313
#define ILLEGAL_CHARSET_INFO_NUMBER (UINT32_MAX)
1 by brian
clean slate
314
315
316
extern CHARSET_INFO my_charset_bin;
317
extern CHARSET_INFO my_charset_utf8mb4_bin;
318
extern CHARSET_INFO my_charset_utf8mb4_general_ci;
319
extern CHARSET_INFO my_charset_utf8mb4_unicode_ci;
320
321
#define MY_UTF8MB4                 "utf8"
1280.1.10 by Monty Taylor
Put everything in drizzled into drizzled namespace.
322
#define my_charset_utf8_general_ci ::drizzled::my_charset_utf8mb4_general_ci
323
#define my_charset_utf8_bin        ::drizzled::my_charset_utf8mb4_bin
1 by brian
clean slate
324
325
326
/* declarations for simple charsets */
264.2.6 by Andrey Hristov
Constify the usage of CHARSET_INFO almost to the last place in the code.
327
size_t my_strnxfrmlen_simple(const CHARSET_INFO * const, size_t);
1 by brian
clean slate
328
481 by Brian Aker
Remove all of uchar.
329
extern int  my_strnncollsp_simple(const CHARSET_INFO * const, const unsigned char *, size_t,
330
                                  const unsigned char *, size_t,
276 by Brian Aker
Cleaned out my_bool from strings.
331
                                  bool diff_if_only_endspace_difference);
1 by brian
clean slate
332
264.2.6 by Andrey Hristov
Constify the usage of CHARSET_INFO almost to the last place in the code.
333
extern size_t my_lengthsp_8bit(const CHARSET_INFO * const cs, const char *ptr, size_t length);
1 by brian
clean slate
334
411 by Brian Aker
Removed legacy bits around enum.
335
extern uint32_t my_instr_simple(const CHARSET_INFO * const,
1 by brian
clean slate
336
                            const char *b, size_t b_length,
337
                            const char *s, size_t s_length,
411 by Brian Aker
Removed legacy bits around enum.
338
                            my_match_t *match, uint32_t nmatch);
1 by brian
clean slate
339
340
341
/* Functions for 8bit */
481 by Brian Aker
Remove all of uchar.
342
int my_mb_ctype_8bit(const CHARSET_INFO * const,int *, const unsigned char *,const unsigned char *);
343
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.
344
345
size_t my_scan_8bit(const CHARSET_INFO * const cs, const char *b, const char *e, int sq);
346
347
size_t my_snprintf_8bit(const CHARSET_INFO * const, char *to, size_t n,
1 by brian
clean slate
348
                        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.
349
  __attribute__((format(printf, 4, 5)));
1 by brian
clean slate
350
264.2.6 by Andrey Hristov
Constify the usage of CHARSET_INFO almost to the last place in the code.
351
long       my_strntol_8bit(const CHARSET_INFO * const, const char *s, size_t l, int base,
1 by brian
clean slate
352
                           char **e, int *err);
612.2.4 by Monty Taylor
Moved some defines to config.h. Stopped including config.h directly anywhere.
353
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.
354
			    char **e, int *err);
355
int64_t   my_strntoll_8bit(const CHARSET_INFO * const, const char *s, size_t l, int base,
356
			    char **e, int *err);
357
uint64_t my_strntoull_8bit(const CHARSET_INFO * const, const char *s, size_t l, int base,
358
			    char **e, int *err);
359
double      my_strntod_8bit(const CHARSET_INFO * const, char *s, size_t l,char **e,
1 by brian
clean slate
360
			    int *err);
264.2.6 by Andrey Hristov
Constify the usage of CHARSET_INFO almost to the last place in the code.
361
size_t my_long10_to_str_8bit(const CHARSET_INFO * const, char *to, size_t l, int radix,
1 by brian
clean slate
362
                             long int val);
264.2.6 by Andrey Hristov
Constify the usage of CHARSET_INFO almost to the last place in the code.
363
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
364
                                 int64_t val);
1 by brian
clean slate
365
264.2.6 by Andrey Hristov
Constify the usage of CHARSET_INFO almost to the last place in the code.
366
int64_t my_strtoll10_8bit(const CHARSET_INFO * const cs,
1 by brian
clean slate
367
                           const char *nptr, char **endptr, int *error);
660.1.3 by Eric Herman
removed trailing whitespace with simple script:
368
int64_t my_strtoll10_ucs2(CHARSET_INFO *cs,
1 by brian
clean slate
369
                           const char *nptr, char **endptr, int *error);
370
264.2.6 by Andrey Hristov
Constify the usage of CHARSET_INFO almost to the last place in the code.
371
uint64_t my_strntoull10rnd_8bit(const CHARSET_INFO * const cs,
1 by brian
clean slate
372
                                 const char *str, size_t length, int
373
                                 unsigned_fl, char **endptr, int *error);
660.1.3 by Eric Herman
removed trailing whitespace with simple script:
374
uint64_t my_strntoull10rnd_ucs2(CHARSET_INFO *cs,
1 by brian
clean slate
375
                                 const char *str, size_t length,
376
                                 int unsigned_fl, char **endptr, int *error);
377
264.2.6 by Andrey Hristov
Constify the usage of CHARSET_INFO almost to the last place in the code.
378
void my_fill_8bit(const CHARSET_INFO * const cs, char* to, size_t l, int fill);
1 by brian
clean slate
379
276 by Brian Aker
Cleaned out my_bool from strings.
380
bool  my_like_range_simple(const CHARSET_INFO * const cs,
1 by brian
clean slate
381
			      const char *ptr, size_t ptr_length,
77.1.95 by Monty Taylor
Fixed silly my_bool==char nonsense.
382
			      char escape, char w_one, char w_many,
1 by brian
clean slate
383
			      size_t res_length,
384
			      char *min_str, char *max_str,
385
			      size_t *min_length, size_t *max_length);
386
276 by Brian Aker
Cleaned out my_bool from strings.
387
bool  my_like_range_mb(const CHARSET_INFO * const cs,
1 by brian
clean slate
388
			  const char *ptr, size_t ptr_length,
77.1.95 by Monty Taylor
Fixed silly my_bool==char nonsense.
389
			  char escape, char w_one, char w_many,
1 by brian
clean slate
390
			  size_t res_length,
391
			  char *min_str, char *max_str,
392
			  size_t *min_length, size_t *max_length);
393
276 by Brian Aker
Cleaned out my_bool from strings.
394
bool  my_like_range_ucs2(const CHARSET_INFO * const cs,
1 by brian
clean slate
395
			    const char *ptr, size_t ptr_length,
77.1.95 by Monty Taylor
Fixed silly my_bool==char nonsense.
396
			    char escape, char w_one, char w_many,
1 by brian
clean slate
397
			    size_t res_length,
398
			    char *min_str, char *max_str,
399
			    size_t *min_length, size_t *max_length);
400
276 by Brian Aker
Cleaned out my_bool from strings.
401
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.
402
			     const char *ptr, size_t ptr_length,
403
			     char escape, char w_one, char w_many,
404
			     size_t res_length,
405
			     char *min_str, char *max_str,
406
			     size_t *min_length, size_t *max_length);
407
276 by Brian Aker
Cleaned out my_bool from strings.
408
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.
409
			     const char *ptr, size_t ptr_length,
410
			     char escape, char w_one, char w_many,
411
			     size_t res_length,
412
			     char *min_str, char *max_str,
413
			     size_t *min_length, size_t *max_length);
414
415
416
int my_wildcmp_8bit(const CHARSET_INFO * const,
1 by brian
clean slate
417
		    const char *str,const char *str_end,
418
		    const char *wildstr,const char *wildend,
419
		    int escape, int w_one, int w_many);
420
264.2.6 by Andrey Hristov
Constify the usage of CHARSET_INFO almost to the last place in the code.
421
int my_wildcmp_bin(const CHARSET_INFO * const,
1 by brian
clean slate
422
		   const char *str,const char *str_end,
423
		   const char *wildstr,const char *wildend,
424
		   int escape, int w_one, int w_many);
425
264.2.6 by Andrey Hristov
Constify the usage of CHARSET_INFO almost to the last place in the code.
426
size_t my_numchars_8bit(const CHARSET_INFO * const, const char *b, const char *e);
427
size_t my_numcells_8bit(const CHARSET_INFO * const, const char *b, const char *e);
428
size_t my_charpos_8bit(const CHARSET_INFO * const, const char *b, const char *e, size_t pos);
429
size_t my_well_formed_len_8bit(const CHARSET_INFO * const, const char *b, const char *e,
1 by brian
clean slate
430
                             size_t pos, int *error);
632.1.10 by Monty Taylor
Got rid of Sun Studio warnings.
431
typedef  void *(*cs_alloc_func)(size_t);
432
bool my_coll_init_simple(CHARSET_INFO *cs, cs_alloc_func alloc);
433
bool my_cset_init_8bit(CHARSET_INFO *cs, cs_alloc_func alloc);
411 by Brian Aker
Removed legacy bits around enum.
434
uint32_t my_mbcharlen_8bit(const CHARSET_INFO * const, uint32_t c);
1 by brian
clean slate
435
436
437
/* Functions for multibyte charsets */
264.2.6 by Andrey Hristov
Constify the usage of CHARSET_INFO almost to the last place in the code.
438
extern size_t my_caseup_str_mb(const CHARSET_INFO * const, char *);
439
extern size_t my_casedn_str_mb(const CHARSET_INFO * const, char *);
440
extern size_t my_caseup_mb(const CHARSET_INFO * const, char *src, size_t srclen,
441
                                         char *dst, size_t dstlen);
442
extern size_t my_casedn_mb(const CHARSET_INFO * const, char *src, size_t srclen,
443
                                         char *dst, size_t dstlen);
444
extern int my_strcasecmp_mb(const CHARSET_INFO * const  cs, const char *s, const char *t);
1 by brian
clean slate
445
264.2.6 by Andrey Hristov
Constify the usage of CHARSET_INFO almost to the last place in the code.
446
int my_wildcmp_mb(const CHARSET_INFO * const,
1 by brian
clean slate
447
		  const char *str,const char *str_end,
448
		  const char *wildstr,const char *wildend,
449
		  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.
450
size_t my_numchars_mb(const CHARSET_INFO * const, const char *b, const char *e);
451
size_t my_numcells_mb(const CHARSET_INFO * const, const char *b, const char *e);
452
size_t my_charpos_mb(const CHARSET_INFO * const, const char *b, const char *e, size_t pos);
453
size_t my_well_formed_len_mb(const CHARSET_INFO * const, const char *b, const char *e,
1 by brian
clean slate
454
                             size_t pos, int *error);
411 by Brian Aker
Removed legacy bits around enum.
455
uint32_t my_instr_mb(const CHARSET_INFO * const,
1 by brian
clean slate
456
                 const char *b, size_t b_length,
457
                 const char *s, size_t s_length,
411 by Brian Aker
Removed legacy bits around enum.
458
                 my_match_t *match, uint32_t nmatch);
1 by brian
clean slate
459
264.2.6 by Andrey Hristov
Constify the usage of CHARSET_INFO almost to the last place in the code.
460
int my_strnncoll_mb_bin(const CHARSET_INFO * const  cs,
481 by Brian Aker
Remove all of uchar.
461
                        const unsigned char *s, size_t slen,
462
                        const unsigned char *t, size_t tlen,
276 by Brian Aker
Cleaned out my_bool from strings.
463
                        bool t_is_prefix);
1 by brian
clean slate
464
264.2.6 by Andrey Hristov
Constify the usage of CHARSET_INFO almost to the last place in the code.
465
int my_strnncollsp_mb_bin(const CHARSET_INFO * const cs,
481 by Brian Aker
Remove all of uchar.
466
                          const unsigned char *a, size_t a_length,
467
                          const unsigned char *b, size_t b_length,
276 by Brian Aker
Cleaned out my_bool from strings.
468
                          bool diff_if_only_endspace_difference);
1 by brian
clean slate
469
264.2.6 by Andrey Hristov
Constify the usage of CHARSET_INFO almost to the last place in the code.
470
int my_wildcmp_mb_bin(const CHARSET_INFO * const cs,
1 by brian
clean slate
471
                      const char *str,const char *str_end,
472
                      const char *wildstr,const char *wildend,
473
                      int escape, int w_one, int w_many);
474
647 by Brian Aker
Clean up of code for Solaris (removed dead lock call).
475
int my_strcasecmp_mb_bin(const CHARSET_INFO * const, const char *s, const char *t);
1 by brian
clean slate
476
1280.1.10 by Monty Taylor
Put everything in drizzled into drizzled namespace.
477
void my_hash_sort_mb_bin(const CHARSET_INFO * const,
481 by Brian Aker
Remove all of uchar.
478
                         const unsigned char *key, size_t len, uint32_t *nr1, uint32_t *nr2);
1 by brian
clean slate
479
264.2.6 by Andrey Hristov
Constify the usage of CHARSET_INFO almost to the last place in the code.
480
size_t my_strnxfrm_mb(const CHARSET_INFO * const,
481 by Brian Aker
Remove all of uchar.
481
                      unsigned char *dst, size_t dstlen, uint32_t nweights,
482
                      const unsigned char *src, size_t srclen, uint32_t flags);
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
int my_wildcmp_unicode(const CHARSET_INFO * const cs,
1 by brian
clean slate
485
                       const char *str, const char *str_end,
486
                       const char *wildstr, const char *wildend,
487
                       int escape, int w_one, int w_many,
488
                       MY_UNICASE_INFO **weights);
489
276 by Brian Aker
Cleaned out my_bool from strings.
490
extern bool my_parse_charset_xml(const char *bug, size_t len,
1 by brian
clean slate
491
				    int (*add)(CHARSET_INFO *cs));
492
481 by Brian Aker
Remove all of uchar.
493
bool my_propagate_simple(const CHARSET_INFO * const cs, const unsigned char *str, size_t len);
494
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.
495
496
411 by Brian Aker
Removed legacy bits around enum.
497
uint32_t my_strxfrm_flag_normalize(uint32_t flags, uint32_t nlevels);
481 by Brian Aker
Remove all of uchar.
498
void my_strxfrm_desc_and_reverse(unsigned char *str, unsigned char *strend,
411 by Brian Aker
Removed legacy bits around enum.
499
                                 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.
500
size_t my_strxfrm_pad_desc_and_reverse(const CHARSET_INFO * const cs,
481 by Brian Aker
Remove all of uchar.
501
                                       unsigned char *str, unsigned char *frmend, unsigned char *strend,
411 by Brian Aker
Removed legacy bits around enum.
502
                                       uint32_t nweights, uint32_t flags, uint32_t level);
1 by brian
clean slate
503
276 by Brian Aker
Cleaned out my_bool from strings.
504
bool my_charset_is_ascii_compatible(const CHARSET_INFO * const cs);
1 by brian
clean slate
505
632.1.10 by Monty Taylor
Got rid of Sun Studio warnings.
506
/*
507
  Compare 0-terminated UTF8 strings.
508
509
  SYNOPSIS
510
    my_strcasecmp_utf8mb3()
511
    cs                  character set handler
512
    s                   First 0-terminated string to compare
513
    t                   Second 0-terminated string to compare
514
515
  IMPLEMENTATION
516
517
  RETURN
518
    - negative number if s < t
519
    - positive number if s > t
520
    - 0 is the strings are equal
521
*/
522
int
523
my_wc_mb_filename(const CHARSET_INFO * const,
524
                  my_wc_t wc, unsigned char *s, unsigned char *e);
525
526
int
527
my_mb_wc_filename(const CHARSET_INFO * const,
528
                  my_wc_t *pwc, const unsigned char *s, const unsigned char *e);
529
660.1.3 by Eric Herman
removed trailing whitespace with simple script:
530
632.1.10 by Monty Taylor
Got rid of Sun Studio warnings.
531
unsigned int my_ismbchar_utf8mb4(const CHARSET_INFO * const cs,                                  const char *b, const char *e);
532
unsigned int my_mbcharlen_utf8mb4(const CHARSET_INFO * const, uint32_t c);
533
534
size_t my_strnxfrmlen_utf8mb4(const CHARSET_INFO * const, size_t len);
535
size_t
536
my_strnxfrm_utf8mb4(const CHARSET_INFO * const cs,
537
                    unsigned char *dst, size_t dstlen, uint32_t nweights,
538
                    const unsigned char *src, size_t srclen, uint32_t flags);
539
540
int
541
my_wildcmp_utf8mb4(const CHARSET_INFO * const cs,
542
                   const char *str, const char *strend,
543
                   const char *wildstr, const char *wildend,
544
                   int escape, int w_one, int w_many);
545
int
546
my_strnncollsp_utf8mb4(const CHARSET_INFO * const cs,
547
                       const unsigned char *s, size_t slen,
548
                       const unsigned char *t, size_t tlen,
549
                       bool diff_if_only_endspace_difference);
550
int my_strcasecmp_utf8mb4(const CHARSET_INFO * const cs,
551
                          const char *s, const char *t);
552
553
int
554
my_strnncoll_utf8mb4(const CHARSET_INFO * const cs,
555
                     const unsigned char *s, size_t slen,
556
                     const unsigned char *t, size_t tlen,
557
                     bool t_is_prefix);
558
559
int
560
my_mb_wc_utf8mb4(const CHARSET_INFO * const cs,
561
                 my_wc_t * pwc, const unsigned char *s, const unsigned char *e);
562
563
int
564
my_wc_mb_utf8mb4(const CHARSET_INFO * const cs,
565
                 my_wc_t wc, unsigned char *r, unsigned char *e);
566
567
size_t my_caseup_str_utf8mb4(const CHARSET_INFO * const cs, char *src);
568
size_t my_casedn_str_utf8mb4(const CHARSET_INFO * const cs, char *src);
569
570
size_t
571
my_caseup_utf8mb4(const CHARSET_INFO * const cs, char *src, size_t srclen,
572
                  char *dst, size_t dstlen);
573
size_t
574
my_casedn_utf8mb4(const CHARSET_INFO * const cs,
575
                  char *src, size_t srclen,
576
                  char *dst, size_t dstlen);
577
578
579
bool my_coll_init_uca(CHARSET_INFO *cs, cs_alloc_func alloc);
580
581
int my_strnncoll_any_uca(const CHARSET_INFO * const cs,
582
                         const unsigned char *s, size_t slen,
583
                         const unsigned char *t, size_t tlen,
584
                         bool t_is_prefix);
585
586
int my_strnncollsp_any_uca(const CHARSET_INFO * const cs,
587
                           const unsigned char *s, size_t slen,
588
                           const unsigned char *t, size_t tlen,
589
                           bool diff_if_only_endspace_difference);
590
591
void my_hash_sort_any_uca(const CHARSET_INFO * const cs,
592
                          const unsigned char *s, size_t slen,
593
                          uint32_t *n1, uint32_t *n2);
594
660.1.3 by Eric Herman
removed trailing whitespace with simple script:
595
size_t my_strnxfrm_any_uca(const CHARSET_INFO * const cs,
632.1.10 by Monty Taylor
Got rid of Sun Studio warnings.
596
                           unsigned char *dst, size_t dstlen, uint32_t nweights,
597
                           const unsigned char *src, size_t srclen,
598
                           uint32_t flags);
599
600
int my_wildcmp_uca(const CHARSET_INFO * const cs,
601
                   const char *str,const char *str_end,
602
                   const char *wildstr,const char *wildend,
603
                   int escape, int w_one, int w_many);
604
605
int my_strnncoll_8bit_bin(const CHARSET_INFO * const,
606
                          const unsigned char *s, size_t slen,
607
                          const unsigned char *t, size_t tlen,
608
                          bool t_is_prefix);
609
int my_strnncollsp_8bit_bin(const CHARSET_INFO * const,
660.1.3 by Eric Herman
removed trailing whitespace with simple script:
610
                            const unsigned char *a, size_t a_length,
632.1.10 by Monty Taylor
Got rid of Sun Studio warnings.
611
                            const unsigned char *b, size_t b_length,
612
                            bool diff_if_only_endspace_difference);
613
size_t my_case_str_bin(const CHARSET_INFO * const, char *);
614
size_t my_case_bin(const CHARSET_INFO * const, char *,
615
                   size_t srclen, char *, size_t);
616
int my_strcasecmp_bin(const CHARSET_INFO * const,
617
                      const char *s, const char *t);
618
size_t
619
my_strnxfrm_8bit_bin(const CHARSET_INFO * const cs,
620
                     unsigned char * dst, size_t dstlen, uint32_t nweights,
621
                     const unsigned char *src, size_t srclen, uint32_t flags);
622
uint32_t my_instr_bin(const CHARSET_INFO * const,
623
                      const char *b, size_t b_length,
624
                      const char *s, size_t s_length,
625
                      my_match_t *match, uint32_t nmatch);
626
size_t my_lengthsp_binary(const CHARSET_INFO * const,
627
                          const char *, size_t length);
628
int my_mb_wc_bin(const CHARSET_INFO * const,
629
                 my_wc_t *wc, const unsigned char *str,
630
                 const unsigned char *end);
631
int my_wc_mb_bin(const CHARSET_INFO * const, my_wc_t wc,
632
                 unsigned char *str, unsigned char *end);
633
void my_hash_sort_8bit_bin(const CHARSET_INFO * const,
634
                           const unsigned char *key, size_t len,
635
                           uint32_t *nr1, uint32_t *nr2);
636
bool my_coll_init_8bit_bin(CHARSET_INFO *cs,
637
                           cs_alloc_func);
638
int my_strnncoll_binary(const CHARSET_INFO * const,
639
                        const unsigned char *s, size_t slen,
640
                        const unsigned char *t, size_t tlen,
641
                        bool t_is_prefix);
642
int my_strnncollsp_binary(const CHARSET_INFO * const cs,
643
                          const unsigned char *s, size_t slen,
644
                          const unsigned char *t, size_t tlen,
645
                          bool);
646
647
1 by brian
clean slate
648
#define	_MY_U	01	/* Upper case */
649
#define	_MY_L	02	/* Lower case */
650
#define	_MY_NMR	04	/* Numeral (digit) */
651
#define	_MY_SPC	010	/* Spacing character */
652
#define	_MY_PNT	020	/* Punctuation */
653
#define	_MY_CTR	040	/* Control character */
654
#define	_MY_B	0100	/* Blank */
655
#define	_MY_X	0200	/* heXadecimal digit */
656
657
658
#define	my_isascii(c)	(!((c) & ~0177))
659
#define	my_toascii(c)	((c) & 0177)
660
#define my_tocntrl(c)	((c) & 31)
661
#define my_toprint(c)	((c) | 64)
481 by Brian Aker
Remove all of uchar.
662
#define my_toupper(s,c)	(char) ((s)->to_upper[(unsigned char) (c)])
663
#define my_tolower(s,c)	(char) ((s)->to_lower[(unsigned char) (c)])
664
#define	my_isalpha(s, c)  (((s)->ctype+1)[(unsigned char) (c)] & (_MY_U | _MY_L))
665
#define	my_isupper(s, c)  (((s)->ctype+1)[(unsigned char) (c)] & _MY_U)
666
#define	my_islower(s, c)  (((s)->ctype+1)[(unsigned char) (c)] & _MY_L)
667
#define	my_isdigit(s, c)  (((s)->ctype+1)[(unsigned char) (c)] & _MY_NMR)
668
#define	my_isxdigit(s, c) (((s)->ctype+1)[(unsigned char) (c)] & _MY_X)
669
#define	my_isalnum(s, c)  (((s)->ctype+1)[(unsigned char) (c)] & (_MY_U | _MY_L | _MY_NMR))
670
#define	my_isspace(s, c)  (((s)->ctype+1)[(unsigned char) (c)] & _MY_SPC)
671
#define	my_ispunct(s, c)  (((s)->ctype+1)[(unsigned char) (c)] & _MY_PNT)
672
#define	my_isprint(s, c)  (((s)->ctype+1)[(unsigned char) (c)] & (_MY_PNT | _MY_U | _MY_L | _MY_NMR | _MY_B))
673
#define	my_isgraph(s, c)  (((s)->ctype+1)[(unsigned char) (c)] & (_MY_PNT | _MY_U | _MY_L | _MY_NMR))
674
#define	my_iscntrl(s, c)  (((s)->ctype+1)[(unsigned char) (c)] & _MY_CTR)
1 by brian
clean slate
675
676
/* Some macros that should be cleaned up a little */
677
#define my_isvar(s,c)                 (my_isalnum(s,c) || (c) == '_')
678
#define my_isvar_start(s,c)           (my_isalpha(s,c) || (c) == '_')
679
680
#define my_binary_compare(s)	      ((s)->state  & MY_CS_BINSORT)
681
#define use_strnxfrm(s)               ((s)->state  & MY_CS_STRNXFRM)
682
#define my_strnxfrm(cs, d, dl, s, sl) \
683
   ((cs)->coll->strnxfrm((cs), (d), (dl), (dl), (s), (sl), MY_STRXFRM_PAD_WITH_SPACE))
684
#define my_strnncoll(s, a, b, c, d) ((s)->coll->strnncoll((s), (a), (b), (c), (d), 0))
685
#define my_like_range(s, a, b, c, d, e, f, g, h, i, j) \
686
   ((s)->coll->like_range((s), (a), (b), (c), (d), (e), (f), (g), (h), (i), (j)))
687
#define my_wildcmp(cs,s,se,w,we,e,o,m) ((cs)->coll->wildcmp((cs),(s),(se),(w),(we),(e),(o),(m)))
688
#define my_strcasecmp(s, a, b)        ((s)->coll->strcasecmp((s), (a), (b)))
689
#define my_charpos(cs, b, e, num)     (cs)->cset->charpos((cs), (const char*) (b), (const char *)(e), (num))
690
691
692
#define use_mb(s)                     ((s)->cset->ismbchar != NULL)
693
#define my_ismbchar(s, a, b)          ((s)->cset->ismbchar((s), (a), (b)))
694
#define my_mbcharlen(s, a)            ((s)->cset->mbcharlen((s),(a)))
695
696
#define my_caseup_str(s, a)           ((s)->cset->caseup_str((s), (a)))
697
#define my_casedn_str(s, a)           ((s)->cset->casedn_str((s), (a)))
698
#define my_strntol(s, a, b, c, d, e)  ((s)->cset->strntol((s),(a),(b),(c),(d),(e)))
699
#define my_strntoul(s, a, b, c, d, e) ((s)->cset->strntoul((s),(a),(b),(c),(d),(e)))
700
#define my_strntoll(s, a, b, c, d, e) ((s)->cset->strntoll((s),(a),(b),(c),(d),(e)))
701
#define my_strntoull(s, a, b, c,d, e) ((s)->cset->strntoull((s),(a),(b),(c),(d),(e)))
702
#define my_strntod(s, a, b, c, d)     ((s)->cset->strntod((s),(a),(b),(c),(d)))
703
1054.2.11 by Monty Taylor
Removed copy_and_convert.
704
int make_escape_code(const CHARSET_INFO * const cs, const char *escape);
1 by brian
clean slate
705
1280.1.10 by Monty Taylor
Put everything in drizzled into drizzled namespace.
706
} /* namespace drizzled */
1 by brian
clean slate
707
1241.9.61 by Monty Taylor
No more mystrings in drizzled/
708
#endif /* DRIZZLED_CHARSET_INFO_H */