source: buchla-68k/include/ctype.h@ d2d593b

Last change on this file since d2d593b was d2d593b, checked in by Thomas Lopatic <thomas@…>, 7 years ago

Added more functions to header files.

  • Property mode set to 100644
File size: 3.7 KB
Line 
1/*
2 ============================================================================
3 ctype.h -- extended character macros, ala' Unix(tm)
4 Version 8 -- 1987-06-16 -- D.N. Lynx Crowe
5
6 These macros are a superset of those provided for System 5 Unix(tm).
7
8 This set of macros will return status for characters 0x80..0xFF as
9 though they were in the range 0x00..0x7F for compatibility with
10 the equivalent Lattice C macros. This means that isascii(c) should
11 be used if it is necessary to restrict the results to true ASCII.
12
13 If SYS5CODE is TRUE these macros will use the same table definitions
14 as System 5 Unix(tm). In this case these behave well even when fed
15 an EOF. The EOF character value, -1, is not defined as being in any
16 of the classes tested for. If SYS5CODE is FALSE, the Alcyon table
17 will be used, and EOF will not work properly.
18
19 Define _CTYPE_C for compiling the ctype.c file, undefine otherwise.
20
21 The symbol _ii_ is defined to be the base of the table used.
22
23 isascii(c) non-zero if c is ASCII
24
25 isprint(c) non-zero if c is printable (including blank)
26 isgraph(c) non-zero if c is graphic (excluding blank)
27 iscntrl(c) non-zero if c is control character
28
29 isalpha(c) non-zero if c is alpha
30 isupper(c) non-zero if c is upper case
31 islower(c) non-zero if c is lower case
32
33 isdigit(c) non-zero if c is a digit (0 to 9)
34 isxdigit(c) non-zero if c is a hexadecimal digit (0 to 9, A to F, a to f)
35
36 isalnum(c) non-zero if c is alpha or digit
37
38 isspace(c) non-zero if c is white space
39 ispunct(c) non-zero if c is punctuation
40
41 iscsym(c) non-zero if valid character for C symbols
42 iscsymf(c) non-zero if valid first character for C symbols
43
44 toascii(c) returns c masked to 7 bits
45
46 _tolower(c) returns the lower case version of c
47 _toupper(c) returns the upper case version of c
48
49 tonumber(c) converts c from ASCII to integer
50 ============================================================================
51*/
52
53/*
54
55*/
56
57#define SYS5CODE 0 /* define non-zero for System 5 / Aztec C */
58
59#if SYS5CODE
60
61#define _ii_ _ctype+1
62
63/* System 5 Unix(tm) / Aztec C table definitions */
64
65#define _U 0x01 /* upper case */
66#define _L 0x02 /* lower case */
67#define _N 0x04 /* numeric 0..9 */
68#define _S 0x08 /* whitespace */
69#define _P 0x10 /* punctuation */
70#define _C 0x20 /* control 00..1F */
71#define _B 0x40 /* blank */
72#define _X 0x80 /* hex digit */
73
74#else
75
76#define _ii_ __atab
77
78/* Digital Research / Alcyon C table definitions */
79
80#define _C 0x01 /* control 00.1F */
81#define _P 0x02 /* punctuation */
82#define _N 0x04 /* numeric 0..9 */
83#define _U 0x08 /* upper case */
84#define _L 0x10 /* lower case */
85#define _S 0x20 /* whitespace */
86#define _B 0x40 /* blank */
87#define _X 0x80 /* hex digit */
88
89#endif
90
91#ifndef _CTYPE_C
92
93#if SYS5CODE
94
95extern char _ctype[]; /* character type table */
96
97#else /* SYS5CODE */
98
99extern void ___atab(void);
100extern int8_t __atab[]; /* character type table */
101
102#endif /* SYS5CODE */
103
104extern int16_t tolower(int16_t c);
105extern int16_t toupper(int16_t c);
106
107#endif /* _CTYPE_C */
108
109/*
110
111*/
112
113#define isascii(c) (!((c)&~0x7F))
114
115#define isprint(c) ((_ii_)[c]&(_P|_U|_L|_N|_B))
116#define isgraph(c) ((_ii_)[c]&(_P|_U|_L|_N))
117#define iscntrl(c) ((_ii_)[c]&_C)
118
119#define isalpha(c) ((_ii_)[c]&(_U|_L))
120#define isupper(c) ((_ii_)[c]&_U)
121#define islower(c) ((_ii_)[c]&_L)
122
123#define isdigit(c) ((_ii_)[c]&_N)
124#define isxdigit(c) ((_ii_)[c]&_X)
125
126#define isalnum(c) ((_ii_)[c]&(_U|_L|_N))
127
128#define isspace(c) ((_ii_)[c]&_S)
129#define ispunct(c) ((_ii_)[c]&_P)
130
131#define iscsym(c) (isalnum(c)||(((c)&127)==0x5F))
132#define iscsymf(c) (isalpha(c)||(((c)&127)==0x5F))
133
134#define toascii(c) ((c)&0x7F)
135
136#define _toupper(c) ((c)-'a'+'A')
137#define _tolower(c) ((c)-'A'+'a')
138
139#define tonumber(c) ((((c)&0x7F)>'9')?((islower(c)?_toupper(c):c)-'A'+10):(c&0x0F))
140
Note: See TracBrowser for help on using the repository browser.