diff options
author | Marcus Huderle <huderlem@gmail.com> | 2017-12-27 16:22:00 -0600 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-12-27 16:22:00 -0600 |
commit | 6b611a3046a694d3972f2aa4df90d3ef78801217 (patch) | |
tree | 05f295c00cbbc1d5987a05da37e746fb841d4d83 /libc/include/ctype.h | |
parent | 58c860d6c48324eba66dd19540db5584d832cf58 (diff) | |
parent | d88495e3f4061a411e654c7307aa94ac8a98c94b (diff) |
Merge pull request #13 from ProjectRevoTPP/libc
add libc building to agbcc.
Diffstat (limited to 'libc/include/ctype.h')
-rw-r--r-- | libc/include/ctype.h | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/libc/include/ctype.h b/libc/include/ctype.h new file mode 100644 index 0000000..224b703 --- /dev/null +++ b/libc/include/ctype.h @@ -0,0 +1,73 @@ +#ifndef _CTYPE_H_ +#ifdef __cplusplus +extern "C" { +#endif +#define _CTYPE_H_ + +#include "_ansi.h" + +int _EXFUN(isalnum, (int __c)); +int _EXFUN(isalpha, (int __c)); +int _EXFUN(iscntrl, (int __c)); +int _EXFUN(isdigit, (int __c)); +int _EXFUN(isgraph, (int __c)); +int _EXFUN(islower, (int __c)); +int _EXFUN(isprint, (int __c)); +int _EXFUN(ispunct, (int __c)); +int _EXFUN(isspace, (int __c)); +int _EXFUN(isupper, (int __c)); +int _EXFUN(isxdigit,(int __c)); +int _EXFUN(tolower, (int __c)); +int _EXFUN(toupper, (int __c)); + +#ifndef __STRICT_ANSI__ +int _EXFUN(isascii, (int __c)); +int _EXFUN(toascii, (int __c)); +int _EXFUN(_tolower, (int __c)); +int _EXFUN(_toupper, (int __c)); +#endif + +#define _U 01 +#define _L 02 +#define _N 04 +#define _S 010 +#define _P 020 +#define _C 040 +#define _X 0100 +#define _B 0200 + +#if !defined(__CYGWIN32__) || defined(__INSIDE_CYGWIN__) || defined(_COMPILING_NEWLIB) +extern _CONST char _ctype_[]; +#else +extern _CONST char _ctype_[] __declspec(dllimport); +#endif + +#define isalpha(c) ((_ctype_+1)[(unsigned)(c)]&(_U|_L)) +#define isupper(c) ((_ctype_+1)[(unsigned)(c)]&_U) +#define islower(c) ((_ctype_+1)[(unsigned)(c)]&_L) +#define isdigit(c) ((_ctype_+1)[(unsigned)(c)]&_N) +#define isxdigit(c) ((_ctype_+1)[(unsigned)(c)]&(_X|_N)) +#define isspace(c) ((_ctype_+1)[(unsigned)(c)]&_S) +#define ispunct(c) ((_ctype_+1)[(unsigned)(c)]&_P) +#define isalnum(c) ((_ctype_+1)[(unsigned)(c)]&(_U|_L|_N)) +#define isprint(c) ((_ctype_+1)[(unsigned)(c)]&(_P|_U|_L|_N|_B)) +#define isgraph(c) ((_ctype_+1)[(unsigned)(c)]&(_P|_U|_L|_N)) +#define iscntrl(c) ((_ctype_+1)[(unsigned)(c)]&_C) +/* Non-gcc versions will get the library versions, and will be + slightly slower */ +#ifdef __GNUC__ +# define toupper(c) \ + ({ int __x = (c); islower(__x) ? (__x - 'a' + 'A') : __x;}) +# define tolower(c) \ + ({ int __x = (c); isupper(__x) ? (__x - 'A' + 'a') : __x;}) +#endif + +#ifndef __STRICT_ANSI__ +#define isascii(c) ((unsigned)(c)<=0177) +#define toascii(c) ((c)&0177) +#endif + +#ifdef __cplusplus +} +#endif +#endif /* _CTYPE_H_ */ |