download c-ctype.h
Language: C
License: GPL
Copyright: (C) 2000-2003, 2006 Free Software Foundation, Inc.
LOC: 207
Project Info
gnulib - portability library(gnulib)
Server: Savannah GNU
Type: cvs
...g\gnulib\gnulib\gnulib\lib\
   .cppi-disable
   .cvsignore
   __fpending.c
   __fpending.h
   acl-internal.h
   acl.c
   acl.h
   acl_entries.c
   acosl.c
   alloca.c
   alloca_.h
   arcfour.c
   arcfour.h
   arctwo.c
   arctwo.h
   areadlink-with-size.c
   areadlink.h
   argmatch.c
   argmatch.h
   argp-ba.c
   argp-eexst.c
   argp-fmtstream.c
   argp-fmtstream.h
   argp-fs-xinl.c
   argp-help.c
   argp-namefrob.h
   argp-parse.c
   argp-pin.c
   argp-pv.c
   argp-pvh.c
   argp-xinl.c
   argp.h
   argz.c
   argz_.h
   asinl.c
   asnprintf.c
   asprintf.c
   at-func.c
   atanl.c
   atexit.c
   backupfile.c
   backupfile.h
   base64.c
   base64.h
   basename.c
   bcopy.c
   binary-io.h
   byteswap_.h
   c-ctype.c
   c-ctype.h
   c-stack.c
   c-stack.h
   c-strcase.h
   c-strcasecmp.c
   c-strcaseeq.h
   c-strcasestr.c
   c-strcasestr.h
   c-strncasecmp.c
   c-strstr.c
   c-strstr.h
   c-strtod.c
   c-strtod.h
   c-strtold.c
   calloc.c
   canon-host.c
   canon-host.h
   canonicalize-lgpl.c
   canonicalize.c
   canonicalize.h
   ceill.c
   chdir-long.c
   chdir-long.h
   chdir-safer.c
   chdir-safer.h
   check-version.c
   check-version.h
   chown.c
   classpath.c
   classpath.h
   clean-temp.c
   clean-temp.h
   cloexec.c
   cloexec.h
   close-stream.c
   close-stream.h
   closein.c
   closein.h
   closeout.c
   closeout.h
   concat-filename.c
   config.charset
   copy-file.c
   copy-file.h
   cosl.c
   count-one-bits.h
   crc.c
   crc.h
   creat-safer.c
   csharpcomp.c
   csharpcomp.h
   csharpexec.c
   csharpexec.h
   cycle-check.c
   cycle-check.h
   des.c
   des.h
   dev-ino.h
   diacrit.c
   diacrit.h
   diffseq.h
   dirchownmod.c
   dirchownmod.h
   dirent_.h
   dirfd.c
   dirfd.h
   dirname.c
   dirname.h
   dummy.c
   dup-safer.c
   dup2.c
   eealloc.h
   error.c
   error.h
   euidaccess.c
   euidaccess.h
   exclude.c
   exclude.h
   execute.c
   execute.h
   exitfail.c
   exitfail.h
   expl.c
   fatal-signal.c
   fatal-signal.h
   fbufmode.c
   fbufmode.h
   fchdir.c
   fchmodat.c
   fchown-stub.c
   fchownat.c
   fcntl--.h
   fcntl-safer.h
   fcntl_.h
   fd-safer.c
   fflush.c
   file-has-acl.c
   file-type.c
   file-type.h
   fileblocks.c
   filemode.c
   filemode.h
   filename.h
   filenamecat.c
   filenamecat.h
   findprog.c
   findprog.h
   float+.h
   float_.h
   floorl.c
   fnmatch.c
   fnmatch_.h
   fnmatch_loop.c
   fopen-safer.c
   fprintf.c
   fprintftime.c
   fprintftime.h
   fpucw.h
   fpurge.c
   fpurge.h
   freadable.c
   freadable.h
   freadahead.c
   freadahead.h
   freading.c
   freading.h
   free.c
   frexp.c
   frexpl.c
   fseek.c
   fseeko.c
   fseterr.c
   fseterr.h
   fstatat.c
   fstrcmp.c
   fstrcmp.h
   fsusage.c
   fsusage.h
   ftell.c
   ftello.c
   ftruncate.c
   fts-cycle.c
   fts.c
   fts_.h
   full-read.c
   full-read.h
   full-write.c
   full-write.h
   fwritable.c
   fwritable.h
   fwriteerror.c
   fwriteerror.h
   fwriting.c
   fwriting.h
   gai_strerror.c
   gc-gnulib.c
   gc-libgcrypt.c
   gc-pbkdf2-sha1.c
   gc.h
   gcd.c
   gcd.h
   getaddrinfo.c
   getaddrinfo.h
   getcwd.c
   getdate.h
   getdate.y
   getdelim.c
   getdomainname.c
   getdomainname.h
   getgroups.c
   gethostname.c
   gethrxtime.c
   gethrxtime.h
   getline.c
   getloadavg.c
   getlogin_r.c
   getndelim2.c
   getndelim2.h
   getnline.c
   getnline.h
   getopt.c
   getopt_.h
   getopt_int.h
   getopt1.c
   getpagesize.h
   getpass.c
   getpass.h
   getsubopt.c
   gettext.h
   gettime.c
   gettimeofday.c
   getugroups.c
   getugroups.h
   getusershell.c
   gl_anyavltree_list1.h
   gl_anyavltree_list2.h
   gl_anyhash_list1.h
   gl_anyhash_list2.h
   gl_anylinked_list1.h
   gl_anylinked_list2.h
   gl_anyrbtree_list1.h
   gl_anyrbtree_list2.h
   gl_anytree_list1.h
   gl_anytree_list2.h
   gl_anytree_oset.h
   gl_anytreehash_list1.h
   gl_anytreehash_list2.h
   gl_array_list.c
   gl_array_list.h
   gl_array_oset.c
   gl_array_oset.h
   gl_avltree_list.c
   gl_avltree_list.h
   gl_avltree_oset.c
   gl_avltree_oset.h
   gl_avltreehash_list.c
   gl_avltreehash_list.h
   gl_carray_list.c
   gl_carray_list.h
   gl_linked_list.c
   gl_linked_list.h
   gl_linkedhash_list.c
   gl_linkedhash_list.h
   gl_list.c
   gl_list.h
   gl_oset.c
   gl_oset.h
   gl_rbtree_list.c
   gl_rbtree_list.h
   gl_rbtree_oset.c
   gl_rbtree_oset.h
   gl_rbtreehash_list.c
   gl_rbtreehash_list.h
   gl_sublist.c
   gl_sublist.h
   glob-libc.h
   glob.c
   glob_.h
   group-member.c
   group-member.h
   hard-locale.c
   hard-locale.h
   hash-pjw.c
   hash-pjw.h
   hash.c
   hash.h
   hmac-md5.c
   hmac-sha1.c
   hmac.h
   human.c
   human.h
   i-ring-test.c
   i-ring.c
   i-ring.h
   iconv_.h
   iconv_open-aix.gperf
   iconv_open-hpux.gperf
   iconv_open-irix.gperf
   iconv_open-osf.gperf
   iconv_open.c
   idcache.c
   idcache.h
   imaxabs.c
   imaxdiv.c
   imaxtostr.c
   inet_ntop.c
   inet_ntop.h
   inet_pton.c
   inet_pton.h
   intprops.h
   inttostr.c
   inttostr.h
   inttypes_.h
   isapipe.c
   isapipe.h
   isdir.c
   isnan.c
   isnan.h
   isnanf.c
   isnanf.h
   isnanl-nolibm.h
   isnanl.c
   isnanl.h
   javacomp.c
   javacomp.h
   javaexec.c
   javaexec.h
   javaversion.c
   javaversion.h
   javaversion.java
   lbrkprop.h
   lchmod.h
   lchown.c
   ldexpl.c
   linebreak.c
   linebreak.h
   linebuffer.c
   linebuffer.h
   localcharset.c
   localcharset.h
   locale_.h
   localename.c
   localename.h
   lock.c
   lock.h
   logl.c
   long-options.c
   long-options.h
   lseek.c
   lstat.c
   lstat.h
   malloc.c
   malloca.c
   malloca.h
   malloca.valgrind
   math_.h
   mbchar.c
   mbchar.h
   mbfile.h
   mbiter.h
   mbscasecmp.c
   mbscasestr.c
   mbschr.c
   mbscspn.c
   mbslen.c
   mbsncasecmp.c
   mbsnlen.c
   mbspbrk.c
   mbspcasecmp.c
   mbsrchr.c
   mbssep.c
   mbsspn.c
   mbsstr.c
   mbstok_r.c
   mbswidth.c
   mbswidth.h
   mbuiter.h
   md2.c
   md2.h
   md4.c
   md4.h
   md5.c
   md5.h
   memcasecmp.c
   memcasecmp.h
   memchr.c
   memcmp.c
   memcoll.c
   memcoll.h
   memcpy.c
   memmem.c
   memmove.c
   mempcpy.c
   memrchr.c
   memset.c
   memxor.c
   memxor.h
   minmax.h
   mkancesdirs.c
   mkancesdirs.h
   mkdir-p.c
   mkdir-p.h
   mkdir.c
   mkdirat.c
   mkdtemp.c
   mkstemp-safer.c
   mkstemp.c
   mktime.c
   modechange.c
   modechange.h
   mountlist.c
   mountlist.h
   mpsort.c
   mpsort.h
   nanosleep.c
   netinet_in_.h
   obstack.c
   obstack.h
   offtostr.c
   open-safer.c
   openat-die.c
   openat-priv.h
   openat-proc.c
   openat.c
   openat.h
   pagealign_alloc.c
   pagealign_alloc.h
   pathmax.h
   physmem.c
   physmem.h
   pipe-safer.c
   pipe.c
   pipe.h
   poll.c
   poll_.h
   posixtm.c
   posixtm.h
   posixver.c
   posixver.h
   printf-args.c
   printf-args.h
   printf-frexp.c
   printf-frexp.h
   printf-frexpl.c
   printf-frexpl.h
   printf-parse.c
   printf-parse.h
   printf.c
   progname.c
   progname.h
   progreloc.c
   putenv.c
   quote.c
   quote.h
   quotearg.c
   quotearg.h
   raise.c
   read-file.c
   read-file.h
   readline.c
   readline.h
   readlink.c
   readtokens.c
   readtokens.h
   readtokens0.c
   readtokens0.h
   readutmp.c
   readutmp.h
   realloc.c
   ref-add.sin
   ref-del.sin
   regcomp.c
   regex.c
   regex.h
   regex_internal.c
   regex_internal.h
   regexec.c
   relocatable.c
   relocatable.h
   relocwrapper.c
   rename-dest-slash.c
   rename.c
   rijndael-alg-fst.c
   rijndael-alg-fst.h
   rijndael-api-fst.c
   rijndael-api-fst.h
   rmdir.c
   rpmatch.c
   safe-read.c
   safe-read.h
   safe-write.c
   safe-write.h
   same-inode.h
   same.c
   same.h
   save-cwd.c
   save-cwd.h
   savedir.c
   savedir.h
   savewd.c
   savewd.h
   search_.h
   setenv.c
   setenv.h
   settime.c
   sh-quote.c
   sh-quote.h
   sha1.c
   sha1.h
   sig2str.c
   sig2str.h
   signal_.h
   signbitd.c
   signbitf.c
   signbitl.c
   sigprocmask.c
   sincosl.c
   sinl.c
   size_max.h
   sleep.c
   snprintf.c
   sprintf.c
   sqrtl.c
   stat-macros.h
   stat-time.h
   stdbool_.h
   stdint_.h
   stdio--.h
   stdio-safer.h
   stdio_.h
   stdlib--.h
   stdlib-safer.h
   stdlib_.h
   stpcpy.c
   stpncpy.c
   strcasecmp.c
   strcasestr.c
   strchrnul.c
   strcspn.c
   strdup.c
   streq.h
   strerror.c
   strftime.c
   strftime.h
   striconv.c
   striconv.h
   striconveh.c
   striconveh.h
   striconveha.c
   striconveha.h
   string_.h
   stripslash.c
   strncasecmp.c
   strndup.c
   strnlen.c
   strnlen1.c
   strnlen1.h
   strpbrk.c
   strptime.c
   strsep.c
   strtod.c
   strtoimax.c
   strtok_r.c
   strtol.c
   strtoll.c
   strtoul.c
   strtoull.c
   strtoumax.c
   strverscmp.c
   strverscmp.h
   sys_select_.h
   sys_socket_.h
   sys_stat_.h
   sys_time_.h
   sysexits_.h
   tanl.c
   tempname.c
   tempname.h
   time_.h
   time_r.c
   timegm.c
   timespec.h
   tls.c
   tls.h
   tmpdir.c
   tmpdir.h
   tmpfile-safer.c
   tmpfile.c
   trigl.c
   trigl.h
   trim.c
   trim.h
   tsearch.c
   uinttostr.c
   umaxtostr.c
   unicodeio.c
   unicodeio.h
   uniconv.h
   uniname.h
   unistd--.h
   unistd-safer.h
   unistd_.h
   unistdio.h
   unistr.h
   unitypes.h
   uniwidth.h
   unlinkdir.c
   unlinkdir.h
   unlocked-io.h
   unsetenv.c
   userspec.c
   userspec.h
   utime.c
   utimecmp.c
   utimecmp.h
   utimens.c
   utimens.h
   vasnprintf.c
   vasnprintf.h
   vasprintf.c
   verify.h
   verror.c
   verror.h
   version-etc-fsf.c
   version-etc.c
   version-etc.h
   vfprintf.c
   vprintf.c
   vsnprintf.c
   vsprintf.c
   w32spawn.h
   wait-process.c
   wait-process.h
   wchar_.h
   wctype_.h
   wcwidth.c
   write-any-file.c
   write-any-file.h
   xalloc-die.c
   xalloc.h
   xasprintf.c
   xgetcwd.c
   xgetcwd.h
   xgetdomainname.c
   xgetdomainname.h
   xgethostname.c
   xgethostname.h
   xmalloc.c
   xmalloca.c
   xmalloca.h
   xmemcoll.c
   xmemcoll.h
   xnanosleep.c
   xnanosleep.h
   xreadlink.c
   xreadlink.h
   xsetenv.c
   xsetenv.h
   xsize.h
   xstriconv.c
   xstriconv.h
   xstrndup.c
   xstrndup.h
   xstrtod.c
   xstrtod.h
   xstrtoimax.c
   xstrtol-error.c
   xstrtol.c
   xstrtol.h
   xstrtold.c
   xstrtoul.c
   xstrtoumax.c
   xtime.h
   xvasprintf.c
   xvasprintf.h
   yesno.c
   yesno.h

