Initial revision
[ssr] / StraySrc / Libraries / DLLLib / h / ctype
CommitLineData
2ee739cc 1#pragma force_top_level
2#pragma include_only_once
3
4/* ctype.h: ANSI 'C' (X3J11 Oct 88) library header, section 4.3 */
5/* Copyright (C) Codemist Ltd. */
6/* Copyright (C) Acorn Computers Ltd. 1991, 1992 */
7/* version 2.00 */
8
9/*
10 * ctype.h declares several functions useful for testing and mapping
11 * characters. In all cases the argument is an int, the value of which shall
12 * be representable as an unsigned char or shall equal the value of the
13 * macro EOF. If the argument has any other value, the behaviour is undefined.
14 */
15
16#ifndef __ctype_h
17#define __ctype_h
18
19/* N.B. - keep in step with <ctype.c> */
20
21#define __S 1 /* whitespace */
22#define __P 2 /* punctuation */
23#define __B 4 /* blank */
24#define __L 8 /* lower case letter */
25#define __U 16 /* upper case letter */
26#define __N 32 /* (decimal) digit */
27#define __C 64 /* control chars */
28#define __X 128 /* A-F and a-f */
29
30#ifdef __cplusplus
31 extern "C" {
32#endif
33
34#ifdef SYSTEM_STATICS
35 extern unsigned *__ctype;
36#elif defined(_DLL)
37 extern unsigned char *_dll_ctype(void);
38 #define __ctype (_dll_ctype())
39#else
40 extern unsigned char __ctype[];
41#endif
42
43#ifdef __cplusplus
44 }
45#endif
46
47#define isalnum(c) (__ctype[c] & (__U+__L+__N))
48 /* non-0 iff c is alphabetic or numeric */
49
50#define isalpha(c) (__ctype[c] & (__U+__L))
51 /* non-0 iff c is alphabetic */
52
53#define iscntrl(c) (__ctype[c] & __C)
54 /* non-0 iff c is a control character - in the ASCII locale */
55 /* this means (c < ' ') || (c > '~') */
56
57#define isdigit(c) (__ctype[c] & __N)
58 /* non-0 iff c is a decimal digit */
59
60#define isgraph(c) (__ctype[c] & (__L+__U+__N+__P))
61 /* non-0 iff c is any printing character other than ' ' */
62
63#define islower(c) (__ctype[c] & __L)
64 /* non-0 iff c is a lower-case letter */
65
66#define isprint(c) (__ctype[c] & (__L+__U+__N+__P+__B))
67 /* non-0 iff c is a printing character - in the ASCII locale */
68 /* this means 0x20 (space) -> 0x7E (tilde) */
69
70#define ispunct(c) (__ctype[c] & __P)
71 /* non-0 iff c is a non-space, non-alpha-numeric, printing character */
72
73#define isspace(c) (__ctype[c] & __S)
74 /* non-0 iff c is a white-space char: ' ', '\f', '\n', '\r', '\t', '\v'. */
75
76#define isupper(c) (__ctype[c] & __U)
77 /* non-0 iff c is an upper-case letter */
78
79#define isxdigit(c) (__ctype[c] & (__N+__X))
80 /* non-0 iff c is a digit, in 'a'..'f', or in 'A'..'F' */
81
82#ifndef __cplusplus
83extern int (isalnum)(int c);
84extern int (isalpha)(int c);
85extern int (iscntrl)(int c);
86extern int (isdigit)(int c);
87extern int (isgraph)(int c);
88extern int (islower)(int c);
89extern int (isprint)(int c);
90extern int (ispunct)(int c);
91extern int (isspace)(int c);
92extern int (isupper)(int c);
93extern int (isxdigit)(int c);
94#endif
95
96#ifdef __cplusplus
97extern "C" {
98#endif
99extern int tolower(int c);
100 /* if c is an upper-case letter then return the corresponding */
101 /* lower-case letter, otherwise return c. */
102
103extern int toupper(int c);
104 /* if c is an lower-case letter then return the corresponding */
105 /* upper-case letter, otherwise return c. */
106#ifdef __cplusplus
107}
108#endif
109
110#endif
111
112/* end of ctype.h */