~ubuntu-branches/ubuntu/vivid/diffutils/vivid

« back to all changes in this revision

Viewing changes to lib/c-ctype.h

  • Committer: Bazaar Package Importer
  • Author(s): Santiago Vila
  • Date: 2010-02-13 11:49:00 UTC
  • mfrom: (1.1.1 upstream)
  • Revision ID: james.westby@ubuntu.com-20100213114900-09lz8jx6wct52qp8
Tags: 1:2.9-1
* New upstream release, now under GPL version 3 or later.
* There is now a --tab-size option. Closes: #82923.
* Manpage for cmp describes exit status. Closes: #200614.
* Manpage for diff describes exit status. Closes: #228441, #473233.
* The file de.po is now more recent. Closes: #313686.
* Fixed bad sdiff behaviour. Closes: #320222.
* Added wdiff to Suggests. Closes: #324627.
* Fixed cmp behaviour regarding stdout and stderr. Closes: #356083.
* The file ru.po is now more recent. Closes: #409274.
* The file es.po is now more recent. Closes: #418005, #481708.
* The file nl.po is now more recent. Closes: #427370.
* Modified watch file to use http instead of ftp.
* Removed .comment section from executables.
* Added Homepage field to control file.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/* -*- buffer-read-only: t -*- vi: set ro: */
 
2
/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
 
3
#line 1
 
4
/* Character handling in C locale.
 
5
 
 
6
   These functions work like the corresponding functions in <ctype.h>,
 
7
   except that they have the C (POSIX) locale hardwired, whereas the
 
8
   <ctype.h> functions' behaviour depends on the current locale set via
 
9
   setlocale.
 
10
 
 
11
   Copyright (C) 2000-2003, 2006, 2008-2010 Free Software Foundation, Inc.
 
12
 
 
13
This program is free software; you can redistribute it and/or modify
 
14
it under the terms of the GNU General Public License as published by
 
15
the Free Software Foundation; either version 3 of the License, or
 
16
(at your option) any later version.
 
17
 
 
18
This program is distributed in the hope that it will be useful,
 
19
but WITHOUT ANY WARRANTY; without even the implied warranty of
 
20
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 
21
GNU General Public License for more details.
 
22
 
 
23
You should have received a copy of the GNU General Public License
 
24
along with this program; if not, write to the Free Software Foundation,
 
25
Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.  */
 
26
 
 
27
#ifndef C_CTYPE_H
 
28
#define C_CTYPE_H
 
29
 
 
30
#include <stdbool.h>
 
31
 
 
32
 
 
33
#ifdef __cplusplus
 
