8 |
|
|
9 |
Written by: Philip Hazel <ph10@cam.ac.uk> |
Written by: Philip Hazel <ph10@cam.ac.uk> |
10 |
|
|
11 |
Copyright (c) 1997-2001 University of Cambridge |
Copyright (c) 1997-2003 University of Cambridge |
12 |
|
|
13 |
----------------------------------------------------------------------------- |
----------------------------------------------------------------------------- |
14 |
Permission is granted to anyone to use this software for any purpose on any |
Permission is granted to anyone to use this software for any purpose on any |
82 |
for (i = 0; i < 256; i++) *p++ = islower(i)? toupper(i) : tolower(i); |
for (i = 0; i < 256; i++) *p++ = islower(i)? toupper(i) : tolower(i); |
83 |
|
|
84 |
/* Then the character class tables. Don't try to be clever and save effort |
/* Then the character class tables. Don't try to be clever and save effort |
85 |
on exclusive ones - in some locales things may be different. */ |
on exclusive ones - in some locales things may be different. Note that the |
86 |
|
table for "space" includes everything "isspace" gives, including VT in the |
87 |
|
default locale. This makes it work for the POSIX class [:space:]. */ |
88 |
|
|
89 |
memset(p, 0, cbit_length); |
memset(p, 0, cbit_length); |
90 |
for (i = 0; i < 256; i++) |
for (i = 0; i < 256; i++) |
114 |
} |
} |
115 |
p += cbit_length; |
p += cbit_length; |
116 |
|
|
117 |
/* Finally, the character type table */ |
/* Finally, the character type table. In this, we exclude VT from the white |
118 |
|
space chars, because Perl doesn't recognize it as such for \s and for comments |
119 |
|
within regexes. */ |
120 |
|
|
121 |
for (i = 0; i < 256; i++) |
for (i = 0; i < 256; i++) |
122 |
{ |
{ |
123 |
int x = 0; |
int x = 0; |
124 |
if (isspace(i)) x += ctype_space; |
if (i != 0x0b && isspace(i)) x += ctype_space; |
125 |
if (isalpha(i)) x += ctype_letter; |
if (isalpha(i)) x += ctype_letter; |
126 |
if (isdigit(i)) x += ctype_digit; |
if (isdigit(i)) x += ctype_digit; |
127 |
if (isxdigit(i)) x += ctype_xdigit; |
if (isxdigit(i)) x += ctype_xdigit; |