Undo the patch before the last one. Put back the macro definitions
authordrepper <drepper>
Sun, 1 Sep 2002 20:07:29 +0000 (20:07 +0000)
committerdrepper <drepper>
Sun, 1 Sep 2002 20:07:29 +0000 (20:07 +0000)
for the standard functions to access the classificaiton and mapping
arrays.

ctype/ctype.h

index 64f5e4b..28aec6b 100644 (file)
@@ -62,6 +62,24 @@ enum
 };
 #endif /* ! _ISbit  */
 
+/* These are defined in ctype-info.c.
+   The declarations here must match those in localeinfo.h.
+
+   These point into arrays of 384, so they can be indexed by any `unsigned
+   char' value [0,255]; by EOF (-1); or by any `signed char' value
+   [-128,-1).  ISO C requires that the ctype functions work for `unsigned
+   char' values and for EOF; we also support negative `signed char' values
+   for broken old programs.  The case conversion arrays are of `int's
+   rather than `unsigned char's because tolower (EOF) must be EOF, which
+   doesn't fit into an `unsigned char'.  But today more important is that
+   the arrays are also used for multi-byte character sets.  */
+extern __const unsigned short int *__ctype_b;  /* Characteristics.  */
+extern __const __int32_t *__ctype_tolower;     /* Case conversions.  */
+extern __const __int32_t *__ctype_toupper;     /* Case conversions.  */
+
+#define __isctype(c, type) \
+  (__ctype_b[(int) (c)] & (unsigned short int) type)
+
 #define        __isascii(c)    (((c) & ~0x7f) == 0)    /* If C is a 7 bit value.  */
 #define        __toascii(c)    ((c) & 0x7f)            /* Mask off high bits.  */
 
@@ -144,10 +162,49 @@ __exctype (_tolower);
       __res; }))
 
 #if !defined __NO_CTYPE && !defined __cplusplus
+# define isalnum(c)    __isctype((c), _ISalnum)
+# define isalpha(c)    __isctype((c), _ISalpha)
+# define iscntrl(c)    __isctype((c), _IScntrl)
+# define isdigit(c)    __isctype((c), _ISdigit)
+# define islower(c)    __isctype((c), _ISlower)
+# define isgraph(c)    __isctype((c), _ISgraph)
+# define isprint(c)    __isctype((c), _ISprint)
+# define ispunct(c)    __isctype((c), _ISpunct)
+# define isspace(c)    __isctype((c), _ISspace)
+# define isupper(c)    __isctype((c), _ISupper)
+# define isxdigit(c)   __isctype((c), _ISxdigit)
+
+# ifdef __USE_ISOC99
+#  define isblank(c)   __isctype((c), _ISblank)
+# endif
+
+# ifdef __USE_EXTERN_INLINES
+extern __inline int
+tolower (int __c) __THROW
+{
+  return __c >= -128 && __c < 256 ? __ctype_tolower[__c] : __c;
+}
+
+extern __inline int
+toupper (int __c) __THROW
+{
+  return __c >= -128 && __c < 256 ? __ctype_toupper[__c] : __c;
+}
+# endif
+
+# if __GNUC__ >= 2 && defined __OPTIMIZE__ && !defined __cplusplus
+#  define tolower(c)   __tobody (c, tolower, __ctype_tolower, (c))
+#  define toupper(c)   __tobody (c, toupper, __ctype_toupper, (c))
+# endif /* Optimizing gcc */
+
 # if defined __USE_SVID || defined __USE_MISC || defined __USE_XOPEN
 #  define isascii(c)   __isascii (c)
 #  define toascii(c)   __toascii (c)
+
+#  define _tolower(c)  ((int) __ctype_tolower[(int) (c)])
+#  define _toupper(c)  ((int) __ctype_toupper[(int) (c)])
 # endif
+
 #endif /* Not __NO_CTYPE.  */