34
extern "C" {
 
35
#endif
 
36
 
 
37
 
 
38
/* The functions defined in this file assume the "C" locale and a character
 
39
   set without diacritics (ASCII-US or EBCDIC-US or something like that).
 
40
   Even if the "C" locale on a particular system is an extension of the ASCII
 
41
   character set (like on BeOS, where it is UTF-8, or on AmigaOS, where it
 
42
   is ISO-8859-1), the functions in this file recognize only the ASCII
 
43
   characters.  */
 
44
 
 
45
 
 
46
/* Check whether the ASCII optimizations apply. */
 
47
 
 
48
/* ANSI C89 (and ISO C99 5.2.1.3 too) already guarantees that
 
49
   '0', '1', ..., '9' have consecutive integer values.  */
 
50
#define C_CTYPE_CONSECUTIVE_DIGITS 1
 
51
 
 
52
#if ('A' <= 'Z') \
 
53
    && ('A' + 1 == 'B') && ('B' + 1 == 'C') && ('C' + 1 == 'D') \
 
54
    && ('D' + 1 == 'E') && ('E' + 1 == 'F') && ('F' + 1 == 'G') \
 
55
    && ('G' + 1 == 'H') && ('H' + 1 == 'I') && ('I' + 1 == 'J') \
 
56
    && ('J' + 1 == 'K') && ('K' + 1 == 'L') && ('L' + 1 == 'M') \
 
57
    && ('M' + 1 == 'N') && ('N' + 1 == 'O') && ('O' + 1 == 'P') \
 
58
    && ('P' + 1 == 'Q') && ('Q' + 1 == 'R') && ('R' + 1 == 'S') \
 
59
    && ('S' + 1 == 'T') && ('T' + 1 == 'U') && ('U' + 1 == 'V') \
 
60
    && ('V' + 1 == 'W') && ('W' + 1 == 'X') && ('X' + 1 == 'Y') \
 
61
    && ('Y' + 1 == 'Z')
 
62
#define C_CTYPE_CONSECUTIVE_UPPERCASE 1
 
63
#endif
 
64
 
 
65
#if ('a' <= 'z') \
 
66
    && ('a' + 1 == 'b') && ('b' + 1 == 'c') && ('c' + 1 == 'd') \
 
67
    && ('d' + 1 == 'e') && ('e' + 1 == 'f') && ('f' + 1 == 'g') \
 
68
    && ('g' + 1 == 'h') && ('h' + 1 == 'i') && ('i' + 1 == 'j') \
 
69
    && ('j' + 1 == 'k') && ('k' + 1 == 'l') && ('l' + 1 == 'm') \
 
70
    && ('m' + 1 == 'n') && ('n' + 1 == 'o') && ('o' + 1 == 'p') \
 
71
    && ('p' + 1 == 'q') && ('q' + 1 == 'r') && ('r' + 1 == 's') \
 
72
    && ('s' + 1 == 't') && ('t' + 1 == 'u') && ('u' + 1 == 'v') \
 
73
    && ('v' + 1 == 'w') && ('w' + 1 == 'x') && ('x' + 1 == 'y') \
 
74
    && ('y' + 1 == 'z')
 
75
#define C_CTYPE_CONSECUTIVE_LOWERCASE 1
 
76
#endif
 
77
 
 
78
#if (' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \
 
79
    && ('%' == 37) && ('&' == 38) && ('\'' == 39) && ('(' == 40) \
 
80
    && (')' == 41) && ('*' == 42) && ('+' == 43) && (',' == 44) \
 
81
    && ('-' == 45) && ('.' == 46) && ('/' == 47) && ('0' == 48) \
 
82
    && ('1' == 49) && ('2' == 50) && ('3' == 51) && ('4' == 52) \
 
83
    && ('5' == 53) && ('6' == 54) && ('7' == 55) && ('8' == 56) \
 
84
    && ('9' == 57) && (':' == 58) && (';' == 59) && ('<' == 60) \
 
85
    && ('=' == 61) && ('>' == 62) && ('?' == 63) && ('A' == 65) \
 
86
    && ('B' == 66) && ('C' == 67) && ('D' == 68) && ('E' == 69) \
 
87
    && ('F' == 70) && ('G' == 71) && ('H' == 72) && ('I' == 73) \
 
88
    && ('J' == 74) && ('K' == 75) && ('L' == 76) && ('M' == 77) \
 
89
    && ('N' == 78) && ('O' == 79) && ('P' == 80) && ('Q' == 81) \
 
90
    && ('R' == 82) && ('S' == 83) && ('T' == 84) && ('U' == 85) \
 
91
    && ('V' == 86) && ('W' == 87) && ('X' == 88) && ('Y' == 89) \
 
92
    && ('Z' == 90) && ('[' == 91) && ('\\' == 92) && (']' == 93) \
 
93
    && ('^' == 94) && ('_' == 95) && ('a' == 97) && ('b' == 98) \
 
94
    && ('c' == 99) && ('d' == 100) && ('e' == 101) && ('f' == 102) \
 
95
    && ('g' == 103) && ('h' == 104) && ('i' == 105) && ('j' == 106) \
 
96
    && ('k' == 107) && ('l' == 108) && ('m' == 109) && ('n' == 110) \
 
97
    && ('o' == 111) && ('p' == 112) && ('q' == 113) && ('r' == 114) \
 
98
    && ('s' == 115) && ('t' == 116) && ('u' == 117) && ('v' == 118) \
 
99
    && ('w' == 119) && ('x' == 120) && ('y' == 121) && ('z' == 122) \
 
100
    && ('{' == 123) && ('|' == 124) && ('}' == 125) && ('~' == 126)
 
101
/* The character set is ASCII or one of its variants or extensions, not EBCDIC.
 
102
   Testing the value of '\n' and '\r' is not relevant.  */
 
103
#define C_CTYPE_ASCII 1
 
104
#endif
 
105
 
 
106
 
 
107
/* Function declarations. */
 
108
 
 
109
/* Unlike the functions in <ctype.h>, which require an argument in the range
 
110
   of the 'unsigned char' type, the functions here operate on values that are
 
111
   in the 'unsigned char' range or in the 'char' range.  In other words,
 
112
   when you have a 'char' value, you need to cast it before using it as
 
113
   argument to a <ctype.h> function:
 
114
 
 
115
         const char *s = ...;
 
116
         if (isalpha ((unsigned char) *s)) ...
 
117
 
 
118
   but you don't need to cast it for the functions defined in this file:
 
119
 
 
120
         const char *s = ...;
 
121
         if (c_isalpha (*s)) ...
 
122
 */
 
123
 
 
124
extern bool c_isascii (int c); /* not locale dependent */
 
125
 
 
126
extern bool c_isalnum (int c);
 
127
extern bool c_isalpha (int c);
 
128
extern bool c_isblank (int c);
 
129
extern bool c_iscntrl (int c);
 
130
extern bool c_isdigit (int c);
 
131
extern bool c_islower (int c);
 
132
extern bool c_isgraph (int c);
 
133
extern bool c_isprint (int c);
 
134
extern bool c_ispunct (int c);
 
135
extern bool c_isspace (int c);
 
136
extern bool c_isupper (int c);
 
137
extern bool c_isxdigit (int c);
 
138
 
 
139
extern int c_tolower (int c);
 
140
extern int c_toupper (int c);
 
141
 
 
142
 
 
143
#if defined __GNUC__ && defined __OPTIMIZE__ && !defined __OPTIMIZE_SIZE__ && !defined NO_C_CTYPE_MACROS
 
144
 
 
145
/* ASCII optimizations. */
 
146
 
 
147
#undef c_isascii
 
148
#define c_isascii(c) \
 
149
  ({ int __c = (c); \
 
150
     (__c >= 0x00 && __c <= 0x7f); \
 
151
   })
 
152
 
 
153
#if C_CTYPE_CONSECUTIVE_DIGITS \
 
154
    && C_CTYPE_CONSECUTIVE_UPPERCASE && C_CTYPE_CONSECUTIVE_LOWERCASE
 
155
#if C_CTYPE_ASCII
 
156
#undef c_isalnum
 
157
#define c_isalnum(c) \
 
158
  ({ int __c = (c); \
 
159
     ((__c >= '0' && __c <= '9') \
 
160
      || ((__c & ~0x20) >= 'A' && (__c & ~0x20) <= 'Z')); \
 
161
   })
 
162
#else
 
163
#undef c_isalnum
 
164
#define c_isalnum(c) \
 
165
  ({ int __c = (c); \
 
166
     ((__c >= '0' && __c <= '9') \
 
167
      || (__c >= 'A' && __c <= 'Z') \
 
168
      || (__c >= 'a' && __c <= 'z')); \
 
169
   })
 
170
#endif
 
171
#endif
 
172
 
 
173
#if C_CTYPE_CONSECUTIVE_UPPERCASE && C_CTYPE_CONSECUTIVE_LOWERCASE
 
174
#if C_CTYPE_ASCII
 
175
#undef c_isalpha
 
176
#define c_isalpha(c) \
 
177
  ({ int __c = (c); \
 
178
     ((__c & ~0x20) >= 'A' && (__c & ~0x20) <= 'Z'); \
 
179
   })
 
180
#else
 
181
#undef c_isalpha
 
182
#define c_isalpha(c) \
 
183
  ({ int __c = (c); \
 
184
     ((__c >= 'A' && __c <= 'Z') || (__c >= 'a' && __c <= 'z')); \
 
185
   })
 
186
#endif
 
187
#endif
 
188
 
 
189
#undef c_isblank
 
190
#define c_isblank(c) \
 
191
  ({ int __c = (c); \
 
192
     (__c == ' ' || __c == '\t'); \
 
193
   })
 
194
 
 
195
#if C_CTYPE_ASCII
 
196
#undef c_iscntrl
 
197
#define c_iscntrl(c) \
 
198
  ({ int __c = (c); \
 
199
     ((__c & ~0x1f) == 0 || __c == 0x7f); \
 
200
   })
 
201
#endif
 
202
 
 
203
#if C_CTYPE_CONSECUTIVE_DIGITS
 
204
#undef c_isdigit
 
205
#define c_isdigit(c) \
 
206
  ({ int __c = (c); \
 
207
     (__c >= '0' && __c <= '9'); \
 
208
   })
 
209
#endif
 
210
 
 
211
#if C_CTYPE_CONSECUTIVE_LOWERCASE
 
212
#undef c_islower
 
213
#define c_islower(c) \
 
214
  ({ int __c = (c); \
 
215
     (__c >= 'a' && __c <= 'z'); \
 
216
   })
 
217
#endif
 
218
 
 
219
#if C_CTYPE_ASCII
 
220
#undef c_isgraph
 
221
#define c_isgraph(c) \
 
222
  ({ int __c = (c); \
 
223
     (__c >= '!' && __c <= '~'); \
 
224
   })
 
225
#endif
 
226
 
 
227
#if C_CTYPE_ASCII
 
228
#undef c_isprint
 
229
#define c_isprint(c) \
 
230
  ({ int __c = (c); \
 
231
     (__c >= ' ' && __c <= '~'); \
 
232
   })
 
233
#endif
 
234
 
 
235
#if C_CTYPE_ASCII
 
236
#undef c_ispunct
 
237
#define c_ispunct(c) \
 
238
  ({ int _c = (c); \
 
239
     (c_isgraph (_c) && ! c_isalnum (_c)); \
 
240
   })
 
241
#endif
 
242
 
 
243
#undef c_isspace
 
244
#define c_isspace(c) \
 
245
  ({ int __c = (c); \
 
246
     (__c == ' ' || __c == '\t' \
 
247
      || __c == '\n' || __c == '\v' || __c == '\f' || __c == '\r'); \
 
248
   })
 
249
 
 
250
#if C_CTYPE_CONSECUTIVE_UPPERCASE
 
251
#undef c_isupper
 
252
#define c_isupper(c) \
 
253
  ({ int __c = (c); \
 
254
     (__c >= 'A' && __c <= 'Z'); \
 
255
   })
 
256
#endif
 
257
 
 
258
#if C_CTYPE_CONSECUTIVE_DIGITS \
 
259
    && C_CTYPE_CONSECUTIVE_UPPERCASE && C_CTYPE_CONSECUTIVE_LOWERCASE
 
260
#if C_CTYPE_ASCII
 
261
#undef c_isxdigit
 
262
#define c_isxdigit(c) \
 
263
  ({ int __c = (c); \
 
264
     ((__c >= '0' && __c <= '9') \
 
265
      || ((__c & ~0x20) >= 'A' && (__c & ~0x20) <= 'F')); \
 
266
   })
 
267
#else
 
268
#undef c_isxdigit
 
269
#define c_isxdigit(c) \
 
270
  ({ int __c = (c); \
 
271
     ((__c >= '0' && __c <= '9') \
 
272
      || (__c >= 'A' && __c <= 'F') \
 
273
      || (__c >= 'a' && __c <= 'f')); \
 
274
   })
 
275
#endif
 
276
#endif
 
277
 
 
278
#if C_CTYPE_CONSECUTIVE_UPPERCASE && C_CTYPE_CONSECUTIVE_LOWERCASE
 
279
#undef c_tolower
 
280
#define c_tolower(c) \
 
281
  ({ int __c = (c); \
 
282
     (__c >= 'A' && __c <= 'Z' ? __c - 'A' + 'a' : __c); \
 
283
   })
 
284
#undef c_toupper
 
285
#define c_toupper(c) \
 
286
  ({ int __c = (c); \
 
287
     (__c >= 'a' && __c <= 'z' ? __c - 'a' + 'A' : __c); \
 
288
   })
 
289
#endif
 
290
 
 
291
#endif /* optimizing for speed */
 
292
 
 
293
 
 
294
#ifdef __cplusplus
 
295
}
 
296
#endif
 
297
 
 
298
#endif /* C_CTYPE_H */