Commit | Line | Data |
---|---|---|
58ade102 | 1 | /* Copyright (C) 1995,1996,1998, 2000, 2001 Free Software Foundation, Inc. |
0f2d19dd | 2 | * |
73be1d9e MV |
3 | * This library is free software; you can redistribute it and/or |
4 | * modify it under the terms of the GNU Lesser General Public | |
5 | * License as published by the Free Software Foundation; either | |
6 | * version 2.1 of the License, or (at your option) any later version. | |
0f2d19dd | 7 | * |
73be1d9e MV |
8 | * This library is distributed in the hope that it will be useful, |
9 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
11 | * Lesser General Public License for more details. | |
0f2d19dd | 12 | * |
73be1d9e MV |
13 | * You should have received a copy of the GNU Lesser General Public |
14 | * License along with this library; if not, write to the Free Software | |
15 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
16 | */ | |
1bbd0b84 | 17 | |
1bbd0b84 | 18 | |
0f2d19dd JB |
19 | \f |
20 | ||
0f2d19dd | 21 | #include <ctype.h> |
a0599745 MD |
22 | #include "libguile/_scm.h" |
23 | #include "libguile/validate.h" | |
0f2d19dd | 24 | |
a0599745 | 25 | #include "libguile/chars.h" |
0f2d19dd JB |
26 | \f |
27 | ||
a1ec6916 | 28 | SCM_DEFINE (scm_char_p, "char?", 1, 0, 0, |
1bbd0b84 | 29 | (SCM x), |
cdbc7418 | 30 | "Return @code{#t} iff @var{x} is a character, else @code{#f}.") |
1bbd0b84 | 31 | #define FUNC_NAME s_scm_char_p |
0f2d19dd | 32 | { |
7866a09b | 33 | return SCM_BOOL(SCM_CHARP(x)); |
0f2d19dd | 34 | } |
1bbd0b84 | 35 | #undef FUNC_NAME |
0f2d19dd | 36 | |
c3ee7520 | 37 | SCM_DEFINE1 (scm_char_eq_p, "char=?", scm_tc7_rpsubr, |
1bbd0b84 | 38 | (SCM x, SCM y), |
cdbc7418 | 39 | "Return @code{#t} iff @var{x} is the same character as @var{y}, else @code{#f}.") |
1bbd0b84 | 40 | #define FUNC_NAME s_scm_char_eq_p |
0f2d19dd | 41 | { |
362306b9 DH |
42 | SCM_VALIDATE_CHAR (1, x); |
43 | SCM_VALIDATE_CHAR (2, y); | |
44 | return SCM_BOOL (SCM_EQ_P (x, y)); | |
0f2d19dd | 45 | } |
1bbd0b84 | 46 | #undef FUNC_NAME |
0f2d19dd JB |
47 | |
48 | ||
c3ee7520 | 49 | SCM_DEFINE1 (scm_char_less_p, "char<?", scm_tc7_rpsubr, |
1bbd0b84 | 50 | (SCM x, SCM y), |
cdbc7418 NJ |
51 | "Return @code{#t} iff @var{x} is less than @var{y} in the ASCII sequence,\n" |
52 | "else @code{#f}.") | |
1bbd0b84 | 53 | #define FUNC_NAME s_scm_char_less_p |
0f2d19dd | 54 | { |
34d19ef6 HWN |
55 | SCM_VALIDATE_CHAR (1, x); |
56 | SCM_VALIDATE_CHAR (2, y); | |
7866a09b | 57 | return SCM_BOOL(SCM_CHAR(x) < SCM_CHAR(y)); |
0f2d19dd | 58 | } |
1bbd0b84 | 59 | #undef FUNC_NAME |
0f2d19dd | 60 | |
c3ee7520 | 61 | SCM_DEFINE1 (scm_char_leq_p, "char<=?", scm_tc7_rpsubr, |
1bbd0b84 | 62 | (SCM x, SCM y), |
cdbc7418 NJ |
63 | "Return @code{#t} iff @var{x} is less than or equal to @var{y} in the\n" |
64 | "ASCII sequence, else @code{#f}.") | |
1bbd0b84 | 65 | #define FUNC_NAME s_scm_char_leq_p |
0f2d19dd | 66 | { |
34d19ef6 HWN |
67 | SCM_VALIDATE_CHAR (1, x); |
68 | SCM_VALIDATE_CHAR (2, y); | |
7866a09b | 69 | return SCM_BOOL(SCM_CHAR(x) <= SCM_CHAR(y)); |
0f2d19dd | 70 | } |
1bbd0b84 | 71 | #undef FUNC_NAME |
0f2d19dd | 72 | |
c3ee7520 | 73 | SCM_DEFINE1 (scm_char_gr_p, "char>?", scm_tc7_rpsubr, |
1bbd0b84 | 74 | (SCM x, SCM y), |
cdbc7418 NJ |
75 | "Return @code{#t} iff @var{x} is greater than @var{y} in the ASCII\n" |
76 | "sequence, else @code{#f}.") | |
1bbd0b84 | 77 | #define FUNC_NAME s_scm_char_gr_p |
0f2d19dd | 78 | { |
34d19ef6 HWN |
79 | SCM_VALIDATE_CHAR (1, x); |
80 | SCM_VALIDATE_CHAR (2, y); | |
7866a09b | 81 | return SCM_BOOL(SCM_CHAR(x) > SCM_CHAR(y)); |
0f2d19dd | 82 | } |
1bbd0b84 | 83 | #undef FUNC_NAME |
0f2d19dd | 84 | |
c3ee7520 | 85 | SCM_DEFINE1 (scm_char_geq_p, "char>=?", scm_tc7_rpsubr, |
1bbd0b84 | 86 | (SCM x, SCM y), |
cdbc7418 NJ |
87 | "Return @code{#t} iff @var{x} is greater than or equal to @var{y} in the\n" |
88 | "ASCII sequence, else @code{#f}.") | |
1bbd0b84 | 89 | #define FUNC_NAME s_scm_char_geq_p |
0f2d19dd | 90 | { |
34d19ef6 HWN |
91 | SCM_VALIDATE_CHAR (1, x); |
92 | SCM_VALIDATE_CHAR (2, y); | |
7866a09b | 93 | return SCM_BOOL(SCM_CHAR(x) >= SCM_CHAR(y)); |
0f2d19dd | 94 | } |
1bbd0b84 | 95 | #undef FUNC_NAME |
0f2d19dd | 96 | |
c3ee7520 | 97 | SCM_DEFINE1 (scm_char_ci_eq_p, "char-ci=?", scm_tc7_rpsubr, |
1bbd0b84 | 98 | (SCM x, SCM y), |
cdbc7418 NJ |
99 | "Return @code{#t} iff @var{x} is the same character as @var{y} ignoring\n" |
100 | "case, else @code{#f}.") | |
1bbd0b84 | 101 | #define FUNC_NAME s_scm_char_ci_eq_p |
0f2d19dd | 102 | { |
34d19ef6 HWN |
103 | SCM_VALIDATE_CHAR (1, x); |
104 | SCM_VALIDATE_CHAR (2, y); | |
7866a09b | 105 | return SCM_BOOL(scm_upcase(SCM_CHAR(x))==scm_upcase(SCM_CHAR(y))); |
0f2d19dd | 106 | } |
1bbd0b84 | 107 | #undef FUNC_NAME |
0f2d19dd | 108 | |
c3ee7520 | 109 | SCM_DEFINE1 (scm_char_ci_less_p, "char-ci<?", scm_tc7_rpsubr, |
1bbd0b84 | 110 | (SCM x, SCM y), |
cdbc7418 NJ |
111 | "Return @code{#t} iff @var{x} is less than @var{y} in the ASCII sequence\n" |
112 | "ignoring case, else @code{#f}.") | |
1bbd0b84 | 113 | #define FUNC_NAME s_scm_char_ci_less_p |
0f2d19dd | 114 | { |
34d19ef6 HWN |
115 | SCM_VALIDATE_CHAR (1, x); |
116 | SCM_VALIDATE_CHAR (2, y); | |
7866a09b | 117 | return SCM_BOOL((scm_upcase(SCM_CHAR(x))) < scm_upcase(SCM_CHAR(y))); |
0f2d19dd | 118 | } |
1bbd0b84 | 119 | #undef FUNC_NAME |
0f2d19dd | 120 | |
c3ee7520 | 121 | SCM_DEFINE1 (scm_char_ci_leq_p, "char-ci<=?", scm_tc7_rpsubr, |
1bbd0b84 | 122 | (SCM x, SCM y), |
cdbc7418 NJ |
123 | "Return @code{#t} iff @var{x} is less than or equal to @var{y} in the\n" |
124 | "ASCII sequence ignoring case, else @code{#f}.") | |
1bbd0b84 | 125 | #define FUNC_NAME s_scm_char_ci_leq_p |
0f2d19dd | 126 | { |
34d19ef6 HWN |
127 | SCM_VALIDATE_CHAR (1, x); |
128 | SCM_VALIDATE_CHAR (2, y); | |
7866a09b | 129 | return SCM_BOOL(scm_upcase(SCM_CHAR(x)) <= scm_upcase(SCM_CHAR(y))); |
0f2d19dd | 130 | } |
1bbd0b84 | 131 | #undef FUNC_NAME |
0f2d19dd | 132 | |
c3ee7520 | 133 | SCM_DEFINE1 (scm_char_ci_gr_p, "char-ci>?", scm_tc7_rpsubr, |
1bbd0b84 | 134 | (SCM x, SCM y), |
cdbc7418 NJ |
135 | "Return @code{#t} iff @var{x} is greater than @var{y} in the ASCII\n" |
136 | "sequence ignoring case, else @code{#f}.") | |
1bbd0b84 | 137 | #define FUNC_NAME s_scm_char_ci_gr_p |
0f2d19dd | 138 | { |
34d19ef6 HWN |
139 | SCM_VALIDATE_CHAR (1, x); |
140 | SCM_VALIDATE_CHAR (2, y); | |
7866a09b | 141 | return SCM_BOOL(scm_upcase(SCM_CHAR(x)) > scm_upcase(SCM_CHAR(y))); |
0f2d19dd | 142 | } |
1bbd0b84 | 143 | #undef FUNC_NAME |
0f2d19dd | 144 | |
c3ee7520 | 145 | SCM_DEFINE1 (scm_char_ci_geq_p, "char-ci>=?", scm_tc7_rpsubr, |
1bbd0b84 | 146 | (SCM x, SCM y), |
cdbc7418 NJ |
147 | "Return @code{#t} iff @var{x} is greater than or equal to @var{y} in the\n" |
148 | "ASCII sequence ignoring case, else @code{#f}.") | |
1bbd0b84 | 149 | #define FUNC_NAME s_scm_char_ci_geq_p |
0f2d19dd | 150 | { |
34d19ef6 HWN |
151 | SCM_VALIDATE_CHAR (1, x); |
152 | SCM_VALIDATE_CHAR (2, y); | |
7866a09b | 153 | return SCM_BOOL(scm_upcase(SCM_CHAR(x)) >= scm_upcase(SCM_CHAR(y))); |
0f2d19dd | 154 | } |
1bbd0b84 | 155 | #undef FUNC_NAME |
0f2d19dd JB |
156 | |
157 | ||
3b3b36dd | 158 | SCM_DEFINE (scm_char_alphabetic_p, "char-alphabetic?", 1, 0, 0, |
1bbd0b84 | 159 | (SCM chr), |
cdbc7418 | 160 | "Return @code{#t} iff @var{chr} is alphabetic, else @code{#f}.\n" |
b380b885 | 161 | "Alphabetic means the same thing as the isalpha C library function.") |
1bbd0b84 | 162 | #define FUNC_NAME s_scm_char_alphabetic_p |
0f2d19dd | 163 | { |
34d19ef6 | 164 | SCM_VALIDATE_CHAR (1, chr); |
ccbd262b | 165 | return SCM_BOOL(isalpha(SCM_CHAR(chr))); |
0f2d19dd | 166 | } |
1bbd0b84 | 167 | #undef FUNC_NAME |
0f2d19dd | 168 | |
3b3b36dd | 169 | SCM_DEFINE (scm_char_numeric_p, "char-numeric?", 1, 0, 0, |
1bbd0b84 | 170 | (SCM chr), |
cdbc7418 | 171 | "Return @code{#t} iff @var{chr} is numeric, else @code{#f}.\n" |
b380b885 | 172 | "Numeric means the same thing as the isdigit C library function.") |
1bbd0b84 | 173 | #define FUNC_NAME s_scm_char_numeric_p |
0f2d19dd | 174 | { |
34d19ef6 | 175 | SCM_VALIDATE_CHAR (1, chr); |
ccbd262b | 176 | return SCM_BOOL(isdigit(SCM_CHAR(chr))); |
0f2d19dd | 177 | } |
1bbd0b84 | 178 | #undef FUNC_NAME |
0f2d19dd | 179 | |
3b3b36dd | 180 | SCM_DEFINE (scm_char_whitespace_p, "char-whitespace?", 1, 0, 0, |
1bbd0b84 | 181 | (SCM chr), |
cdbc7418 | 182 | "Return @code{#t} iff @var{chr} is whitespace, else @code{#f}.\n" |
b380b885 | 183 | "Whitespace means the same thing as the isspace C library function.") |
1bbd0b84 | 184 | #define FUNC_NAME s_scm_char_whitespace_p |
0f2d19dd | 185 | { |
34d19ef6 | 186 | SCM_VALIDATE_CHAR (1, chr); |
ccbd262b | 187 | return SCM_BOOL(isspace(SCM_CHAR(chr))); |
0f2d19dd | 188 | } |
1bbd0b84 | 189 | #undef FUNC_NAME |
0f2d19dd JB |
190 | |
191 | ||
192 | ||
3b3b36dd | 193 | SCM_DEFINE (scm_char_upper_case_p, "char-upper-case?", 1, 0, 0, |
1bbd0b84 | 194 | (SCM chr), |
cdbc7418 | 195 | "Return @code{#t} iff @var{chr} is uppercase, else @code{#f}.\n" |
b380b885 | 196 | "Uppercase means the same thing as the isupper C library function.") |
1bbd0b84 | 197 | #define FUNC_NAME s_scm_char_upper_case_p |
0f2d19dd | 198 | { |
34d19ef6 | 199 | SCM_VALIDATE_CHAR (1, chr); |
ccbd262b | 200 | return SCM_BOOL(isupper(SCM_CHAR(chr))); |
0f2d19dd | 201 | } |
1bbd0b84 | 202 | #undef FUNC_NAME |
0f2d19dd JB |
203 | |
204 | ||
3b3b36dd | 205 | SCM_DEFINE (scm_char_lower_case_p, "char-lower-case?", 1, 0, 0, |
1bbd0b84 | 206 | (SCM chr), |
cdbc7418 | 207 | "Return @code{#t} iff @var{chr} is lowercase, else @code{#f}.\n" |
b380b885 | 208 | "Lowercase means the same thing as the islower C library function.") |
1bbd0b84 | 209 | #define FUNC_NAME s_scm_char_lower_case_p |
0f2d19dd | 210 | { |
34d19ef6 | 211 | SCM_VALIDATE_CHAR (1, chr); |
ccbd262b | 212 | return SCM_BOOL(islower(SCM_CHAR(chr))); |
0f2d19dd | 213 | } |
1bbd0b84 | 214 | #undef FUNC_NAME |
0f2d19dd JB |
215 | |
216 | ||
217 | ||
a1ec6916 | 218 | SCM_DEFINE (scm_char_is_both_p, "char-is-both?", 1, 0, 0, |
1bbd0b84 | 219 | (SCM chr), |
cdbc7418 | 220 | "Return @code{#t} iff @var{chr} is either uppercase or lowercase, else @code{#f}.\n" |
b380b885 MD |
221 | "Uppercase and lowercase are as defined by the isupper and islower\n" |
222 | "C library functions.") | |
1bbd0b84 | 223 | #define FUNC_NAME s_scm_char_is_both_p |
0f2d19dd | 224 | { |
34d19ef6 | 225 | SCM_VALIDATE_CHAR (1, chr); |
ccbd262b | 226 | return SCM_BOOL((isupper(SCM_CHAR(chr)) || islower(SCM_CHAR(chr)))); |
0f2d19dd | 227 | } |
1bbd0b84 | 228 | #undef FUNC_NAME |
0f2d19dd JB |
229 | |
230 | ||
231 | ||
232 | ||
a1ec6916 | 233 | SCM_DEFINE (scm_char_to_integer, "char->integer", 1, 0, 0, |
1bbd0b84 | 234 | (SCM chr), |
cdbc7418 NJ |
235 | "Return the number corresponding to ordinal position of @var{chr} in the\n" |
236 | "ASCII sequence.") | |
1bbd0b84 | 237 | #define FUNC_NAME s_scm_char_to_integer |
0f2d19dd | 238 | { |
34d19ef6 | 239 | SCM_VALIDATE_CHAR (1, chr); |
7866a09b | 240 | return scm_ulong2num((unsigned long)SCM_CHAR(chr)); |
0f2d19dd | 241 | } |
1bbd0b84 | 242 | #undef FUNC_NAME |
0f2d19dd JB |
243 | |
244 | ||
245 | ||
3b3b36dd | 246 | SCM_DEFINE (scm_integer_to_char, "integer->char", 1, 0, 0, |
1bbd0b84 | 247 | (SCM n), |
cdbc7418 | 248 | "Return the character at position @var{n} in the ASCII sequence.") |
1bbd0b84 | 249 | #define FUNC_NAME s_scm_integer_to_char |
0f2d19dd | 250 | { |
90e49489 | 251 | SCM_VALIDATE_INUM_RANGE (1, n, 0, 256); |
7866a09b | 252 | return SCM_MAKE_CHAR (SCM_INUM (n)); |
0f2d19dd | 253 | } |
1bbd0b84 | 254 | #undef FUNC_NAME |
0f2d19dd JB |
255 | |
256 | ||
3b3b36dd | 257 | SCM_DEFINE (scm_char_upcase, "char-upcase", 1, 0, 0, |
1bbd0b84 | 258 | (SCM chr), |
cdbc7418 | 259 | "Return the uppercase character version of @var{chr}.") |
1bbd0b84 | 260 | #define FUNC_NAME s_scm_char_upcase |
0f2d19dd | 261 | { |
34d19ef6 | 262 | SCM_VALIDATE_CHAR (1, chr); |
7866a09b | 263 | return SCM_MAKE_CHAR(scm_upcase(SCM_CHAR(chr))); |
0f2d19dd | 264 | } |
1bbd0b84 | 265 | #undef FUNC_NAME |
0f2d19dd JB |
266 | |
267 | ||
3b3b36dd | 268 | SCM_DEFINE (scm_char_downcase, "char-downcase", 1, 0, 0, |
1bbd0b84 | 269 | (SCM chr), |
cdbc7418 | 270 | "Return the lowercase character version of @var{chr}.") |
1bbd0b84 | 271 | #define FUNC_NAME s_scm_char_downcase |
0f2d19dd | 272 | { |
34d19ef6 | 273 | SCM_VALIDATE_CHAR (1, chr); |
7866a09b | 274 | return SCM_MAKE_CHAR(scm_downcase(SCM_CHAR(chr))); |
0f2d19dd | 275 | } |
1bbd0b84 | 276 | #undef FUNC_NAME |
0f2d19dd JB |
277 | |
278 | \f | |
279 | ||
280 | ||
281 | ||
e2806c10 MD |
282 | static unsigned char scm_upcase_table[SCM_CHAR_CODE_LIMIT]; |
283 | static unsigned char scm_downcase_table[SCM_CHAR_CODE_LIMIT]; | |
57e3a543 JB |
284 | static const unsigned char scm_lowers[] = "abcdefghijklmnopqrstuvwxyz"; |
285 | static const unsigned char scm_uppers[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; | |
0f2d19dd | 286 | |
1cc91f1b | 287 | |
0f2d19dd JB |
288 | void |
289 | scm_tables_prehistory () | |
0f2d19dd JB |
290 | { |
291 | int i; | |
e2806c10 | 292 | for (i = 0; i < SCM_CHAR_CODE_LIMIT; i++) |
0f2d19dd | 293 | scm_upcase_table[i] = scm_downcase_table[i] = i; |
77364130 | 294 | for (i = 0; i < (int) (sizeof scm_lowers / sizeof (scm_lowers[0])); i++) |
0f2d19dd JB |
295 | { |
296 | scm_upcase_table[scm_lowers[i]] = scm_uppers[i]; | |
297 | scm_downcase_table[scm_uppers[i]] = scm_lowers[i]; | |
298 | } | |
299 | } | |
300 | ||
1cc91f1b | 301 | |
0f2d19dd | 302 | int |
6e8d25a6 | 303 | scm_upcase (unsigned int c) |
0f2d19dd JB |
304 | { |
305 | if (c < sizeof (scm_upcase_table)) | |
306 | return scm_upcase_table[c]; | |
307 | else | |
308 | return c; | |
309 | } | |
310 | ||
1cc91f1b | 311 | |
0f2d19dd | 312 | int |
6e8d25a6 | 313 | scm_downcase (unsigned int c) |
0f2d19dd JB |
314 | { |
315 | if (c < sizeof (scm_downcase_table)) | |
316 | return scm_downcase_table[c]; | |
317 | else | |
318 | return c; | |
319 | } | |
320 | ||
321 | ||
322 | #ifdef _DCC | |
323 | # define ASCII | |
324 | #else | |
325 | # if (('\n'=='\025') && (' '=='\100') && ('a'=='\201') && ('A'=='\301')) | |
326 | # define EBCDIC | |
327 | # endif /* (('\n'=='\025') && (' '=='\100') && ('a'=='\201') && ('A'=='\301')) */ | |
328 | # if (('\n'=='\012') && (' '=='\040') && ('a'=='\141') && ('A'=='\101')) | |
329 | # define ASCII | |
330 | # endif /* (('\n'=='\012') && (' '=='\040') && ('a'=='\141') && ('A'=='\101')) */ | |
331 | #endif /* def _DCC */ | |
332 | ||
333 | ||
334 | #ifdef EBCDIC | |
57e3a543 | 335 | char *const scm_charnames[] = |
0f2d19dd | 336 | { |
34d19ef6 HWN |
337 | "nul", "soh", "stx", "etx", "pf", "ht", "lc", "del", |
338 | 0 , 0 , "smm", "vt", "ff", "cr", "so", "si", | |
339 | "dle", "dc1", "dc2", "dc3", "res", "nl", "bs", "il", | |
340 | "can", "em", "cc", 0 , "ifs", "igs", "irs", "ius", | |
341 | "ds", "sos", "fs", 0 , "byp", "lf", "eob", "pre", | |
342 | 0 , 0 , "sm", 0 , 0 , "enq", "ack", "bel", | |
343 | 0 , 0 , "syn", 0 , "pn", "rs", "uc", "eot", | |
344 | 0 , 0 , 0 , 0 , "dc4", "nak", 0 , "sub", | |
0f2d19dd JB |
345 | "space", scm_s_newline, "tab", "backspace", "return", "page", "null"}; |
346 | ||
57e3a543 | 347 | const char scm_charnums[] = |
0f2d19dd JB |
348 | "\000\001\002\003\004\005\006\007\ |
349 | \010\011\012\013\014\015\016\017\ | |
350 | \020\021\022\023\024\025\026\027\ | |
351 | \030\031\032\033\034\035\036\037\ | |
352 | \040\041\042\043\044\045\046\047\ | |
353 | \050\051\052\053\054\055\056\057\ | |
354 | \060\061\062\063\064\065\066\067\ | |
355 | \070\071\072\073\074\075\076\077\ | |
356 | \n\t\b\r\f\0"; | |
357 | #endif /* def EBCDIC */ | |
358 | #ifdef ASCII | |
57e3a543 | 359 | char *const scm_charnames[] = |
0f2d19dd JB |
360 | { |
361 | "nul","soh","stx","etx","eot","enq","ack","bel", | |
35fd4394 | 362 | "bs", "ht", "newline", "vt", "np", "cr", "so", "si", |
0f2d19dd JB |
363 | "dle","dc1","dc2","dc3","dc4","nak","syn","etb", |
364 | "can", "em","sub","esc", "fs", "gs", "rs", "us", | |
35fd4394 | 365 | "space", "nl", "tab", "backspace", "return", "page", "null", "del"}; |
57e3a543 | 366 | const char scm_charnums[] = |
0f2d19dd JB |
367 | "\000\001\002\003\004\005\006\007\ |
368 | \010\011\012\013\014\015\016\017\ | |
369 | \020\021\022\023\024\025\026\027\ | |
370 | \030\031\032\033\034\035\036\037\ | |
371 | \n\t\b\r\f\0\177"; | |
372 | #endif /* def ASCII */ | |
373 | ||
374 | int scm_n_charnames = sizeof (scm_charnames) / sizeof (char *); | |
375 | ||
376 | ||
377 | \f | |
378 | ||
1cc91f1b | 379 | |
0f2d19dd JB |
380 | void |
381 | scm_init_chars () | |
0f2d19dd | 382 | { |
a0599745 | 383 | #include "libguile/chars.x" |
0f2d19dd JB |
384 | } |
385 | ||
89e00824 ML |
386 | |
387 | /* | |
388 | Local Variables: | |
389 | c-file-style: "gnu" | |
390 | End: | |
391 | */ |