/* Character handling in C locale.

   These functions work like the corresponding functions in <ctype.h>,
   except that they have the C (POSIX) locale hardwired, whereas the
   <ctype.h> functions' behaviour depends on the current locale set via
   setlocale.

   Copyright (C) 2000-2003, 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
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software Foundation,
Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.  */

#ifndef C_CTYPE_H
#define C_CTYPE_H

#include <stdbool.h>


#ifdef __cplusplus
extern "C" {
#endif


/* The functions defined in this file assume the "C" locale and a character
   set without diacritics (ASCII-US or EBCDIC-US or something like that).
   Even if the "C" locale on a particular system is an extension of the ASCII
   character set (like on BeOS, where it is UTF-8, or on AmigaOS, where it
   is ISO-8859-1), the functions in this file recognize only the ASCII
   characters.  */


/* Check whether the ASCII optimizations apply. */

/* ANSI C89 (and ISO C99 5.2.1.3 too) already guarantees that
   '0', '1', ..., '9' have consecutive integer values.  */
#define C_CTYPE_CONSECUTIVE_DIGITS 1

#if ('A' <= 'Z') \
    && ('A' + 1 == 'B') && ('B' + 1 == 'C') && ('C' + 1 == 'D') \
    && ('D' + 1 == 'E') && ('E' + 1 == 'F') && ('F' + 1 == 'G') \
    && ('G' + 1 == 'H') && ('H' + 1 == 'I') && ('I' + 1 == 'J') \
    && ('J' + 1 == 'K') && ('K' + 1 == 'L') && ('L' + 1 == 'M') \
    && ('M' + 1 == 'N') && ('N' + 1 == 'O') && ('O' + 1 == 'P') \
    && ('P' + 1 == 'Q') && ('Q' + 1 == 'R') && ('R' + 1 == 'S') \
    && ('S' + 1 == 'T') && ('T' + 1 == 'U') && ('U' + 1 == 'V') \
    && ('V' + 1 == 'W') && ('W' + 1 == 'X') && ('X' + 1 == 'Y') \
    && ('Y' + 1 == 'Z')
#define C_CTYPE_CONSECUTIVE_UPPERCASE 1
#endif

#if ('a' <= 'z') \
    && ('a' + 1 == 'b') && ('b' + 1 == 'c') && ('c' + 1 == 'd') \
    && ('d' + 1 == 'e') && ('e' + 1 == 'f') && ('f' + 1 == 'g') \
    && ('g' + 1 == 'h') && ('h' + 1 == 'i') && ('i' + 1 == 'j') \
    && ('j' + 1 == 'k') && ('k' + 1 == 'l') && ('l' + 1 == 'm') \
    && ('m' + 1 == 'n') && ('n' + 1 == 'o') && ('o' + 1 == 'p') \
    && ('p' + 1 == 'q') && ('q' + 1 == 'r') && ('r' + 1 == 's') \
    && ('s' + 1 == 't') && ('t' + 1 == 'u') && ('u' + 1 == 'v') \
    && ('v' + 1 == 'w') && ('w' + 1 == 'x') && ('x' + 1 == 'y') \
    && ('y' + 1 == 'z')
#define C_CTYPE_CONSECUTIVE_LOWERCASE 1
#endif

#if (' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \
    && ('%' == 37) && ('&' == 38) && ('\'' == 39) && ('(' == 40) \
    && (')' == 41) && ('*' == 42) && ('+' == 43) && (',' == 44) \
    && ('-' == 45) && ('.' == 46) && ('/' == 47) && ('0' == 48) \
    && ('1' == 49) && ('2' == 50) && ('3' == 51) && ('4' == 52) \
    && ('5' == 53) && ('6' == 54) && ('7' == 55) && ('8' == 56) \
    && ('9' == 57) && (':' == 58) && (';' == 59) && ('<' == 60) \
    && ('=' == 61) && ('>' == 62) && ('?' == 63) && ('A' == 65) \
    && ('B' == 66) && ('C' == 67) && ('D' == 68) && ('E' == 69) \
    && ('F' == 70) && ('G' == 71) && ('H' == 72) && ('I' == 73) \
    && ('J' == 74) && ('K' == 75) && ('L' == 76) && ('M' == 77) \
    && ('N' == 78) && ('O' == 79) && ('P' == 80) && ('Q' == 81) \
    && ('R' == 82) && ('S' == 83) && ('T' == 84) && ('U' == 85) \
    && ('V' == 86) && ('W' == 87) && ('X' == 88) && ('Y' == 89) \
    && ('Z' == 90) && ('[' == 91) && ('\\' == 92) && (']' == 93) \
    && ('^' == 94) && ('_' == 95) && ('a' == 97) && ('b' == 98) \
    && ('c' == 99) && ('d' == 100) && ('e' == 101) && ('f' == 102) \
    && ('g' == 103) && ('h' == 104) && ('i' == 105) && ('j' == 106) \
    && ('k' == 107) && ('l' == 108) && ('m' == 109) && ('n' == 110) \
    && ('o' == 111) && ('p' == 112) && ('q' == 113) && ('r' == 114) \
    && ('s' == 115) && ('t' == 116) && ('u' == 117) && ('v' == 118) \
    && ('w' == 119) && ('x' == 120) && ('y' == 121) && ('z' == 122) \
    && ('{' == 123) && ('|' == 124) && ('}' == 125) && ('~' == 126)
/* The character set is ASCII or one of its variants or extensions, not EBCDIC.
   Testing the value of '\n' and '\r' is not relevant.  */
#define C_CTYPE_ASCII 1
#endif


/* Function declarations. */

extern bool c_isascii (int c); /* not locale dependent */

extern bool c_isalnum (int c);
extern bool c_isalpha (int c);
extern bool c_isblank (int c);
extern bool c_iscntrl (int c);
extern bool c_isdigit (int c);
extern bool c_islower (int c);
extern bool c_isgraph (int c);
extern bool c_isprint (int c);
extern bool c_ispunct (int c);
extern bool c_isspace (int c);
extern bool c_isupper (int c);
extern bool c_isxdigit (int c);

extern int c_tolower (int c);
extern int c_toupper (int c);


#if defined __GNUC__ && defined __OPTIMIZE__ && !defined __OPTIMIZE_SIZE__ && !defined NO_C_CTYPE_MACROS

/* ASCII optimizations. */

#undef c_isascii
#define c_isascii(c) \
  ({ int __c = (c); \
     (__c >= 0x00 && __c <= 0x7f); \
   })

#if C_CTYPE_CONSECUTIVE_DIGITS \
    && C_CTYPE_CONSECUTIVE_UPPERCASE && C_CTYPE_CONSECUTIVE_LOWERCASE
#if C_CTYPE_ASCII
#undef c_isalnum
#define c_isalnum(c) \
  ({ int __c = (c); \
     ((__c >= '0' && __c <= '9') \
      || ((__c & ~0x20) >= 'A' && (__c & ~0x20) <= 'Z')); \
   })
#else
#undef c_isalnum
#define c_isalnum(c) \
  ({ int __c = (c); \
     ((__c >= '0' && __c <= '9') \
      || (__c >= 'A' && __c <= 'Z') \
      || (__c >= 'a' && __c <= 'z')); \
   })
#endif
#endif

#if C_CTYPE_CONSECUTIVE_UPPERCASE && C_CTYPE_CONSECUTIVE_LOWERCASE
#if C_CTYPE_ASCII
#undef c_isalpha
#define c_isalpha(c) \
  ({ int __c = (c); \
     ((__c & ~0x20) >= 'A' && (__c & ~0x20) <= 'Z'); \
   })
#else
#undef c_isalpha
#define c_isalpha(c) \
  ({ int __c = (c); \
     ((__c >= 'A' && __c <= 'Z') || (__c >= 'a' && __c <= 'z')); \
   })
#endif
#endif

#undef c_isblank
#define c_isblank(c) \
  ({ int __c = (c); \
     (__c == ' ' || __c == '\t'); \
   })

#if C_CTYPE_ASCII
#undef c_iscntrl
#define c_iscntrl(c) \
  ({ int __c = (c); \
     ((__c & ~0x1f) == 0 || __c == 0x7f); \
   })
#endif

#if C_CTYPE_CONSECUTIVE_DIGITS
#undef c_isdigit
#define c_isdigit(c) \
  ({ int __c = (c); \
     (__c >= '0' && __c <= '9'); \
   })
#endif

#if C_CTYPE_CONSECUTIVE_LOWERCASE
#undef c_islower
#define c_islower(c) \
  ({ int __c = (c); \
     (__c >= 'a' && __c <= 'z'); \
   })
#endif

#if C_CTYPE_ASCII
#undef c_isgraph
#define c_isgraph(c) \
  ({ int __c = (c); \
     (__c >= '!' && __c <= '~'); \
   })
#endif

#if C_CTYPE_ASCII
#undef c_isprint
#define c_isprint(c) \
  ({ int __c = (c); \
     (__c >= ' ' && __c <= '~'); \
   })
#endif

#if C_CTYPE_ASCII
#undef c_ispunct
#define c_ispunct(c) \
  ({ int _c = (c); \
     (c_isgraph (_c) && ! c_isalnum (_c)); \
   })
#endif

#undef c_isspace
#define c_isspace(c) \
  ({ int __c = (c); \
     (__c == ' ' || __c == '\t' \
      || __c == '\n' || __c == '\v' || __c == '\f' || __c == '\r'); \
   })

#if C_CTYPE_CONSECUTIVE_UPPERCASE
#undef c_isupper
#define c_isupper(c) \
  ({ int __c = (c); \
     (__c >= 'A' && __c <= 'Z'); \
   })
#endif

#if C_CTYPE_CONSECUTIVE_DIGITS \
    && C_CTYPE_CONSECUTIVE_UPPERCASE && C_CTYPE_CONSECUTIVE_LOWERCASE
#if C_CTYPE_ASCII
#undef c_isxdigit
#define c_isxdigit(c) \
  ({ int __c = (c); \
     ((__c >= '0' && __c <= '9') \
      || ((__c & ~0x20) >= 'A' && (__c & ~0x20) <= 'F')); \
   })
#else
#undef c_isxdigit
#define c_isxdigit(c) \
  ({ int __c = (c); \
     ((__c >= '0' && __c <= '9') \
      || (__c >= 'A' && __c <= 'F') \
      || (__c >= 'a' && __c <= 'f')); \
   })
#endif
#endif

#if C_CTYPE_CONSECUTIVE_UPPERCASE && C_CTYPE_CONSECUTIVE_LOWERCASE
#undef c_tolower
#define c_tolower(c) \
  ({ int __c = (c); \
     (__c >= 'A' && __c <= 'Z' ? __c - 'A' + 'a' : __c); \
   })
#undef c_toupper
#define c_toupper(c) \
  ({ int __c = (c); \
     (__c >= 'a' && __c <= 'z' ? __c - 'a' + 'A' : __c); \
   })
#endif

#endif /* optimizing for speed */


#ifdef __cplusplus
}
#endif

#endif /* C_CTYPE_H */

About Koders | Resources | Downloads | Support | Black Duck | Submit Project | Terms of Service | DMCA | Privacy Policy | Site Map| Contact Us