/***************************************************************************
 * This program is Copyright (C) 1986, 1987, 1988 by Jonathan Payne.  JOVE *
 * is provided to you without charge, and with no warranty.  You may give  *
 * away copies of JOVE, including sources, provided that this notice is    *
 * included in all the files.                                              *
 ***************************************************************************/

/* The code in this file was snarfed from ctype.h and modified for JOVE. */

#define	_U	01
#define	_L	02
#define	_N	04
#define _P	010
#define _C	020
#define _W	040
#define _Op	0100
#define _Cl	0200

extern int	SyntaxTable;
#define iswhite(c)	(isspace(c))
#define isword(c)	((CharTable[SyntaxTable])[c]&(_W))
#define	isalpha(c)	((CharTable[SyntaxTable])[c]&(_U|_L))
#define	isupper(c)	((CharTable[SyntaxTable])[c]&_U)
#define	islower(c)	((CharTable[SyntaxTable])[c]&_L)
#define	isdigit(c)	((CharTable[SyntaxTable])[c]&_N)
#define	isspace(c)	(c == ' ' || c == '\t')
#define ispunct(c)	((CharTable[SyntaxTable])[c]&_P)


#define toascii(c)	((c)&CHARMASK)
#define isctrl(c)	((CharTable[0][c&CHARMASK])&_C)
#define isopenp(c)	((CharTable[0][c&CHARMASK])&_Op)
#define isclosep(c)	((CharTable[0][c&CHARMASK])&_Cl)
#define has_syntax(c,s)	((CharTable[SyntaxTable][c&CHARMASK])&s)

#ifdef ASCII
#define toupper(c)	((c)&~040)
#define tolower(c)	((c)|040)
#else /* IBMPC or MAC */
#define toupper(c)	(CaseEquiv[c])
/* #define tolower(c)	((c)|040)	*/
#endif /* IBMPC */

#define WITH_TABLE(x) \
{ \
	int	push = SyntaxTable; \
	SyntaxTable = x;

#define END_TABLE() \
	SyntaxTable = push; \
}
