/**************************************************************************
*   CTYPE.H  -  macros to classify ASCII-coded integers by table lookup.
*
*
*	Note:	Integer args are undefined for all int values > 127,
*		except for macro 'isascii()'.
*	Assumes:
*		User will link with standard library functions.
*		Compiler can handle declarator initializers and
*		'#defines' with parameters.
***************************************************************************/

/* Define bit patterns for character classes */
#define __c    01
#define __p    02
#define __d    04
#define __u   010
#define __l   020
#define __s   040
#define __cs  041
#define __ps  042

#ifndef CTYPE	
extern char __atab[];
#endif

#define isascii(ch) ((ch) < 0200)
#define isalpha(ch) (__atab[ch] & (__u | __l))
#define isupper(ch) (__atab[ch] & __u)
#define islower(ch) (__atab[ch] & __l)
#define isdigit(ch) (__atab[ch] & __d)
#define isalnum(ch) (__atab[ch] & (__u | __l | __d))
#define isspace(ch) (__atab[ch] & __s)
#define ispunct(ch) (__atab[ch] & __p)
#define isprint(ch) (__atab[ch] & (__u | __l | __d | __p))
#define iscntrl(ch) (__atab[ch] & __c)
#define tolower(ch) (isupper(ch) ? (ch)-'A'+'a' : (ch) )
#define toupper(ch) (islower(ch) ? (ch)-'a'+'A' : (ch) )
#define toascii(ch) ((ch) & 0177)
