// Rowley C Compiler, runtime support.
//
// Copyright (c) 2001, 2002 Rowley Associates Limited.
//
// This file may be distributed under the terms of the License Agreement
// provided with this software.
//
// THIS FILE IS PROVIDED AS IS WITH NO WARRANTY OF ANY KIND, INCLUDING THE
// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
#ifndef __CTYPE_H
#define __CTYPE_H
// Get definition for __CODE
#include "__crossworks.h"
#ifdef __cplusplus
extern "C" {
#endif
/* Internal table which classifies characters and EOF. */
extern __CODE const unsigned char __ctype[256];
#define __CTYPE_UPPER 0x01 /* upper case letter */
#define __CTYPE_LOWER 0x02 /* lower case letter */
#define __CTYPE_DIGIT 0x04 /* digit */
#define __CTYPE_SPACE 0x08 /* whitespace */
#define __CTYPE_PUNCT 0x10 /* punctuation character */
#define __CTYPE_CONTROL 0x20 /* control character */
#define __CTYPE_BLANK 0x40 /* space char */
#define __CTYPE_HEX 0x80 /* hexadecimal digit */
/* Function implementation. */
int isalpha(int __c);
int isupper(int __c);
int islower(int __c);
int isdigit(int __c);
int isxdigit(int __c);
int isspace(int __c);
int ispunct(int __c);
int isalnum(int __c);
int isprint(int __c);
int isgraph(int __c);
int iscntrl(int __c);
int toupper(int __c);
int tolower(int __c);
int isblank(int __c); /* C99 */
/* Define __CTYPE_MACROS before including this file and you'll get the
macro implementation of these functions.
*/
#ifdef __CTYPE_MACROS
/* Macro implementation. If you wish to use functions, simply #undef these
as described in the ISO standard. We take advantage of the fact that
an entry in the _ctype array for EOF, which is -1, is identical to
that for entry 255, i.e. that __ctype[(unsigned char)EOF] == _ctype[255]. */
#define isalpha(c) (__ctype[(c)+1] & (__CTYPE_UPPER | __CTYPE_LOWER))
#define isupper(c) (__ctype[(c)+1] & __CTYPE_UPPER)
#define islower(c) (__ctype[(c)+1] & __CTYPE_LOWER)
#define isdigit(c) (__ctype[(c)+1] & __CTYPE_DIGIT)
#define isxdigit(c) (__ctype[(c)+1] & __CTYPE_HEX)
#define isspace(c) (__ctype[(c)+1] & __CTYPE_SPACE)
#define ispunct(c) (__ctype[(c)+1] & __CTYPE_PUNCT)
#define isalnum(c) (__ctype[(c)+1] & (__CTYPE_UPPER | __CTYPE_LOWER | __CTYPE_DIGIT))
#define isprint(c) (__ctype[(c)+1] & (__CTYPE_BLANK | __CTYPE_PUNCT | __CTYPE_UPPER | __CTYPE_LOWER | __CTYPE_DIGIT))
#define isgraph(c) (__ctype[(c)+1] & (__CTYPE_PUNCT | __CTYPE_ALPHA | __CTYPE_DIGIT))
#define iscntrl(c) (__ctype[(c)+1] & __CTYPE_CONTROL)
#endif
#ifdef __cplusplus
}
#endif
#endif