mirror of
https://sourceware.org/git/glibc.git
synced 2024-12-12 14:20:13 +00:00
Use __ctype32_tolower and __ctype32_toupper.
This commit is contained in:
parent
f00fa75c66
commit
ac7896b56e
@ -1,4 +1,4 @@
|
||||
/* Copyright (C) 1996, 1997, 1998, 1999 Free Software Foundation, Inc.
|
||||
/* Copyright (C) 1996, 1997, 1998, 1999, 2000 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
@ -18,7 +18,7 @@
|
||||
|
||||
#define __NO_WCTYPE
|
||||
#include <wctype.h>
|
||||
#include <ctype.h> /* For __ctype_tolower and __ctype_toupper. */
|
||||
#include <stdint.h>
|
||||
|
||||
#include "cname-lookup.h"
|
||||
|
||||
@ -26,6 +26,10 @@
|
||||
is not visible in the header. */
|
||||
extern unsigned int *__ctype32_b;
|
||||
|
||||
/* These are not exported. */
|
||||
extern const uint32_t *__ctype32_toupper;
|
||||
extern const uint32_t *__ctype32_tolower;
|
||||
|
||||
/* Provide real-function versions of all the wctype macros. */
|
||||
|
||||
#define func(name, type) \
|
||||
@ -76,7 +80,7 @@ wint_t
|
||||
/* Character is not known. Default action is to simply return it. */
|
||||
return wc;
|
||||
|
||||
return (wint_t) __ctype_tolower[idx];
|
||||
return (wint_t) __ctype32_tolower[idx];
|
||||
}
|
||||
|
||||
wint_t
|
||||
@ -90,5 +94,5 @@ wint_t
|
||||
/* Character is not known. Default action is to simply return it. */
|
||||
return wc;
|
||||
|
||||
return (wint_t) __ctype_toupper[idx];
|
||||
return (wint_t) __ctype32_toupper[idx];
|
||||
}
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* Copyright (C) 1996, 1997 Free Software Foundation, Inc.
|
||||
/* Copyright (C) 1996, 1997, 2000 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
@ -18,6 +18,12 @@
|
||||
|
||||
#define __NO_WCTYPE
|
||||
#include <wctype.h>
|
||||
#include <endian.h>
|
||||
#include <stdint.h>
|
||||
#include "../locale/localeinfo.h"
|
||||
|
||||
#define USE_IN_EXTENDED_LOCALE_MODEL
|
||||
#include "cname-lookup.h"
|
||||
|
||||
/* Provide real-function versions of all the wctype macros. */
|
||||
|
||||
@ -40,11 +46,41 @@ func (__iswxdigit_l, _ISwxdigit)
|
||||
wint_t
|
||||
(__towlower_l) (wint_t wc, __locale_t locale)
|
||||
{
|
||||
return __towctrans_l (wc, locale->__ctype_tolower, locale);
|
||||
const int32_t *class32_tolower;
|
||||
size_t idx;
|
||||
|
||||
idx = cname_lookup (wc, locale);
|
||||
if (idx == ~((size_t) 0))
|
||||
return 0;
|
||||
|
||||
#if BYTE_ORDER == BIG_ENDIAN
|
||||
class32_tolower = (const int32_t *)
|
||||
locale->__locales[LC_CTYPE]->values[_NL_ITEM_INDEX (_NL_CTYPE_TOLOWER32_EB)].string;
|
||||
#else
|
||||
class32_tolower = (const int32_t *)
|
||||
locale->__locales[LC_CTYPE]->values[_NL_ITEM_INDEX (_NL_CTYPE_TOLOWER32_EL)].string;
|
||||
#endif
|
||||
|
||||
return class32_tolower[idx];
|
||||
}
|
||||
|
||||
wint_t
|
||||
(__towupper_l) (wint_t wc, __locale_t locale)
|
||||
{
|
||||
return __towctrans_l (wc, locale->__ctype_toupper, locale);
|
||||
const int32_t *class32_toupper;
|
||||
size_t idx;
|
||||
|
||||
idx = cname_lookup (wc, locale);
|
||||
if (idx == ~((size_t) 0))
|
||||
return 0;
|
||||
|
||||
#if BYTE_ORDER == BIG_ENDIAN
|
||||
class32_toupper = (const int32_t *)
|
||||
locale->__locales[LC_CTYPE]->values[_NL_ITEM_INDEX (_NL_CTYPE_TOUPPER32_EB)].string;
|
||||
#else
|
||||
class32_toupper = (const int32_t *)
|
||||
locale->__locales[LC_CTYPE]->values[_NL_ITEM_INDEX (_NL_CTYPE_TOUPPER32_EL)].string;
|
||||
#endif
|
||||
|
||||
return class32_toupper[idx];
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user