X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;f=lib%2Fmbchar.h;h=bf31027ce48964abdbd141d086d6db1c849824a6;hb=8e99d1a0adfc4eb035e73219ef7001494ecb0c50;hp=4472aa0204418623d287fb56ffeba5b6bf6a735c;hpb=ece57f1eec22076c27fcc9f524cde21a10aa2a3a;p=gnulib.git diff --git a/lib/mbchar.h b/lib/mbchar.h index 4472aa020..bf31027ce 100644 --- a/lib/mbchar.h +++ b/lib/mbchar.h @@ -1,5 +1,5 @@ /* Multibyte character data type. - Copyright (C) 2001, 2005 Free Software Foundation, Inc. + Copyright (C) 2001, 2005-2006 Free Software Foundation, Inc. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -156,7 +156,133 @@ #include #include -#include +/* BeOS 5 has the functions but no . */ +#if HAVE_WCTYPE_H +# include +#endif +/* FreeBSD 4.4 to 4.11 has but lacks the functions. + Assume all 12 functions are implemented the same way, or not at all. */ +#if !defined iswalnum && !HAVE_ISWCNTRL +static inline int +iswalnum (wint_t wc) +{ + return (wc >= 0 && wc < 128 + ? (wc >= '0' && wc <= '9') || ((wc & ~0x20) >= 'A' && (wc & ~0x20) <= 'Z') + : 0); +} +# define iswalnum iswalnum +#endif +#if !defined iswalpha && !HAVE_ISWCNTRL +static inline int +iswalpha (wint_t wc) +{ + return (wc >= 0 && wc < 128 + ? (wc & ~0x20) >= 'A' && (wc & ~0x20) <= 'Z' + : 0); +} +# define iswalpha iswalpha +#endif +#if !defined iswblank && !HAVE_ISWCNTRL +static inline int +iswblank (wint_t wc) +{ + return (wc >= 0 && wc < 128 + ? wc == ' ' || wc == '\t' + : 0); +} +# define iswblank iswblank +#endif +#if !defined iswcntrl && !HAVE_ISWCNTRL +static inline int +iswcntrl (wint_t wc) +{ + return (wc >= 0 && wc < 128 + ? (wc & ~0x1f) == 0 || wc == 0x7f + : 0); +} +# define iswcntrl iswcntrl +#endif +#if !defined iswdigit && !HAVE_ISWCNTRL +static inline int +iswdigit (wint_t wc) +{ + return (wc >= '0' && wc <= '9'); +} +# define iswdigit iswdigit +#endif +#if !defined iswgraph && !HAVE_ISWCNTRL +static inline int +iswgraph (wint_t wc) +{ + return (wc >= 0 && wc < 128 + ? wc >= '!' && wc <= '~' + : 1); +} +# define iswgraph iswgraph +#endif +#if !defined iswlower && !HAVE_ISWCNTRL +static inline int +iswlower (wint_t wc) +{ + return (wc >= 0 && wc < 128 + ? wc >= 'a' && wc <= 'z' + : 0); +} +# define iswlower iswlower +#endif +#if !defined iswprint && !HAVE_ISWCNTRL +static inline int +iswprint (wint_t wc) +{ + return (wc >= 0 && wc < 128 + ? wc >= ' ' && wc <= '~' + : 1); +} +# define iswprint iswprint +#endif +#if !defined iswpunct && !HAVE_ISWCNTRL +static inline int +iswpunct (wint_t wc) +{ + return (wc >= 0 && wc < 128 + ? wc >= '!' && wc <= '~' + && !((wc >= '0' && wc <= '9') + || ((wc & ~0x20) >= 'A' && (wc & ~0x20) <= 'Z')) + : 1); +} +# define iswpunct iswpunct +#endif +#if !defined iswspace && !HAVE_ISWCNTRL +static inline int +iswspace (wint_t wc) +{ + return (wc >= 0 && wc < 128 + ? wc == ' ' || wc == '\t' + || wc == '\n' || wc == '\v' || wc == '\f' || wc == '\r' + : 0); +} +# define iswspace iswspace +#endif +#if !defined iswupper && !HAVE_ISWCNTRL +static inline int +iswupper (wint_t wc) +{ + return (wc >= 0 && wc < 128 + ? wc >= 'A' && wc <= 'Z' + : 0); +} +# define iswupper iswupper +#endif +#if !defined iswxdigit && !HAVE_ISWCNTRL +static inline int +iswxdigit (wint_t wc) +{ + return (wc >= '0' && wc <= '9') || ((wc & ~0x20) >= 'A' && (wc & ~0x20) <= 'F'); +} +# define iswxdigit iswxdigit +#endif + +#include "wcwidth.h" #define MBCHAR_BUF_SIZE 24