MySQL 5.6.14 Source Code Document
Main Page
Related Pages
Modules
Namespaces
Classes
Files
Examples
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
Groups
Pages
chartype.h
1
/* $NetBSD: chartype.h,v 1.8 2011/07/29 23:44:44 christos Exp $ */
2
3
/*-
4
* Copyright (c) 2009 The NetBSD Foundation, Inc.
5
* All rights reserved.
6
*
7
* Redistribution and use in source and binary forms, with or without
8
* modification, are permitted provided that the following conditions
9
* are met:
10
* 1. Redistributions of source code must retain the above copyright
11
* notice, this list of conditions and the following disclaimer.
12
* 2. Redistributions in binary form must reproduce the above copyright
13
* notice, this list of conditions and the following disclaimer in the
14
* documentation and/or other materials provided with the distribution.
15
* 3. All advertising materials mentioning features or use of this software
16
* must display the following acknowledgement:
17
* This product includes software developed by the NetBSD
18
* Foundation, Inc. and its contributors.
19
* 4. Neither the name of The NetBSD Foundation nor the names of its
20
* contributors may be used to endorse or promote products derived
21
* from this software without specific prior written permission.
22
*
23
* THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
24
* ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
25
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
26
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
27
* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
28
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
29
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
30
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
31
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
32
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
33
* POSSIBILITY OF SUCH DAMAGE.
34
*/
35
36
#ifndef _h_chartype_f
37
#define _h_chartype_f
38
39
40
41
#ifdef WIDECHAR
42
43
/* Ideally we should also test the value of the define to see if it
44
* supports non-BMP code points without requiring UTF-16, but nothing
45
* seems to actually advertise this properly, despite Unicode 3.1 having
46
* been around since 2001... */
47
48
/* XXXMYSQL : Added FreeBSD & AIX to bypass this check.
49
TODO : Verify if FreeBSD & AIX stores ISO 10646 in wchar_t. */
50
#if !defined(__NetBSD__) && !defined(__sun) \
51
&& !(defined(__APPLE__) && defined(__MACH__)) \
52
&& !defined(__FreeBSD__) && !defined(_AIX)
53
#ifndef __STDC_ISO_10646__
54
/* In many places it is assumed that the first 127 code points are ASCII
55
* compatible, so ensure wchar_t indeed does ISO 10646 and not some other
56
* funky encoding that could break us in weird and wonderful ways. */
57
#error wchar_t must store ISO 10646 characters
58
#endif
59
#endif
60
61
/* Oh for a <uchar.h> with char32_t and __STDC_UTF_32__ in it...
62
* ref: ISO/IEC DTR 19769
63
*/
64
#if WCHAR_MAX < INT32_MAX
65
#warning Build environment does not support non-BMP characters
66
#endif
67
68
#ifndef HAVE_WCSDUP
69
wchar_t
*wcsdup(
const
wchar_t
*s);
70
#endif
71
72
#define ct_wctomb wctomb
73
#define ct_wctomb_reset wctomb(0,0)
74
#define ct_wcstombs wcstombs
75
#define ct_mbstowcs mbstowcs
76
77
#define Char wchar_t
78
#define Int wint_t
79
#define FUN(prefix,rest) prefix ## _w ## rest
80
#define FUNW(type) type ## _w
81
#define TYPE(type) type ## W
82
#define FSTR "%ls"
83
#define STR(x) L ## x
84
#define UC(c) c
85
#define Isalpha(x) iswalpha(x)
86
#define Isalnum(x) iswalnum(x)
87
#define Isgraph(x) iswgraph(x)
88
#define Isspace(x) iswspace(x)
89
#define Isdigit(x) iswdigit(x)
90
#define Iscntrl(x) iswcntrl(x)
91
#define Isprint(x) iswprint(x)
92
93
#define Isupper(x) iswupper(x)
94
#define Islower(x) iswlower(x)
95
#define Toupper(x) towupper(x)
96
#define Tolower(x) towlower(x)
97
98
#define IsASCII(x) (x < 0x100)
99
100
#define Strlen(x) wcslen(x)
101
#define Strchr(s,c) wcschr(s,c)
102
#define Strrchr(s,c) wcsrchr(s,c)
103
#define Strstr(s,v) wcsstr(s,v)
104
#define Strdup(x) wcsdup(x)
105
#define Strcpy(d,s) wcscpy(d,s)
106
#define Strncpy(d,s,n) wcsncpy(d,s,n)
107
#define Strncat(d,s,n) wcsncat(d,s,n)
108
109
#define Strcmp(s,v) wcscmp(s,v)
110
#define Strncmp(s,v,n) wcsncmp(s,v,n)
111
#define Strcspn(s,r) wcscspn(s,r)
112
113
#define Strtol(p,e,b) wcstol(p,e,b)
114
115
#define Width(c) wcwidth(c)
116
117
#else
/* NARROW */
118
119
#define ct_mbtowc error
120
#define ct_mbtowc_reset
121
#define ct_wctomb error
122
#define ct_wctomb_reset
123
#define ct_wcstombs(a, b, c) (strncpy(a, b, c), strlen(a))
124
#define ct_mbstowcs(a, b, c) (strncpy(a, b, c), strlen(a))
125
126
#define Char char
127
#define Int int
128
#define FUN(prefix,rest) prefix ## _ ## rest
129
#define FUNW(type) type
130
#define TYPE(type) type
131
#define FSTR "%s"
132
#define STR(x) x
133
#define UC(c) (unsigned char)(c)
134
135
#define Isalpha(x) isalpha((unsigned char)x)
136
#define Isalnum(x) isalnum((unsigned char)x)
137
#define Isgraph(x) isgraph((unsigned char)x)
138
#define Isspace(x) isspace((unsigned char)x)
139
#define Isdigit(x) isdigit((unsigned char)x)
140
#define Iscntrl(x) iscntrl((unsigned char)x)
141
#define Isprint(x) isprint((unsigned char)x)
142
143
#define Isupper(x) isupper((unsigned char)x)
144
#define Islower(x) islower((unsigned char)x)
145
#define Toupper(x) toupper((unsigned char)x)
146
#define Tolower(x) tolower((unsigned char)x)
147
148
#define IsASCII(x) isascii((unsigned char)x)
149
150
#define Strlen(x) strlen(x)
151
#define Strchr(s,c) strchr(s,c)
152
#define Strrchr(s,c) strrchr(s,c)
153
#define Strstr(s,v) strstr(s,v)
154
#define Strdup(x) strdup(x)
155
#define Strcpy(d,s) strcpy(d,s)
156
#define Strncpy(d,s,n) strncpy(d,s,n)
157
#define Strncat(d,s,n) strncat(d,s,n)
158
159
#define Strcmp(s,v) strcmp(s,v)
160
#define Strncmp(s,v,n) strncmp(s,v,n)
161
#define Strcspn(s,r) strcspn(s,r)
162
163
#define Strtol(p,e,b) strtol(p,e,b)
164
165
#define Width(c) 1
166
167
#endif
168
169
170
#ifdef WIDECHAR
171
/*
172
* Conversion buffer
173
*/
174
typedef
struct
ct_buffer_t {
175
char
*cbuff;
176
size_t
csize;
177
Char *wbuff;
178
size_t
wsize;
179
} ct_buffer_t;
180
181
#define ct_encode_string __ct_encode_string
182
/* Encode a wide-character string and return the UTF-8 encoded result. */
183
public
char
*ct_encode_string(
const
Char *, ct_buffer_t *);
184
185
#define ct_decode_string __ct_decode_string
186
/* Decode a (multi)?byte string and return the wide-character string result. */
187
public
Char *ct_decode_string(
const
char
*, ct_buffer_t *);
188
189
/* Decode a (multi)?byte argv string array.
190
* The pointer returned must be free()d when done. */
191
protected
Char **ct_decode_argv(
int
,
const
char
*[], ct_buffer_t *);
192
193
/* Resizes the conversion buffer(s) if needed. */
194
protected
void
ct_conv_buff_resize(ct_buffer_t *,
size_t
,
size_t
);
195
protected
ssize_t ct_encode_char(
char
*,
size_t
, Char, mbstate_t *);
196
protected
size_t
ct_enc_width(Char);
197
198
#define ct_free_argv(s) el_free(s)
199
200
#else
201
#define ct_encode_string(s, b) (s)
202
#define ct_decode_string(s, b) (s)
203
#define ct_decode_argv(l, s, b) (s)
204
#define ct_conv_buff_resize(b, os, ns)
205
#define ct_encode_char(d, l, s, ps) (*d = s, 1)
206
#define ct_free_argv(s)
207
#endif
208
209
#ifndef NARROWCHAR
210
/* Encode a characted into the destination buffer, provided there is sufficent
211
* buffer space available. Returns the number of bytes used up (zero if the
212
* character cannot be encoded, -1 if there was not enough space available). */
213
214
/* The maximum buffer size to hold the most unwieldly visual representation,
215
* in this case \U+nnnnn. */
216
#define VISUAL_WIDTH_MAX ((size_t)8)
217
218
/* The terminal is thought of in terms of X columns by Y lines. In the cases
219
* where a wide character takes up more than one column, the adjacent
220
* occupied column entries will contain this faux character. */
221
#define MB_FILL_CHAR ((Char)-1)
222
223
/* Visual width of character c, taking into account ^? , \0177 and \U+nnnnn
224
* style visual expansions. */
225
protected
int
ct_visual_width(Char);
226
227
/* Turn the given character into the appropriate visual format, matching
228
* the width given by ct_visual_width(). Returns the number of characters used
229
* up, or -1 if insufficient space. Buffer length is in count of Char's. */
230
protected
ssize_t ct_visual_char(Char *,
size_t
, Char);
231
232
/* Convert the given string into visual format, using the ct_visual_char()
233
* function. Uses a static buffer, so not threadsafe. */
234
protected
const
Char *ct_visual_string(
const
Char *);
235
236
237
/* printable character, use ct_visual_width() to find out display width */
238
#define CHTYPE_PRINT ( 0)
239
/* control character found inside the ASCII portion of the charset */
240
#define CHTYPE_ASCIICTL (-1)
241
/* a \t */
242
#define CHTYPE_TAB (-2)
243
/* a \n */
244
#define CHTYPE_NL (-3)
245
/* non-printable character */
246
#define CHTYPE_NONPRINT (-4)
247
/* classification of character c, as one of the above defines */
248
protected
int
ct_chr_class(Char c);
249
#endif
250
251
252
#endif
/* _chartype_f */
cmd-line-utils
libedit
chartype.h
Generated on Sat Nov 9 2013 01:24:39 for MySQL 5.6.14 Source Code Document by
1.8.1.2