diff options
author | DJ Delorie <dj@redhat.com> | 2003-06-22 16:35:53 +0000 |
---|---|---|
committer | DJ Delorie <dj@redhat.com> | 2003-06-22 16:35:53 +0000 |
commit | 70ecf948d924b4fdc84ba07d2f0c0ee141295ef7 (patch) | |
tree | df26823418a051e55f373a8c1c0361afc5a2d565 /libiberty/safe-ctype.c | |
parent | * tui-hooks.c: Update include order. (diff) | |
download | binutils-gdb-70ecf948d924b4fdc84ba07d2f0c0ee141295ef7.tar.gz binutils-gdb-70ecf948d924b4fdc84ba07d2f0c0ee141295ef7.tar.bz2 binutils-gdb-70ecf948d924b4fdc84ba07d2f0c0ee141295ef7.zip |
merge from gcc
Diffstat (limited to 'libiberty/safe-ctype.c')
-rw-r--r-- | libiberty/safe-ctype.c | 107 |
1 files changed, 96 insertions, 11 deletions
diff --git a/libiberty/safe-ctype.c b/libiberty/safe-ctype.c index 12d52d3bd88..91a0e9a2589 100644 --- a/libiberty/safe-ctype.c +++ b/libiberty/safe-ctype.c @@ -19,15 +19,100 @@ License along with libiberty; see the file COPYING.LIB. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ -/* This is a compatible replacement of the standard C library's <ctype.h> - with the following properties: - - - Implements all isxxx() macros required by C99. - - Also implements some character classes useful when - parsing C-like languages. - - Does not change behavior depending on the current locale. - - Behaves properly for all values in the range of a signed or - unsigned char. */ +/* + +@defvr Extension HOST_CHARSET +This macro indicates the basic character set and encoding used by the +host: more precisely, the encoding used for character constants in +preprocessor @samp{#if} statements (the C "execution character set"). +It is defined by @file{safe-ctype.h}, and will be an integer constant +with one of the following values: + +@ftable @code +@item HOST_CHARSET_UNKNOWN +The host character set is unknown - that is, not one of the next two +possibilities. + +@item HOST_CHARSET_ASCII +The host character set is ASCII. + +@item HOST_CHARSET_EBCDIC +The host character set is some variant of EBCDIC. (Only one of the +nineteen EBCDIC varying characters is tested; exercise caution.) +@end ftable +@end defvr + +@deffn Extension ISALPHA (@var{c}) +@deffnx Extension ISALNUM (@var{c}) +@deffnx Extension ISBLANK (@var{c}) +@deffnx Extension ISCNTRL (@var{c}) +@deffnx Extension ISDIGIT (@var{c}) +@deffnx Extension ISGRAPH (@var{c}) +@deffnx Extension ISLOWER (@var{c}) +@deffnx Extension ISPRINT (@var{c}) +@deffnx Extension ISPUNCT (@var{c}) +@deffnx Extension ISSPACE (@var{c}) +@deffnx Extension ISUPPER (@var{c}) +@deffnx Extension ISXDIGIT (@var{c}) + +These twelve macros are defined by @file{safe-ctype.h}. Each has the +same meaning as the corresponding macro (with name in lowercase) +defined by the standard header @file{ctype.h}. For example, +@code{ISALPHA} returns true for alphabetic characters and false for +others. However, there are two differences between these macros and +those provided by @file{ctype.h}: + +@itemize @bullet +@item These macros are guaranteed to have well-defined behavior for all +values representable by @code{signed char} and @code{unsigned char}, and +for @code{EOF}. + +@item These macros ignore the current locale; they are true for these +fixed sets of characters: +@multitable {@code{XDIGIT}} {yada yada yada yada yada yada yada yada} +@item @code{ALPHA} @tab @kbd{A-Za-z} +@item @code{ALNUM} @tab @kbd{A-Za-z0-9} +@item @code{BLANK} @tab @kbd{space tab} +@item @code{CNTRL} @tab @code{!PRINT} +@item @code{DIGIT} @tab @kbd{0-9} +@item @code{GRAPH} @tab @code{ALNUM || PUNCT} +@item @code{LOWER} @tab @kbd{a-z} +@item @code{PRINT} @tab @code{GRAPH ||} @kbd{space} +@item @code{PUNCT} @tab @kbd{`~!@@#$%^&*()_-=+[@{]@}\|;:'",<.>/?} +@item @code{SPACE} @tab @kbd{space tab \n \r \f \v} +@item @code{UPPER} @tab @kbd{A-Z} +@item @code{XDIGIT} @tab @kbd{0-9A-Fa-f} +@end multitable + +Note that, if the host character set is ASCII or a superset thereof, +all these macros will return false for all values of @code{char} outside +the range of 7-bit ASCII. In particular, both ISPRINT and ISCNTRL return +false for characters with numeric values from 128 to 255. +@end itemize +@end deffn + +@deffn Extension ISIDNUM (@var{c}) +@deffnx Extension ISIDST (@var{c}) +@deffnx Extension IS_VSPACE (@var{c}) +@deffnx Extension IS_NVSPACE (@var{c}) +@deffnx Extension IS_SPACE_OR_NUL (@var{c}) +@deffnx Extension IS_ISOBASIC (@var{c}) +These six macros are defined by @file{safe-ctype.h} and provide +additional character classes which are useful when doing lexical +analysis of C or similar languages. They are true for the following +sets of characters: + +@multitable {@code{SPACE_OR_NUL}} {yada yada yada yada yada yada yada yada} +@item @code{IDNUM} @tab @kbd{A-Za-z0-9_} +@item @code{IDST} @tab @kbd{A-Za-z_} +@item @code{VSPACE} @tab @kbd{\r \n} +@item @code{NVSPACE} @tab @kbd{space tab \f \v \0} +@item @code{SPACE_OR_NUL} @tab @code{VSPACE || NVSPACE} +@item @code{ISOBASIC} @tab @code{VSPACE || NVSPACE || PRINT} +@end multitable +@end deffn + +*/ #include "ansidecl.h" #include <safe-ctype.h> @@ -68,7 +153,7 @@ Boston, MA 02111-1307, USA. */ #define S (const unsigned short) (nv|sp|bl|pr) /* space */ /* Are we ASCII? */ -#if HOST_CHARSET == HC_ASCII +#if HOST_CHARSET == HOST_CHARSET_ASCII const unsigned short _sch_istable[256] = { @@ -161,7 +246,7 @@ const unsigned char _sch_toupper[256] = }; #else -# if HOST_CHARSET == HC_EBCDIC +# if HOST_CHARSET == HOST_CHARSET_EBCDIC #error "FIXME: write tables for EBCDIC" # else #error "Unrecognized host character set" |