mirror of
https://sourceware.org/git/glibc.git
synced 2024-11-09 14:50:05 +00:00
Remove __need macros from stdio.h and wchar.h.
wint_t is a little finicky because it might be defined by stddef.h, which belongs to the compiler. In addition to the _types_, a bunch of other declarations shared between wctype.h and wchar.h are factored out to their own header. * libio/bits/types/FILE.h, libio/bits/types/__FILE.h * wcsmbs/bits/types/mbstate_t.h, wcsmbs/bits/types/__mbstate_t.h * wcsmbs/bits/types/wint_t.h: New single-type definition files. * wctype/bits/wctype-wchar.h: New file holding declarations shared between wctype.h and wchar.h. * libio/Makefile, wcsmbs/Makefile, wctype/Makefile: Install them. * include/bits/types/FILE.h, include/bits/types/__FILE.h * include/bits/types/mbstate_t.h, include/bits/types/__mbstate_t.h * include/bits/types/wint_t.h, include/bits/wcsmbs-wchar.h: New wrappers. * include/stdio.h, include/wchar.h, include/wctype.h: No need to handle __need macros. * grp/grp.h, gshadow/gshadow.h, hurd/hurd.h, iconv/gconv.h * libio/stdio.h, mach/mach.h, misc/mntent.h, pwd/pwd.h * shadow/shadow.h, stdio-common/printf.h, wcsmbs/uchar.h * wcsmbs/wchar.h, wctype/wctype.h * sysdeps/generic/_G_config.h, sysdeps/unix/sysv/linux/_G_config.h Use the new files instead of __need macros.
This commit is contained in:
parent
4615f5aefe
commit
199fc19d3a
25
ChangeLog
25
ChangeLog
@ -1,3 +1,28 @@
|
|||||||
|
2017-06-08 Zack Weinberg <zackw@panix.com>
|
||||||
|
|
||||||
|
* libio/bits/types/FILE.h, libio/bits/types/__FILE.h
|
||||||
|
* wcsmbs/bits/types/mbstate_t.h, wcsmbs/bits/types/__mbstate_t.h
|
||||||
|
* wcsmbs/bits/types/wint_t.h: New single-type definition files.
|
||||||
|
* wctype/bits/wctype-wchar.h: New file holding declarations shared
|
||||||
|
between wctype.h and wchar.h.
|
||||||
|
|
||||||
|
* libio/Makefile, wcsmbs/Makefile, wctype/Makefile:
|
||||||
|
Install them.
|
||||||
|
|
||||||
|
* include/bits/types/FILE.h, include/bits/types/__FILE.h
|
||||||
|
* include/bits/types/mbstate_t.h, include/bits/types/__mbstate_t.h
|
||||||
|
* include/bits/types/wint_t.h, include/bits/wcsmbs-wchar.h:
|
||||||
|
New wrappers.
|
||||||
|
* include/stdio.h, include/wchar.h, include/wctype.h:
|
||||||
|
No need to handle __need macros.
|
||||||
|
|
||||||
|
* grp/grp.h, gshadow/gshadow.h, hurd/hurd.h, iconv/gconv.h
|
||||||
|
* libio/stdio.h, mach/mach.h, misc/mntent.h, pwd/pwd.h
|
||||||
|
* shadow/shadow.h, stdio-common/printf.h, wcsmbs/uchar.h
|
||||||
|
* wcsmbs/wchar.h, wctype/wctype.h
|
||||||
|
* sysdeps/generic/_G_config.h, sysdeps/unix/sysv/linux/_G_config.h
|
||||||
|
Use the new files instead of __need macros.
|
||||||
|
|
||||||
2017-06-08 H.J. Lu <hongjiu.lu@intel.com>
|
2017-06-08 H.J. Lu <hongjiu.lu@intel.com>
|
||||||
|
|
||||||
* string/test-memrchr.c (test_main): Add tests for len == 0
|
* string/test-memrchr.c (test_main): Add tests for len == 0
|
||||||
|
@ -49,8 +49,7 @@ struct group
|
|||||||
|
|
||||||
|
|
||||||
#ifdef __USE_MISC
|
#ifdef __USE_MISC
|
||||||
# define __need_FILE
|
# include <bits/types/FILE.h>
|
||||||
# include <stdio.h>
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
@ -21,11 +21,9 @@
|
|||||||
#define _GSHADOW_H 1
|
#define _GSHADOW_H 1
|
||||||
|
|
||||||
#include <features.h>
|
#include <features.h>
|
||||||
|
|
||||||
#include <paths.h>
|
#include <paths.h>
|
||||||
|
#include <bits/types/FILE.h>
|
||||||
|
|
||||||
#define __need_FILE
|
|
||||||
#include <stdio.h>
|
|
||||||
#define __need_size_t
|
#define __need_size_t
|
||||||
#include <stddef.h>
|
#include <stddef.h>
|
||||||
|
|
||||||
|
@ -141,8 +141,7 @@ extern struct mutex _hurd_brk_lock;
|
|||||||
|
|
||||||
extern int _hurd_set_brk (vm_address_t newbrk);
|
extern int _hurd_set_brk (vm_address_t newbrk);
|
||||||
|
|
||||||
#define __need_FILE
|
#include <bits/types/FILE.h>
|
||||||
#include <stdio.h>
|
|
||||||
|
|
||||||
/* Calls to get and set basic ports. */
|
/* Calls to get and set basic ports. */
|
||||||
|
|
||||||
|
@ -23,9 +23,9 @@
|
|||||||
#define _GCONV_H 1
|
#define _GCONV_H 1
|
||||||
|
|
||||||
#include <features.h>
|
#include <features.h>
|
||||||
#define __need_mbstate_t
|
#include <bits/types/__mbstate_t.h>
|
||||||
#define __need_wint_t
|
#include <bits/types/wint_t.h>
|
||||||
#include <wchar.h>
|
|
||||||
#define __need_size_t
|
#define __need_size_t
|
||||||
#define __need_wchar_t
|
#define __need_wchar_t
|
||||||
#include <stddef.h>
|
#include <stddef.h>
|
||||||
|
1
include/bits/types/FILE.h
Normal file
1
include/bits/types/FILE.h
Normal file
@ -0,0 +1 @@
|
|||||||
|
#include <libio/bits/types/FILE.h>
|
1
include/bits/types/__FILE.h
Normal file
1
include/bits/types/__FILE.h
Normal file
@ -0,0 +1 @@
|
|||||||
|
#include <libio/bits/types/__FILE.h>
|
1
include/bits/types/__mbstate_t.h
Normal file
1
include/bits/types/__mbstate_t.h
Normal file
@ -0,0 +1 @@
|
|||||||
|
#include <wcsmbs/bits/types/__mbstate_t.h>
|
1
include/bits/types/mbstate_t.h
Normal file
1
include/bits/types/mbstate_t.h
Normal file
@ -0,0 +1 @@
|
|||||||
|
#include <wcsmbs/bits/types/mbstate_t.h>
|
1
include/bits/types/wint_t.h
Normal file
1
include/bits/types/wint_t.h
Normal file
@ -0,0 +1 @@
|
|||||||
|
#include <wcsmbs/bits/types/wint_t.h>
|
1
include/bits/wctype-wchar.h
Normal file
1
include/bits/wctype-wchar.h
Normal file
@ -0,0 +1 @@
|
|||||||
|
#include <wctype/bits/wctype-wchar.h>
|
@ -1,8 +1,6 @@
|
|||||||
#ifndef _STDIO_H
|
#ifndef _STDIO_H
|
||||||
# if defined _ISOMAC || defined __need_FILE || defined __need___FILE
|
# include <libio/stdio.h>
|
||||||
# include <libio/stdio.h>
|
# ifndef _ISOMAC
|
||||||
# else
|
|
||||||
# include <libio/stdio.h>
|
|
||||||
|
|
||||||
/* Now define the internal interfaces. */
|
/* Now define the internal interfaces. */
|
||||||
|
|
||||||
@ -71,11 +69,11 @@ libc_hidden_proto (__isoc99_vfscanf)
|
|||||||
extern FILE *__new_tmpfile (void);
|
extern FILE *__new_tmpfile (void);
|
||||||
extern FILE *__old_tmpfile (void);
|
extern FILE *__old_tmpfile (void);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# define __need_size_t
|
# define __need_size_t
|
||||||
# define __need_wint_t
|
|
||||||
# include <stddef.h>
|
# include <stddef.h>
|
||||||
|
|
||||||
|
# include <bits/types/wint_t.h>
|
||||||
|
|
||||||
/* Generate a unique file name (and possibly open it). */
|
/* Generate a unique file name (and possibly open it). */
|
||||||
extern int __path_search (char *__tmpl, size_t __tmpl_len,
|
extern int __path_search (char *__tmpl, size_t __tmpl_len,
|
||||||
const char *__dir, const char *__pfx,
|
const char *__dir, const char *__pfx,
|
||||||
@ -183,5 +181,5 @@ libc_hidden_proto (__obstack_vprintf_chk)
|
|||||||
extern FILE * __fmemopen (void *buf, size_t len, const char *mode);
|
extern FILE * __fmemopen (void *buf, size_t len, const char *mode);
|
||||||
libc_hidden_proto (__fmemopen)
|
libc_hidden_proto (__fmemopen)
|
||||||
|
|
||||||
# endif
|
# endif /* not _ISOMAC */
|
||||||
#endif
|
#endif /* stdio.h */
|
||||||
|
@ -1,8 +1,6 @@
|
|||||||
#ifndef _WCHAR_H
|
#ifndef _WCHAR_H
|
||||||
#include <wcsmbs/wchar.h>
|
# include <wcsmbs/wchar.h>
|
||||||
|
|
||||||
# ifndef _ISOMAC
|
# ifndef _ISOMAC
|
||||||
# ifdef _WCHAR_H
|
|
||||||
|
|
||||||
extern __typeof (wcscasecmp_l) __wcscasecmp_l;
|
extern __typeof (wcscasecmp_l) __wcscasecmp_l;
|
||||||
extern __typeof (wcsncasecmp_l) __wcsncasecmp_l;
|
extern __typeof (wcsncasecmp_l) __wcsncasecmp_l;
|
||||||
@ -218,11 +216,5 @@ extern size_t __mbsrtowcs_l (wchar_t *dst, const char **src, size_t len,
|
|||||||
# define mbsinit(state) ((state)->__count == 0)
|
# define mbsinit(state) ((state)->__count == 0)
|
||||||
# define __mbsinit(state) ((state)->__count == 0)
|
# define __mbsinit(state) ((state)->__count == 0)
|
||||||
|
|
||||||
# endif
|
|
||||||
# endif
|
# endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Undefine all __need_* constants in case we are included to get those
|
|
||||||
constants but the whole file was already read. */
|
|
||||||
#undef __need_mbstate_t
|
|
||||||
#undef __need_wint_t
|
|
||||||
|
@ -1,30 +1,7 @@
|
|||||||
#ifndef _WCTYPE_H
|
#ifndef _WCTYPE_H
|
||||||
|
#include <wctype/wctype.h>
|
||||||
|
|
||||||
#ifndef _ISOMAC
|
#ifndef _ISOMAC
|
||||||
/* We try to get wint_t from <stddef.h>, but not all GCC versions define it
|
|
||||||
there. So define it ourselves if it remains undefined. */
|
|
||||||
# define __need_wint_t
|
|
||||||
# include <stddef.h>
|
|
||||||
# ifndef _WINT_T
|
|
||||||
/* Integral type unchanged by default argument promotions that can
|
|
||||||
hold any value corresponding to members of the extended character
|
|
||||||
set, as well as at least one value that does not correspond to any
|
|
||||||
member of the extended character set. */
|
|
||||||
# define _WINT_T
|
|
||||||
typedef unsigned int wint_t;
|
|
||||||
# endif
|
|
||||||
|
|
||||||
/* Need to repeat these prototypes here, as wctype/wctype.h defines all
|
|
||||||
these as macros and thus we couldn't add libc_hidden_proto. */
|
|
||||||
|
|
||||||
extern int iswalpha (wint_t __wc);
|
|
||||||
extern int iswalnum (wint_t __wc);
|
|
||||||
extern int iswdigit (wint_t __wc);
|
|
||||||
extern int iswlower (wint_t __wc);
|
|
||||||
extern int iswspace (wint_t __wc);
|
|
||||||
extern int iswxdigit (wint_t __wc);
|
|
||||||
extern wint_t towlower (wint_t __wc);
|
|
||||||
extern wint_t towupper (wint_t __wc);
|
|
||||||
|
|
||||||
libc_hidden_proto (iswalpha)
|
libc_hidden_proto (iswalpha)
|
||||||
libc_hidden_proto (iswalnum)
|
libc_hidden_proto (iswalnum)
|
||||||
@ -34,11 +11,7 @@ libc_hidden_proto (iswspace)
|
|||||||
libc_hidden_proto (iswxdigit)
|
libc_hidden_proto (iswxdigit)
|
||||||
libc_hidden_proto (towlower)
|
libc_hidden_proto (towlower)
|
||||||
libc_hidden_proto (towupper)
|
libc_hidden_proto (towupper)
|
||||||
#endif
|
|
||||||
|
|
||||||
#include <wctype/wctype.h>
|
|
||||||
|
|
||||||
#ifndef _ISOMAC
|
|
||||||
/* Internal interfaces. */
|
/* Internal interfaces. */
|
||||||
extern int __iswspace (wint_t __wc);
|
extern int __iswspace (wint_t __wc);
|
||||||
extern int __iswctype (wint_t __wc, wctype_t __desc);
|
extern int __iswctype (wint_t __wc, wctype_t __desc);
|
||||||
|
@ -23,7 +23,8 @@ subdir := libio
|
|||||||
include ../Makeconfig
|
include ../Makeconfig
|
||||||
|
|
||||||
headers := stdio.h libio.h _G_config.h bits/stdio.h \
|
headers := stdio.h libio.h _G_config.h bits/stdio.h \
|
||||||
bits/sys_errlist.h bits/stdio2.h bits/stdio-ldbl.h bits/libio-ldbl.h
|
bits/sys_errlist.h bits/stdio2.h bits/stdio-ldbl.h bits/libio-ldbl.h \
|
||||||
|
bits/types/FILE.h bits/types/__FILE.h
|
||||||
|
|
||||||
routines := \
|
routines := \
|
||||||
filedoalloc iofclose iofdopen iofflush iofgetpos iofgets iofopen \
|
filedoalloc iofclose iofdopen iofflush iofgetpos iofgets iofopen \
|
||||||
|
9
libio/bits/types/FILE.h
Normal file
9
libio/bits/types/FILE.h
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
#ifndef __FILE_defined
|
||||||
|
#define __FILE_defined 1
|
||||||
|
|
||||||
|
struct _IO_FILE;
|
||||||
|
|
||||||
|
/* The opaque type of streams. This is the definition used elsewhere. */
|
||||||
|
typedef struct _IO_FILE FILE;
|
||||||
|
|
||||||
|
#endif
|
7
libio/bits/types/__FILE.h
Normal file
7
libio/bits/types/__FILE.h
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
#ifndef ____FILE_defined
|
||||||
|
#define ____FILE_defined 1
|
||||||
|
|
||||||
|
struct _IO_FILE;
|
||||||
|
typedef struct _IO_FILE __FILE;
|
||||||
|
|
||||||
|
#endif
|
@ -21,48 +21,21 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef _STDIO_H
|
#ifndef _STDIO_H
|
||||||
|
#define _STDIO_H 1
|
||||||
|
|
||||||
#if !defined __need_FILE && !defined __need___FILE
|
#define __GLIBC_INTERNAL_STARTING_HEADER_IMPLEMENTATION
|
||||||
# define _STDIO_H 1
|
#include <bits/libc-header-start.h>
|
||||||
# define __GLIBC_INTERNAL_STARTING_HEADER_IMPLEMENTATION
|
|
||||||
# include <bits/libc-header-start.h>
|
|
||||||
|
|
||||||
__BEGIN_DECLS
|
__BEGIN_DECLS
|
||||||
|
|
||||||
# define __need_size_t
|
#define __need_size_t
|
||||||
# define __need_NULL
|
#define __need_NULL
|
||||||
# include <stddef.h>
|
#include <stddef.h>
|
||||||
|
|
||||||
# include <bits/types.h>
|
#include <bits/types.h>
|
||||||
# define __need_FILE
|
#include <bits/types/__FILE.h>
|
||||||
# define __need___FILE
|
#include <bits/types/FILE.h>
|
||||||
#endif /* Don't need FILE. */
|
|
||||||
|
|
||||||
|
|
||||||
#if !defined __FILE_defined && defined __need_FILE
|
|
||||||
|
|
||||||
/* Define outside of namespace so the C++ is happy. */
|
|
||||||
struct _IO_FILE;
|
|
||||||
|
|
||||||
/* The opaque type of streams. This is the definition used elsewhere. */
|
|
||||||
typedef struct _IO_FILE FILE;
|
|
||||||
|
|
||||||
# define __FILE_defined 1
|
|
||||||
#endif /* FILE not defined. */
|
|
||||||
#undef __need_FILE
|
|
||||||
|
|
||||||
|
|
||||||
#if !defined ____FILE_defined && defined __need___FILE
|
|
||||||
|
|
||||||
/* The opaque type of streams. This is the definition used elsewhere. */
|
|
||||||
typedef struct _IO_FILE __FILE;
|
|
||||||
|
|
||||||
# define ____FILE_defined 1
|
|
||||||
#endif /* __FILE not defined. */
|
|
||||||
#undef __need___FILE
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef _STDIO_H
|
|
||||||
#define _STDIO_USES_IOSTREAM
|
#define _STDIO_USES_IOSTREAM
|
||||||
|
|
||||||
#include <libio.h>
|
#include <libio.h>
|
||||||
@ -895,5 +868,3 @@ extern void funlockfile (FILE *__stream) __THROW;
|
|||||||
__END_DECLS
|
__END_DECLS
|
||||||
|
|
||||||
#endif /* <stdio.h> included. */
|
#endif /* <stdio.h> included. */
|
||||||
|
|
||||||
#endif /* !_STDIO_H */
|
|
||||||
|
@ -20,10 +20,8 @@
|
|||||||
|
|
||||||
#define _MACH_H 1
|
#define _MACH_H 1
|
||||||
|
|
||||||
/* We must include this before using __need_FILE with <stdio.h> below. */
|
|
||||||
#include <features.h>
|
#include <features.h>
|
||||||
|
|
||||||
|
|
||||||
/* Get the basic types used by Mach. */
|
/* Get the basic types used by Mach. */
|
||||||
#include <mach/mach_types.h>
|
#include <mach/mach_types.h>
|
||||||
|
|
||||||
@ -79,9 +77,7 @@ extern void
|
|||||||
__mach_msg_destroy (mach_msg_header_t *msg),
|
__mach_msg_destroy (mach_msg_header_t *msg),
|
||||||
mach_msg_destroy (mach_msg_header_t *msg);
|
mach_msg_destroy (mach_msg_header_t *msg);
|
||||||
|
|
||||||
|
#include <bits/types/FILE.h>
|
||||||
#define __need_FILE
|
|
||||||
#include <stdio.h>
|
|
||||||
|
|
||||||
/* Open a stream on a Mach device. */
|
/* Open a stream on a Mach device. */
|
||||||
extern FILE *mach_open_devstream (mach_port_t device_port, const char *mode);
|
extern FILE *mach_open_devstream (mach_port_t device_port, const char *mode);
|
||||||
|
@ -20,10 +20,8 @@
|
|||||||
#define _MNTENT_H 1
|
#define _MNTENT_H 1
|
||||||
|
|
||||||
#include <features.h>
|
#include <features.h>
|
||||||
#define __need_FILE
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <paths.h>
|
#include <paths.h>
|
||||||
|
#include <bits/types/FILE.h>
|
||||||
|
|
||||||
/* File listing canonical interesting mount points. */
|
/* File listing canonical interesting mount points. */
|
||||||
#define MNTTAB _PATH_MNTTAB /* Deprecated alias. */
|
#define MNTTAB _PATH_MNTTAB /* Deprecated alias. */
|
||||||
|
@ -59,8 +59,7 @@ struct passwd
|
|||||||
|
|
||||||
|
|
||||||
#ifdef __USE_MISC
|
#ifdef __USE_MISC
|
||||||
# define __need_FILE
|
# include <bits/types/FILE.h>
|
||||||
# include <stdio.h>
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
@ -24,11 +24,11 @@
|
|||||||
|
|
||||||
#include <paths.h>
|
#include <paths.h>
|
||||||
|
|
||||||
#define __need_FILE
|
|
||||||
#include <stdio.h>
|
|
||||||
#define __need_size_t
|
#define __need_size_t
|
||||||
#include <stddef.h>
|
#include <stddef.h>
|
||||||
|
|
||||||
|
#include <bits/types/FILE.h>
|
||||||
|
|
||||||
/* Paths to the user database files. */
|
/* Paths to the user database files. */
|
||||||
#define SHADOW _PATH_SHADOW
|
#define SHADOW _PATH_SHADOW
|
||||||
|
|
||||||
|
@ -22,11 +22,12 @@
|
|||||||
|
|
||||||
__BEGIN_DECLS
|
__BEGIN_DECLS
|
||||||
|
|
||||||
#define __need_FILE
|
#include <bits/types/FILE.h>
|
||||||
#include <stdio.h>
|
|
||||||
#define __need_size_t
|
#define __need_size_t
|
||||||
#define __need_wchar_t
|
#define __need_wchar_t
|
||||||
#include <stddef.h>
|
#include <stddef.h>
|
||||||
|
|
||||||
#include <stdarg.h>
|
#include <stdarg.h>
|
||||||
|
|
||||||
|
|
||||||
|
@ -13,11 +13,12 @@
|
|||||||
#endif
|
#endif
|
||||||
#define __need_NULL
|
#define __need_NULL
|
||||||
#include <stddef.h>
|
#include <stddef.h>
|
||||||
#define __need_mbstate_t
|
|
||||||
|
#include <bits/types/__mbstate_t.h>
|
||||||
#if defined _LIBC || defined _GLIBCPP_USE_WCHAR_T
|
#if defined _LIBC || defined _GLIBCPP_USE_WCHAR_T
|
||||||
# define __need_wint_t
|
# include <bits/types/wint_t.h>
|
||||||
#endif
|
#endif
|
||||||
#include <wchar.h>
|
|
||||||
typedef struct
|
typedef struct
|
||||||
{
|
{
|
||||||
__off_t __pos;
|
__off_t __pos;
|
||||||
|
@ -13,11 +13,12 @@
|
|||||||
#endif
|
#endif
|
||||||
#define __need_NULL
|
#define __need_NULL
|
||||||
#include <stddef.h>
|
#include <stddef.h>
|
||||||
#define __need_mbstate_t
|
|
||||||
|
#include <bits/types/__mbstate_t.h>
|
||||||
#if defined _LIBC || defined _GLIBCPP_USE_WCHAR_T
|
#if defined _LIBC || defined _GLIBCPP_USE_WCHAR_T
|
||||||
# define __need_wint_t
|
# include <bits/types/wint_t.h>
|
||||||
#endif
|
#endif
|
||||||
#include <wchar.h>
|
|
||||||
typedef struct
|
typedef struct
|
||||||
{
|
{
|
||||||
__off_t __pos;
|
__off_t __pos;
|
||||||
|
@ -22,7 +22,8 @@ subdir := wcsmbs
|
|||||||
|
|
||||||
include ../Makeconfig
|
include ../Makeconfig
|
||||||
|
|
||||||
headers := wchar.h bits/wchar.h bits/wchar2.h bits/wchar-ldbl.h uchar.h
|
headers := wchar.h bits/wchar.h bits/wchar2.h bits/wchar-ldbl.h uchar.h \
|
||||||
|
bits/types/__mbstate_t.h bits/types/mbstate_t.h bits/types/wint_t.h
|
||||||
|
|
||||||
routines := wcscat wcschr wcscmp wcscpy wcscspn wcsdup wcslen wcsncat \
|
routines := wcscat wcschr wcscmp wcscpy wcscspn wcsdup wcslen wcsncat \
|
||||||
wcsncmp wcsncpy wcspbrk wcsrchr wcsspn wcstok wcsstr wmemchr \
|
wcsncmp wcsncpy wcspbrk wcsrchr wcsspn wcstok wcsstr wmemchr \
|
||||||
|
23
wcsmbs/bits/types/__mbstate_t.h
Normal file
23
wcsmbs/bits/types/__mbstate_t.h
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
#ifndef ____mbstate_t_defined
|
||||||
|
#define ____mbstate_t_defined 1
|
||||||
|
|
||||||
|
/* Integral type unchanged by default argument promotions that can
|
||||||
|
hold any value corresponding to members of the extended character
|
||||||
|
set, as well as at least one value that does not correspond to any
|
||||||
|
member of the extended character set. */
|
||||||
|
#ifndef __WINT_TYPE__
|
||||||
|
# define __WINT_TYPE__ unsigned int
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Conversion state information. */
|
||||||
|
typedef struct
|
||||||
|
{
|
||||||
|
int __count;
|
||||||
|
union
|
||||||
|
{
|
||||||
|
__WINT_TYPE__ __wch;
|
||||||
|
char __wchb[4];
|
||||||
|
} __value; /* Value so far. */
|
||||||
|
} __mbstate_t;
|
||||||
|
|
||||||
|
#endif
|
8
wcsmbs/bits/types/mbstate_t.h
Normal file
8
wcsmbs/bits/types/mbstate_t.h
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
#ifndef __mbstate_t_defined
|
||||||
|
#define __mbstate_t_defined 1
|
||||||
|
|
||||||
|
#include <bits/types/__mbstate_t.h>
|
||||||
|
|
||||||
|
typedef __mbstate_t mbstate_t;
|
||||||
|
|
||||||
|
#endif
|
23
wcsmbs/bits/types/wint_t.h
Normal file
23
wcsmbs/bits/types/wint_t.h
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
#ifndef __wint_t_defined
|
||||||
|
#define __wint_t_defined 1
|
||||||
|
|
||||||
|
/* Some versions of stddef.h provide wint_t, even though neither the
|
||||||
|
C nor C++ standards, nor POSIX, specifies this. We assume that
|
||||||
|
stddef.h will define the macro _WINT_T if and only if it provides
|
||||||
|
wint_t, and conversely, that it will avoid providing wint_t if
|
||||||
|
_WINT_T is already defined. */
|
||||||
|
#ifndef _WINT_T
|
||||||
|
#define _WINT_T 1
|
||||||
|
|
||||||
|
/* Integral type unchanged by default argument promotions that can
|
||||||
|
hold any value corresponding to members of the extended character
|
||||||
|
set, as well as at least one value that does not correspond to any
|
||||||
|
member of the extended character set. */
|
||||||
|
#ifndef __WINT_TYPE__
|
||||||
|
# define __WINT_TYPE__ unsigned int
|
||||||
|
#endif
|
||||||
|
|
||||||
|
typedef __WINT_TYPE__ wint_t;
|
||||||
|
|
||||||
|
#endif /* _WINT_T */
|
||||||
|
#endif /* bits/types/wint_t.h */
|
@ -27,15 +27,8 @@
|
|||||||
|
|
||||||
#define __need_size_t
|
#define __need_size_t
|
||||||
#include <stddef.h>
|
#include <stddef.h>
|
||||||
#define __need_mbstate_t
|
|
||||||
#include <wchar.h>
|
|
||||||
|
|
||||||
#ifndef __mbstate_t_defined
|
|
||||||
/* Public type. */
|
|
||||||
typedef __mbstate_t mbstate_t;
|
|
||||||
# define __mbstate_t_defined 1
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
#include <bits/types/mbstate_t.h>
|
||||||
|
|
||||||
#if defined __GNUC__ && !defined __USE_ISOCXX11
|
#if defined __GNUC__ && !defined __USE_ISOCXX11
|
||||||
/* Define the 16-bit and 32-bit character types. Use the information
|
/* Define the 16-bit and 32-bit character types. Use the information
|
||||||
|
125
wcsmbs/wchar.h
125
wcsmbs/wchar.h
@ -21,83 +21,33 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef _WCHAR_H
|
#ifndef _WCHAR_H
|
||||||
|
#define _WCHAR_H 1
|
||||||
|
|
||||||
#if !defined __need_mbstate_t && !defined __need_wint_t
|
#define __GLIBC_INTERNAL_STARTING_HEADER_IMPLEMENTATION
|
||||||
# define _WCHAR_H 1
|
#include <bits/libc-header-start.h>
|
||||||
# define __GLIBC_INTERNAL_STARTING_HEADER_IMPLEMENTATION
|
|
||||||
# include <bits/libc-header-start.h>
|
#define __need_size_t
|
||||||
|
#define __need_wchar_t
|
||||||
|
#define __need_NULL
|
||||||
|
#include <stddef.h>
|
||||||
|
|
||||||
|
#define __need___va_list
|
||||||
|
#include <stdarg.h>
|
||||||
|
|
||||||
|
#include <bits/wchar.h>
|
||||||
|
#include <bits/types/wint_t.h>
|
||||||
|
#include <bits/types/mbstate_t.h>
|
||||||
|
#include <bits/types/__FILE.h>
|
||||||
|
|
||||||
|
#if defined __USE_UNIX98 || defined __USE_XOPEN2K
|
||||||
|
# include <bits/types/FILE.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef _WCHAR_H
|
|
||||||
/* Get FILE definition. */
|
|
||||||
# define __need___FILE
|
|
||||||
# if defined __USE_UNIX98 || defined __USE_XOPEN2K
|
|
||||||
# define __need_FILE
|
|
||||||
# endif
|
|
||||||
# include <stdio.h>
|
|
||||||
/* Get va_list definition. */
|
|
||||||
# define __need___va_list
|
|
||||||
# include <stdarg.h>
|
|
||||||
|
|
||||||
# include <bits/wchar.h>
|
|
||||||
|
|
||||||
/* Get size_t, wchar_t, wint_t and NULL from <stddef.h>. */
|
|
||||||
# define __need_size_t
|
|
||||||
# define __need_wchar_t
|
|
||||||
# define __need_NULL
|
|
||||||
#endif
|
|
||||||
#if defined _WCHAR_H || defined __need_wint_t || !defined __WINT_TYPE__
|
|
||||||
# undef __need_wint_t
|
|
||||||
# define __need_wint_t
|
|
||||||
# include <stddef.h>
|
|
||||||
|
|
||||||
/* We try to get wint_t from <stddef.h>, but not all GCC versions define it
|
|
||||||
there. So define it ourselves if it remains undefined. */
|
|
||||||
# ifndef _WINT_T
|
|
||||||
/* Integral type unchanged by default argument promotions that can
|
|
||||||
hold any value corresponding to members of the extended character
|
|
||||||
set, as well as at least one value that does not correspond to any
|
|
||||||
member of the extended character set. */
|
|
||||||
# define _WINT_T
|
|
||||||
typedef unsigned int wint_t;
|
|
||||||
# endif
|
|
||||||
|
|
||||||
/* Tell the caller that we provide correct C++ prototypes. */
|
/* Tell the caller that we provide correct C++ prototypes. */
|
||||||
# if defined __cplusplus && __GNUC_PREREQ (4, 4)
|
#if defined __cplusplus && __GNUC_PREREQ (4, 4)
|
||||||
# define __CORRECT_ISO_CPP_WCHAR_H_PROTO
|
# define __CORRECT_ISO_CPP_WCHAR_H_PROTO
|
||||||
# endif
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if (defined _WCHAR_H || defined __need_mbstate_t) && !defined ____mbstate_t_defined
|
|
||||||
# define ____mbstate_t_defined 1
|
|
||||||
/* Conversion state information. */
|
|
||||||
typedef struct
|
|
||||||
{
|
|
||||||
int __count;
|
|
||||||
union
|
|
||||||
{
|
|
||||||
# ifdef __WINT_TYPE__
|
|
||||||
__WINT_TYPE__ __wch;
|
|
||||||
# else
|
|
||||||
wint_t __wch;
|
|
||||||
# endif
|
|
||||||
char __wchb[4];
|
|
||||||
} __value; /* Value so far. */
|
|
||||||
} __mbstate_t;
|
|
||||||
#endif
|
|
||||||
#undef __need_mbstate_t
|
|
||||||
|
|
||||||
|
|
||||||
/* The rest of the file is only used if used if __need_mbstate_t is not
|
|
||||||
defined. */
|
|
||||||
#ifdef _WCHAR_H
|
|
||||||
|
|
||||||
# ifndef __mbstate_t_defined
|
|
||||||
/* Public type. */
|
|
||||||
typedef __mbstate_t mbstate_t;
|
|
||||||
# define __mbstate_t_defined 1
|
|
||||||
# endif
|
|
||||||
|
|
||||||
#ifndef WCHAR_MIN
|
#ifndef WCHAR_MIN
|
||||||
/* These constants might also be defined in <inttypes.h>. */
|
/* These constants might also be defined in <inttypes.h>. */
|
||||||
# define WCHAR_MIN __WCHAR_MIN
|
# define WCHAR_MIN __WCHAR_MIN
|
||||||
@ -108,13 +58,18 @@ typedef __mbstate_t mbstate_t;
|
|||||||
# define WEOF (0xffffffffu)
|
# define WEOF (0xffffffffu)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* For XPG4 compliance we have to define the stuff from <wctype.h> here
|
/* All versions of XPG prior to the publication of ISO C99 required
|
||||||
as well. */
|
the bulk of <wctype.h>'s declarations to appear in this header
|
||||||
#if defined __USE_XOPEN && !defined __USE_UNIX98
|
(because <wctype.h> did not exist prior to C99). In POSIX.1-2001
|
||||||
# include <wctype.h>
|
those declarations were marked as XSI extensions; in -2008 they
|
||||||
|
were additionally marked as obsolescent. _GNU_SOURCE mode
|
||||||
|
anticipates the removal of these declarations in the next revision
|
||||||
|
of POSIX. */
|
||||||
|
#if (defined __USE_XOPEN && !defined __USE_GNU \
|
||||||
|
&& !(defined __USE_XOPEN2K && !defined __USE_XOPEN2KXSI))
|
||||||
|
# include <bits/wctype-wchar.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
__BEGIN_DECLS
|
__BEGIN_DECLS
|
||||||
|
|
||||||
/* This incomplete type is defined in <time.h> but needed here because
|
/* This incomplete type is defined in <time.h> but needed here because
|
||||||
@ -823,17 +778,6 @@ extern size_t wcsftime_l (wchar_t *__restrict __s, size_t __maxsize,
|
|||||||
__locale_t __loc) __THROW;
|
__locale_t __loc) __THROW;
|
||||||
# endif
|
# endif
|
||||||
|
|
||||||
/* The X/Open standard demands that most of the functions defined in
|
|
||||||
the <wctype.h> header must also appear here. This is probably
|
|
||||||
because some X/Open members wrote their implementation before the
|
|
||||||
ISO C standard was published and introduced the better solution.
|
|
||||||
We have to provide these definitions for compliance reasons but we
|
|
||||||
do this nonsense only if really necessary. */
|
|
||||||
#if defined __USE_UNIX98 && !defined __USE_GNU
|
|
||||||
# define __need_iswxxx
|
|
||||||
# include <wctype.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Define some macros helping to catch buffer overflows. */
|
/* Define some macros helping to catch buffer overflows. */
|
||||||
#if __USE_FORTIFY_LEVEL > 0 && defined __fortify_function
|
#if __USE_FORTIFY_LEVEL > 0 && defined __fortify_function
|
||||||
# include <bits/wchar2.h>
|
# include <bits/wchar2.h>
|
||||||
@ -845,11 +789,4 @@ extern size_t wcsftime_l (wchar_t *__restrict __s, size_t __maxsize,
|
|||||||
|
|
||||||
__END_DECLS
|
__END_DECLS
|
||||||
|
|
||||||
#endif /* _WCHAR_H defined */
|
|
||||||
|
|
||||||
#endif /* wchar.h */
|
#endif /* wchar.h */
|
||||||
|
|
||||||
/* Undefine all __need_* constants in case we are included to get those
|
|
||||||
constants but the whole file was already read. */
|
|
||||||
#undef __need_mbstate_t
|
|
||||||
#undef __need_wint_t
|
|
||||||
|
@ -22,7 +22,7 @@ subdir := wctype
|
|||||||
|
|
||||||
include ../Makeconfig
|
include ../Makeconfig
|
||||||
|
|
||||||
headers := wctype.h
|
headers := wctype.h bits/wctype-wchar.h
|
||||||
routines := wcfuncs wctype iswctype wctrans towctrans \
|
routines := wcfuncs wctype iswctype wctrans towctrans \
|
||||||
wcfuncs_l wctype_l iswctype_l wctrans_l towctrans_l
|
wcfuncs_l wctype_l iswctype_l wctrans_l towctrans_l
|
||||||
|
|
||||||
|
173
wctype/bits/wctype-wchar.h
Normal file
173
wctype/bits/wctype-wchar.h
Normal file
@ -0,0 +1,173 @@
|
|||||||
|
/* Copyright (C) 1996-2016 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
|
||||||
|
modify it under the terms of the GNU Lesser General Public
|
||||||
|
License as published by the Free Software Foundation; either
|
||||||
|
version 2.1 of the License, or (at your option) any later version.
|
||||||
|
|
||||||
|
The GNU C Library 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
|
||||||
|
Lesser General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU Lesser General Public
|
||||||
|
License along with the GNU C Library; if not, see
|
||||||
|
<http://www.gnu.org/licenses/>. */
|
||||||
|
|
||||||
|
/*
|
||||||
|
* ISO C99 Standard: 7.25
|
||||||
|
* Wide character classification and mapping utilities <wctype.h>
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef _BITS_WCTYPE_WCHAR_H
|
||||||
|
#define _BITS_WCTYPE_WCHAR_H 1
|
||||||
|
|
||||||
|
#if !defined _WCTYPE_H && !defined _WCHAR_H
|
||||||
|
#error "Never include <bits/wctype-wchar.h> directly; include <wctype.h> or <wchar.h> instead."
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include <bits/types.h>
|
||||||
|
#include <bits/types/wint_t.h>
|
||||||
|
|
||||||
|
/* The definitions in this header are specified to appear in <wctype.h>
|
||||||
|
in ISO C99, but in <wchar.h> in Unix98. _GNU_SOURCE follows C99. */
|
||||||
|
|
||||||
|
/* Scalar type that can hold values which represent locale-specific
|
||||||
|
character classifications. */
|
||||||
|
typedef unsigned long int wctype_t;
|
||||||
|
|
||||||
|
# ifndef _ISwbit
|
||||||
|
/* The characteristics are stored always in network byte order (big
|
||||||
|
endian). We define the bit value interpretations here dependent on the
|
||||||
|
machine's byte order. */
|
||||||
|
|
||||||
|
# include <endian.h>
|
||||||
|
# if __BYTE_ORDER == __BIG_ENDIAN
|
||||||
|
# define _ISwbit(bit) (1 << (bit))
|
||||||
|
# else /* __BYTE_ORDER == __LITTLE_ENDIAN */
|
||||||
|
# define _ISwbit(bit) \
|
||||||
|
((bit) < 8 ? (int) ((1UL << (bit)) << 24) \
|
||||||
|
: ((bit) < 16 ? (int) ((1UL << (bit)) << 8) \
|
||||||
|
: ((bit) < 24 ? (int) ((1UL << (bit)) >> 8) \
|
||||||
|
: (int) ((1UL << (bit)) >> 24))))
|
||||||
|
# endif
|
||||||
|
|
||||||
|
enum
|
||||||
|
{
|
||||||
|
__ISwupper = 0, /* UPPERCASE. */
|
||||||
|
__ISwlower = 1, /* lowercase. */
|
||||||
|
__ISwalpha = 2, /* Alphabetic. */
|
||||||
|
__ISwdigit = 3, /* Numeric. */
|
||||||
|
__ISwxdigit = 4, /* Hexadecimal numeric. */
|
||||||
|
__ISwspace = 5, /* Whitespace. */
|
||||||
|
__ISwprint = 6, /* Printing. */
|
||||||
|
__ISwgraph = 7, /* Graphical. */
|
||||||
|
__ISwblank = 8, /* Blank (usually SPC and TAB). */
|
||||||
|
__ISwcntrl = 9, /* Control character. */
|
||||||
|
__ISwpunct = 10, /* Punctuation. */
|
||||||
|
__ISwalnum = 11, /* Alphanumeric. */
|
||||||
|
|
||||||
|
_ISwupper = _ISwbit (__ISwupper), /* UPPERCASE. */
|
||||||
|
_ISwlower = _ISwbit (__ISwlower), /* lowercase. */
|
||||||
|
_ISwalpha = _ISwbit (__ISwalpha), /* Alphabetic. */
|
||||||
|
_ISwdigit = _ISwbit (__ISwdigit), /* Numeric. */
|
||||||
|
_ISwxdigit = _ISwbit (__ISwxdigit), /* Hexadecimal numeric. */
|
||||||
|
_ISwspace = _ISwbit (__ISwspace), /* Whitespace. */
|
||||||
|
_ISwprint = _ISwbit (__ISwprint), /* Printing. */
|
||||||
|
_ISwgraph = _ISwbit (__ISwgraph), /* Graphical. */
|
||||||
|
_ISwblank = _ISwbit (__ISwblank), /* Blank (usually SPC and TAB). */
|
||||||
|
_ISwcntrl = _ISwbit (__ISwcntrl), /* Control character. */
|
||||||
|
_ISwpunct = _ISwbit (__ISwpunct), /* Punctuation. */
|
||||||
|
_ISwalnum = _ISwbit (__ISwalnum) /* Alphanumeric. */
|
||||||
|
};
|
||||||
|
# endif /* Not _ISwbit */
|
||||||
|
|
||||||
|
|
||||||
|
__BEGIN_DECLS
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Wide-character classification functions: 7.15.2.1.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* Test for any wide character for which `iswalpha' or `iswdigit' is
|
||||||
|
true. */
|
||||||
|
extern int iswalnum (wint_t __wc) __THROW;
|
||||||
|
|
||||||
|
/* Test for any wide character for which `iswupper' or 'iswlower' is
|
||||||
|
true, or any wide character that is one of a locale-specific set of
|
||||||
|
wide-characters for which none of `iswcntrl', `iswdigit',
|
||||||
|
`iswpunct', or `iswspace' is true. */
|
||||||
|
extern int iswalpha (wint_t __wc) __THROW;
|
||||||
|
|
||||||
|
/* Test for any control wide character. */
|
||||||
|
extern int iswcntrl (wint_t __wc) __THROW;
|
||||||
|
|
||||||
|
/* Test for any wide character that corresponds to a decimal-digit
|
||||||
|
character. */
|
||||||
|
extern int iswdigit (wint_t __wc) __THROW;
|
||||||
|
|
||||||
|
/* Test for any wide character for which `iswprint' is true and
|
||||||
|
`iswspace' is false. */
|
||||||
|
extern int iswgraph (wint_t __wc) __THROW;
|
||||||
|
|
||||||
|
/* Test for any wide character that corresponds to a lowercase letter
|
||||||
|
or is one of a locale-specific set of wide characters for which
|
||||||
|
none of `iswcntrl', `iswdigit', `iswpunct', or `iswspace' is true. */
|
||||||
|
extern int iswlower (wint_t __wc) __THROW;
|
||||||
|
|
||||||
|
/* Test for any printing wide character. */
|
||||||
|
extern int iswprint (wint_t __wc) __THROW;
|
||||||
|
|
||||||
|
/* Test for any printing wide character that is one of a
|
||||||
|
locale-specific et of wide characters for which neither `iswspace'
|
||||||
|
nor `iswalnum' is true. */
|
||||||
|
extern int iswpunct (wint_t __wc) __THROW;
|
||||||
|
|
||||||
|
/* Test for any wide character that corresponds to a locale-specific
|
||||||
|
set of wide characters for which none of `iswalnum', `iswgraph', or
|
||||||
|
`iswpunct' is true. */
|
||||||
|
extern int iswspace (wint_t __wc) __THROW;
|
||||||
|
|
||||||
|
/* Test for any wide character that corresponds to an uppercase letter
|
||||||
|
or is one of a locale-specific set of wide character for which none
|
||||||
|
of `iswcntrl', `iswdigit', `iswpunct', or `iswspace' is true. */
|
||||||
|
extern int iswupper (wint_t __wc) __THROW;
|
||||||
|
|
||||||
|
/* Test for any wide character that corresponds to a hexadecimal-digit
|
||||||
|
character equivalent to that performed be the functions described
|
||||||
|
in the previous subclause. */
|
||||||
|
extern int iswxdigit (wint_t __wc) __THROW;
|
||||||
|
|
||||||
|
/* Test for any wide character that corresponds to a standard blank
|
||||||
|
wide character or a locale-specific set of wide characters for
|
||||||
|
which `iswalnum' is false. */
|
||||||
|
# ifdef __USE_ISOC99
|
||||||
|
extern int iswblank (wint_t __wc) __THROW;
|
||||||
|
# endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Extensible wide-character classification functions: 7.15.2.2.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* Construct value that describes a class of wide characters identified
|
||||||
|
by the string argument PROPERTY. */
|
||||||
|
extern wctype_t wctype (const char *__property) __THROW;
|
||||||
|
|
||||||
|
/* Determine whether the wide-character WC has the property described by
|
||||||
|
DESC. */
|
||||||
|
extern int iswctype (wint_t __wc, wctype_t __desc) __THROW;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Wide-character case-mapping functions: 7.15.3.1.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* Converts an uppercase letter to the corresponding lowercase letter. */
|
||||||
|
extern wint_t towlower (wint_t __wc) __THROW;
|
||||||
|
|
||||||
|
/* Converts an lowercase letter to the corresponding uppercase letter. */
|
||||||
|
extern wint_t towupper (wint_t __wc) __THROW;
|
||||||
|
|
||||||
|
__END_DECLS
|
||||||
|
|
||||||
|
#endif /* bits/wctype-wchar.h. */
|
179
wctype/wctype.h
179
wctype/wctype.h
@ -21,179 +21,21 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef _WCTYPE_H
|
#ifndef _WCTYPE_H
|
||||||
|
#define _WCTYPE_H 1
|
||||||
|
|
||||||
#include <features.h>
|
#include <features.h>
|
||||||
#include <bits/types.h>
|
#include <bits/types.h>
|
||||||
|
#include <bits/types/wint_t.h>
|
||||||
#ifndef __need_iswxxx
|
|
||||||
# define _WCTYPE_H 1
|
|
||||||
|
|
||||||
/* Get wint_t from <wchar.h>. */
|
|
||||||
# define __need_wint_t
|
|
||||||
# include <wchar.h>
|
|
||||||
|
|
||||||
/* Constant expression of type `wint_t' whose value does not correspond
|
/* Constant expression of type `wint_t' whose value does not correspond
|
||||||
to any member of the extended character set. */
|
to any member of the extended character set. */
|
||||||
# ifndef WEOF
|
#ifndef WEOF
|
||||||
# define WEOF (0xffffffffu)
|
# define WEOF (0xffffffffu)
|
||||||
# endif
|
|
||||||
#endif
|
#endif
|
||||||
#undef __need_iswxxx
|
|
||||||
|
|
||||||
|
/* Some definitions from this header also appear in <wchar.h> in
|
||||||
/* The following part is also used in the <wcsmbs.h> header when compiled
|
Unix98 mode. */
|
||||||
in the Unix98 compatibility mode. */
|
#include <bits/wctype-wchar.h>
|
||||||
#ifndef __iswxxx_defined
|
|
||||||
# define __iswxxx_defined 1
|
|
||||||
|
|
||||||
/* Scalar type that can hold values which represent locale-specific
|
|
||||||
character classifications. */
|
|
||||||
typedef unsigned long int wctype_t;
|
|
||||||
|
|
||||||
# ifndef _ISwbit
|
|
||||||
/* The characteristics are stored always in network byte order (big
|
|
||||||
endian). We define the bit value interpretations here dependent on the
|
|
||||||
machine's byte order. */
|
|
||||||
|
|
||||||
# include <endian.h>
|
|
||||||
# if __BYTE_ORDER == __BIG_ENDIAN
|
|
||||||
# define _ISwbit(bit) (1 << (bit))
|
|
||||||
# else /* __BYTE_ORDER == __LITTLE_ENDIAN */
|
|
||||||
# define _ISwbit(bit) \
|
|
||||||
((bit) < 8 ? (int) ((1UL << (bit)) << 24) \
|
|
||||||
: ((bit) < 16 ? (int) ((1UL << (bit)) << 8) \
|
|
||||||
: ((bit) < 24 ? (int) ((1UL << (bit)) >> 8) \
|
|
||||||
: (int) ((1UL << (bit)) >> 24))))
|
|
||||||
# endif
|
|
||||||
|
|
||||||
enum
|
|
||||||
{
|
|
||||||
__ISwupper = 0, /* UPPERCASE. */
|
|
||||||
__ISwlower = 1, /* lowercase. */
|
|
||||||
__ISwalpha = 2, /* Alphabetic. */
|
|
||||||
__ISwdigit = 3, /* Numeric. */
|
|
||||||
__ISwxdigit = 4, /* Hexadecimal numeric. */
|
|
||||||
__ISwspace = 5, /* Whitespace. */
|
|
||||||
__ISwprint = 6, /* Printing. */
|
|
||||||
__ISwgraph = 7, /* Graphical. */
|
|
||||||
__ISwblank = 8, /* Blank (usually SPC and TAB). */
|
|
||||||
__ISwcntrl = 9, /* Control character. */
|
|
||||||
__ISwpunct = 10, /* Punctuation. */
|
|
||||||
__ISwalnum = 11, /* Alphanumeric. */
|
|
||||||
|
|
||||||
_ISwupper = _ISwbit (__ISwupper), /* UPPERCASE. */
|
|
||||||
_ISwlower = _ISwbit (__ISwlower), /* lowercase. */
|
|
||||||
_ISwalpha = _ISwbit (__ISwalpha), /* Alphabetic. */
|
|
||||||
_ISwdigit = _ISwbit (__ISwdigit), /* Numeric. */
|
|
||||||
_ISwxdigit = _ISwbit (__ISwxdigit), /* Hexadecimal numeric. */
|
|
||||||
_ISwspace = _ISwbit (__ISwspace), /* Whitespace. */
|
|
||||||
_ISwprint = _ISwbit (__ISwprint), /* Printing. */
|
|
||||||
_ISwgraph = _ISwbit (__ISwgraph), /* Graphical. */
|
|
||||||
_ISwblank = _ISwbit (__ISwblank), /* Blank (usually SPC and TAB). */
|
|
||||||
_ISwcntrl = _ISwbit (__ISwcntrl), /* Control character. */
|
|
||||||
_ISwpunct = _ISwbit (__ISwpunct), /* Punctuation. */
|
|
||||||
_ISwalnum = _ISwbit (__ISwalnum) /* Alphanumeric. */
|
|
||||||
};
|
|
||||||
# endif /* Not _ISwbit */
|
|
||||||
|
|
||||||
|
|
||||||
__BEGIN_DECLS
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Wide-character classification functions: 7.15.2.1.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* Test for any wide character for which `iswalpha' or `iswdigit' is
|
|
||||||
true. */
|
|
||||||
extern int iswalnum (wint_t __wc) __THROW;
|
|
||||||
|
|
||||||
/* Test for any wide character for which `iswupper' or 'iswlower' is
|
|
||||||
true, or any wide character that is one of a locale-specific set of
|
|
||||||
wide-characters for which none of `iswcntrl', `iswdigit',
|
|
||||||
`iswpunct', or `iswspace' is true. */
|
|
||||||
extern int iswalpha (wint_t __wc) __THROW;
|
|
||||||
|
|
||||||
/* Test for any control wide character. */
|
|
||||||
extern int iswcntrl (wint_t __wc) __THROW;
|
|
||||||
|
|
||||||
/* Test for any wide character that corresponds to a decimal-digit
|
|
||||||
character. */
|
|
||||||
extern int iswdigit (wint_t __wc) __THROW;
|
|
||||||
|
|
||||||
/* Test for any wide character for which `iswprint' is true and
|
|
||||||
`iswspace' is false. */
|
|
||||||
extern int iswgraph (wint_t __wc) __THROW;
|
|
||||||
|
|
||||||
/* Test for any wide character that corresponds to a lowercase letter
|
|
||||||
or is one of a locale-specific set of wide characters for which
|
|
||||||
none of `iswcntrl', `iswdigit', `iswpunct', or `iswspace' is true. */
|
|
||||||
extern int iswlower (wint_t __wc) __THROW;
|
|
||||||
|
|
||||||
/* Test for any printing wide character. */
|
|
||||||
extern int iswprint (wint_t __wc) __THROW;
|
|
||||||
|
|
||||||
/* Test for any printing wide character that is one of a
|
|
||||||
locale-specific et of wide characters for which neither `iswspace'
|
|
||||||
nor `iswalnum' is true. */
|
|
||||||
extern int iswpunct (wint_t __wc) __THROW;
|
|
||||||
|
|
||||||
/* Test for any wide character that corresponds to a locale-specific
|
|
||||||
set of wide characters for which none of `iswalnum', `iswgraph', or
|
|
||||||
`iswpunct' is true. */
|
|
||||||
extern int iswspace (wint_t __wc) __THROW;
|
|
||||||
|
|
||||||
/* Test for any wide character that corresponds to an uppercase letter
|
|
||||||
or is one of a locale-specific set of wide character for which none
|
|
||||||
of `iswcntrl', `iswdigit', `iswpunct', or `iswspace' is true. */
|
|
||||||
extern int iswupper (wint_t __wc) __THROW;
|
|
||||||
|
|
||||||
/* Test for any wide character that corresponds to a hexadecimal-digit
|
|
||||||
character equivalent to that performed be the functions described
|
|
||||||
in the previous subclause. */
|
|
||||||
extern int iswxdigit (wint_t __wc) __THROW;
|
|
||||||
|
|
||||||
/* Test for any wide character that corresponds to a standard blank
|
|
||||||
wide character or a locale-specific set of wide characters for
|
|
||||||
which `iswalnum' is false. */
|
|
||||||
# ifdef __USE_ISOC99
|
|
||||||
extern int iswblank (wint_t __wc) __THROW;
|
|
||||||
# endif
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Extensible wide-character classification functions: 7.15.2.2.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* Construct value that describes a class of wide characters identified
|
|
||||||
by the string argument PROPERTY. */
|
|
||||||
extern wctype_t wctype (const char *__property) __THROW;
|
|
||||||
|
|
||||||
/* Determine whether the wide-character WC has the property described by
|
|
||||||
DESC. */
|
|
||||||
extern int iswctype (wint_t __wc, wctype_t __desc) __THROW;
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Wide-character case-mapping functions: 7.15.3.1.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* Scalar type that can hold values which represent locale-specific
|
|
||||||
character mappings. */
|
|
||||||
typedef const __int32_t *wctrans_t;
|
|
||||||
|
|
||||||
/* Converts an uppercase letter to the corresponding lowercase letter. */
|
|
||||||
extern wint_t towlower (wint_t __wc) __THROW;
|
|
||||||
|
|
||||||
/* Converts an lowercase letter to the corresponding uppercase letter. */
|
|
||||||
extern wint_t towupper (wint_t __wc) __THROW;
|
|
||||||
|
|
||||||
__END_DECLS
|
|
||||||
|
|
||||||
#endif /* need iswxxx. */
|
|
||||||
|
|
||||||
|
|
||||||
/* The remaining definitions and declarations must not appear in the
|
|
||||||
<wchar.h> header. */
|
|
||||||
#ifdef _WCTYPE_H
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Extensible wide-character mapping functions: 7.15.3.2.
|
* Extensible wide-character mapping functions: 7.15.3.2.
|
||||||
@ -201,6 +43,10 @@ __END_DECLS
|
|||||||
|
|
||||||
__BEGIN_DECLS
|
__BEGIN_DECLS
|
||||||
|
|
||||||
|
/* Scalar type that can hold values which represent locale-specific
|
||||||
|
character mappings. */
|
||||||
|
typedef const __int32_t *wctrans_t;
|
||||||
|
|
||||||
/* Construct value that describes a mapping between wide characters
|
/* Construct value that describes a mapping between wide characters
|
||||||
identified by the string argument PROPERTY. */
|
identified by the string argument PROPERTY. */
|
||||||
extern wctrans_t wctrans (const char *__property) __THROW;
|
extern wctrans_t wctrans (const char *__property) __THROW;
|
||||||
@ -276,7 +122,6 @@ extern wctype_t wctype_l (const char *__property, __locale_t __locale)
|
|||||||
extern int iswctype_l (wint_t __wc, wctype_t __desc, __locale_t __locale)
|
extern int iswctype_l (wint_t __wc, wctype_t __desc, __locale_t __locale)
|
||||||
__THROW;
|
__THROW;
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Wide-character case-mapping functions.
|
* Wide-character case-mapping functions.
|
||||||
*/
|
*/
|
||||||
@ -300,6 +145,4 @@ extern wint_t towctrans_l (wint_t __wc, wctrans_t __desc,
|
|||||||
|
|
||||||
__END_DECLS
|
__END_DECLS
|
||||||
|
|
||||||
#endif /* __WCTYPE_H defined. */
|
|
||||||
|
|
||||||
#endif /* wctype.h */
|
#endif /* wctype.h */
|
||||||
|
Loading…
Reference in New Issue
Block a user