diff --git a/include/ctype.h b/include/ctype.h index a6f44df..7f8d98d 100644 --- a/include/ctype.h +++ b/include/ctype.h @@ -8,16 +8,9 @@ extern "C" { #include int isalnum(int); -int isalpha(int); int isblank(int); int iscntrl(int); -int isdigit(int); -int isgraph(int); -int islower(int); -int isprint(int); int ispunct(int); -int isspace(int); -int isupper(int); int isxdigit(int); int tolower(int); int toupper(int); @@ -27,14 +20,40 @@ static __inline int __isspace(int _c) return _c == ' ' || (unsigned)_c-'\t' < 5; } -#define isalpha(a) ((((unsigned)(a)|32)-'a') < 26) -#define isdigit(a) (((unsigned)(a)-'0') < 10) -#define islower(a) (((unsigned)(a)-'a') < 26) -#define isupper(a) (((unsigned)(a)-'A') < 26) -#define isprint(a) (((unsigned)(a)-0x20) < 0x5f) -#define isgraph(a) (((unsigned)(a)-0x21) < 0x5e) -#define isspace(a) __isspace(a) +__inline int isalpha(int _c) +{ + return (((unsigned)_c | 32) - 'a') < 26; +} + +__inline int isdigit(int _c) +{ + return ((unsigned)_c - '0') < 10; +} +__inline int islower(int _c) +{ + return ((unsigned)_c - 'a') < 26; +} + +__inline int isupper(int _c) +{ + return ((unsigned)_c - 'A') < 26; +} + +__inline int isprint(int _c) +{ + return ((unsigned)_c - 0x20) < 0x5f; +} + +__inline int isgraph(int _c) +{ + return ((unsigned)_c - 0x21) < 0x5e; +} + +__inline int isspace(int _c) +{ + return __isspace(_c); +} #if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \ || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) \ diff --git a/include/wchar.h b/include/wchar.h index 9fd967c..3033df8 100644 --- a/include/wchar.h +++ b/include/wchar.h @@ -138,8 +138,6 @@ wint_t ungetwc (wint_t, FILE *); struct tm; size_t wcsftime (wchar_t *__restrict, size_t, const wchar_t *__restrict, const struct tm *__restrict); -#undef iswdigit - #if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \ || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE) FILE *open_wmemstream(wchar_t **, size_t *); @@ -164,7 +162,6 @@ int iswalnum(wint_t); int iswalpha(wint_t); int iswblank(wint_t); int iswcntrl(wint_t); -int iswdigit(wint_t); int iswgraph(wint_t); int iswlower(wint_t); int iswprint(wint_t); @@ -176,8 +173,15 @@ int iswctype(wint_t, wctype_t); wint_t towlower(wint_t); wint_t towupper(wint_t); wctype_t wctype(const char *); -#undef iswdigit -#define iswdigit(a) ((unsigned)(a)-'0' < 10) + +#ifndef __iswdigit_defined +#define __iswdigit_defined +__inline int iswdigit(wint_t _c) +{ + return ((unsigned)_c - L'0') < 10; +} +#endif + #endif #ifdef __cplusplus diff --git a/include/wctype.h b/include/wctype.h index 3ac24f1..3747c87 100644 --- a/include/wctype.h +++ b/include/wctype.h @@ -22,13 +22,10 @@ typedef const int * wctrans_t; #undef WEOF #define WEOF 0xffffffffU -#undef iswdigit - int iswalnum(wint_t); int iswalpha(wint_t); int iswblank(wint_t); int iswcntrl(wint_t); -int iswdigit(wint_t); int iswgraph(wint_t); int iswlower(wint_t); int iswprint(wint_t); @@ -43,8 +40,13 @@ wint_t towupper(wint_t); wctrans_t wctrans(const char *); wctype_t wctype(const char *); -#undef iswdigit -#define iswdigit(a) (((unsigned)(a)-L'0') < 10) +#ifndef __iswdigit_defined +#define __iswdigit_defined +__inline int iswdigit(wint_t _c) +{ + return ((unsigned)_c - L'0') < 10; +} +#endif #if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \ || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE) diff --git a/src/ctype/isalpha.c b/src/ctype/isalpha.c index f155d3a..b5403d6 100644 --- a/src/ctype/isalpha.c +++ b/src/ctype/isalpha.c @@ -1,11 +1,7 @@ #include #include "libc.h" -#undef isalpha -int isalpha(int c) -{ - return ((unsigned)c|32)-'a' < 26; -} +extern inline int isalpha(int); int __isalpha_l(int c, locale_t l) { diff --git a/src/ctype/isdigit.c b/src/ctype/isdigit.c index 4d8a103..b4e58d2 100644 --- a/src/ctype/isdigit.c +++ b/src/ctype/isdigit.c @@ -1,11 +1,7 @@ #include #include "libc.h" -#undef isdigit -int isdigit(int c) -{ - return (unsigned)c-'0' < 10; -} +extern inline int isdigit(int); int __isdigit_l(int c, locale_t l) { diff --git a/src/ctype/isgraph.c b/src/ctype/isgraph.c index a0aae08..b831164 100644 --- a/src/ctype/isgraph.c +++ b/src/ctype/isgraph.c @@ -1,11 +1,7 @@ #include #include "libc.h" -#undef isgraph -int isgraph(int c) -{ - return (unsigned)c-0x21 < 0x5e; -} +extern inline int isgraph(int); int __isgraph_l(int c, locale_t l) { diff --git a/src/ctype/islower.c b/src/ctype/islower.c index 0264021..3e3dde1 100644 --- a/src/ctype/islower.c +++ b/src/ctype/islower.c @@ -1,11 +1,7 @@ #include #include "libc.h" -#undef islower -int islower(int c) -{ - return (unsigned)c-'a' < 26; -} +extern inline int islower(int); int __islower_l(int c, locale_t l) { diff --git a/src/ctype/isprint.c b/src/ctype/isprint.c index 067275f..25dd9fc 100644 --- a/src/ctype/isprint.c +++ b/src/ctype/isprint.c @@ -1,11 +1,7 @@ #include #include "libc.h" -#undef isprint -int isprint(int c) -{ - return (unsigned)c-0x20 < 0x5f; -} +extern inline int isprint(int); int __isprint_l(int c, locale_t l) { diff --git a/src/ctype/isspace.c b/src/ctype/isspace.c index 231e907..86614a3 100644 --- a/src/ctype/isspace.c +++ b/src/ctype/isspace.c @@ -1,11 +1,7 @@ #include #include "libc.h" -#undef isspace -int isspace(int c) -{ - return c == ' ' || (unsigned)c-'\t' < 5; -} +extern inline int isspace(int); int __isspace_l(int c, locale_t l) { diff --git a/src/ctype/isupper.c b/src/ctype/isupper.c index 68c36f4..ef808e4 100644 --- a/src/ctype/isupper.c +++ b/src/ctype/isupper.c @@ -1,11 +1,7 @@ #include #include "libc.h" -#undef isupper -int isupper(int c) -{ - return (unsigned)c-'A' < 26; -} +extern inline int isupper(int); int __isupper_l(int c, locale_t l) { diff --git a/src/ctype/iswdigit.c b/src/ctype/iswdigit.c index ed9a88e..550d6e1 100644 --- a/src/ctype/iswdigit.c +++ b/src/ctype/iswdigit.c @@ -1,12 +1,7 @@ #include #include "libc.h" -#undef iswdigit - -int iswdigit(wint_t wc) -{ - return (unsigned)wc-'0' < 10; -} +extern inline int iswdigit(wint_t); int __iswdigit_l(wint_t c, locale_t l) {