>From fbf37f7790fe49f3c0cc8bd8bb10dcba38396a53 Mon Sep 17 00:00:00 2001 From: Bruno Haible Date: Sat, 25 Jan 2020 22:51:04 +0100 Subject: [PATCH 01/25] uchar: Preparations for modules c32isalnum, ..., c32isxdigit. * lib/uchar.in.h (c32isalnum, c32isalpha, c32isblank, c32iscntrl, c32isdigit, c32isgraph, c32islower, c32isprint, c32ispunct, c32isspace, c32isupper, c32isxdigit): New declarations. * m4/uchar.m4 (gl_UCHAR_H_DEFAULTS): Initialize GNULIB_C32ISALNUM, GNULIB_C32ISALPHA, GNULIB_C32ISBLANK, GNULIB_C32ISCNTRL, GNULIB_C32ISDIGIT, GNULIB_C32ISGRAPH, GNULIB_C32ISLOWER, GNULIB_C32ISPRINT, GNULIB_C32ISPUNCT, GNULIB_C32ISSPACE, GNULIB_C32ISUPPER, GNULIB_C32ISXDIGIT. * modules/uchar (Makefile.am): Substitute GNULIB_C32ISALNUM, GNULIB_C32ISALPHA, GNULIB_C32ISBLANK, GNULIB_C32ISCNTRL, GNULIB_C32ISDIGIT, GNULIB_C32ISGRAPH, GNULIB_C32ISLOWER, GNULIB_C32ISPRINT, GNULIB_C32ISPUNCT, GNULIB_C32ISSPACE, GNULIB_C32ISUPPER, GNULIB_C32ISXDIGIT. * tests/test-uchar-c++.cc: Test the signature of c32isalnum, c32isalpha, c32isblank, c32iscntrl, c32isdigit, c32isgraph, c32islower, c32isprint, c32ispunct, c32isspace, c32isupper, c32isxdigit. --- ChangeLog | 20 ++++++++++++++++ lib/uchar.in.h | 63 +++++++++++++++++++++++++++++++++++++++++++++++++ m4/uchar.m4 | 14 ++++++++++- modules/uchar | 12 ++++++++++ tests/test-uchar-c++.cc | 48 +++++++++++++++++++++++++++++++++++++ 5 files changed, 156 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 28b3980..a41e8ac 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,25 @@ 2020-01-25 Bruno Haible + uchar: Preparations for modules c32isalnum, ..., c32isxdigit. + * lib/uchar.in.h (c32isalnum, c32isalpha, c32isblank, c32iscntrl, + c32isdigit, c32isgraph, c32islower, c32isprint, c32ispunct, c32isspace, + c32isupper, c32isxdigit): New declarations. + * m4/uchar.m4 (gl_UCHAR_H_DEFAULTS): Initialize GNULIB_C32ISALNUM, + GNULIB_C32ISALPHA, GNULIB_C32ISBLANK, GNULIB_C32ISCNTRL, + GNULIB_C32ISDIGIT, GNULIB_C32ISGRAPH, GNULIB_C32ISLOWER, + GNULIB_C32ISPRINT, GNULIB_C32ISPUNCT, GNULIB_C32ISSPACE, + GNULIB_C32ISUPPER, GNULIB_C32ISXDIGIT. + * modules/uchar (Makefile.am): Substitute GNULIB_C32ISALNUM, + GNULIB_C32ISALPHA, GNULIB_C32ISBLANK, GNULIB_C32ISCNTRL, + GNULIB_C32ISDIGIT, GNULIB_C32ISGRAPH, GNULIB_C32ISLOWER, + GNULIB_C32ISPRINT, GNULIB_C32ISPUNCT, GNULIB_C32ISSPACE, + GNULIB_C32ISUPPER, GNULIB_C32ISXDIGIT. + * tests/test-uchar-c++.cc: Test the signature of c32isalnum, c32isalpha, + c32isblank, c32iscntrl, c32isdigit, c32isgraph, c32islower, c32isprint, + c32ispunct, c32isspace, c32isupper, c32isxdigit. + +2020-01-25 Bruno Haible + mbchar, wctype: Use the corrected iswxdigit function. * modules/mbchar (Depends-on): Add iswxdigit. * modules/wctype (Depends-on): Likewise. diff --git a/lib/uchar.in.h b/lib/uchar.in.h index 5cf573d..9c76cc9 100644 --- a/lib/uchar.in.h +++ b/lib/uchar.in.h @@ -68,6 +68,69 @@ _GL_CXXALIASWARN (btoc32); #endif +/* Test a specific property of a 32-bit wide character. */ +#if @GNULIB_C32ISALNUM@ +_GL_FUNCDECL_SYS (c32isalnum, int, (wint_t wc)); +_GL_CXXALIAS_SYS (c32isalnum, int, (wint_t wc)); +_GL_CXXALIASWARN (c32isalnum); +#endif +#if @GNULIB_C32ISALPHA@ +_GL_FUNCDECL_SYS (c32isalpha, int, (wint_t wc)); +_GL_CXXALIAS_SYS (c32isalpha, int, (wint_t wc)); +_GL_CXXALIASWARN (c32isalpha); +#endif +#if @GNULIB_C32ISBLANK@ +_GL_FUNCDECL_SYS (c32isblank, int, (wint_t wc)); +_GL_CXXALIAS_SYS (c32isblank, int, (wint_t wc)); +_GL_CXXALIASWARN (c32isblank); +#endif +#if @GNULIB_C32ISCNTRL@ +_GL_FUNCDECL_SYS (c32iscntrl, int, (wint_t wc)); +_GL_CXXALIAS_SYS (c32iscntrl, int, (wint_t wc)); +_GL_CXXALIASWARN (c32iscntrl); +#endif +#if @GNULIB_C32ISDIGIT@ +_GL_FUNCDECL_SYS (c32isdigit, int, (wint_t wc)); +_GL_CXXALIAS_SYS (c32isdigit, int, (wint_t wc)); +_GL_CXXALIASWARN (c32isdigit); +#endif +#if @GNULIB_C32ISGRAPH@ +_GL_FUNCDECL_SYS (c32isgraph, int, (wint_t wc)); +_GL_CXXALIAS_SYS (c32isgraph, int, (wint_t wc)); +_GL_CXXALIASWARN (c32isgraph); +#endif +#if @GNULIB_C32ISLOWER@ +_GL_FUNCDECL_SYS (c32islower, int, (wint_t wc)); +_GL_CXXALIAS_SYS (c32islower, int, (wint_t wc)); +_GL_CXXALIASWARN (c32islower); +#endif +#if @GNULIB_C32ISPRINT@ +_GL_FUNCDECL_SYS (c32isprint, int, (wint_t wc)); +_GL_CXXALIAS_SYS (c32isprint, int, (wint_t wc)); +_GL_CXXALIASWARN (c32isprint); +#endif +#if @GNULIB_C32ISPUNCT@ +_GL_FUNCDECL_SYS (c32ispunct, int, (wint_t wc)); +_GL_CXXALIAS_SYS (c32ispunct, int, (wint_t wc)); +_GL_CXXALIASWARN (c32ispunct); +#endif +#if @GNULIB_C32ISSPACE@ +_GL_FUNCDECL_SYS (c32isspace, int, (wint_t wc)); +_GL_CXXALIAS_SYS (c32isspace, int, (wint_t wc)); +_GL_CXXALIASWARN (c32isspace); +#endif +#if @GNULIB_C32ISUPPER@ +_GL_FUNCDECL_SYS (c32isupper, int, (wint_t wc)); +_GL_CXXALIAS_SYS (c32isupper, int, (wint_t wc)); +_GL_CXXALIASWARN (c32isupper); +#endif +#if @GNULIB_C32ISXDIGIT@ +_GL_FUNCDECL_SYS (c32isxdigit, int, (wint_t wc)); +_GL_CXXALIAS_SYS (c32isxdigit, int, (wint_t wc)); +_GL_CXXALIASWARN (c32isxdigit); +#endif + + /* Converts a 32-bit wide character to a multibyte character. */ #if @GNULIB_C32RTOMB@ # if @REPLACE_C32RTOMB@ diff --git a/m4/uchar.m4 b/m4/uchar.m4 index b5edc8c..63d8b13 100644 --- a/m4/uchar.m4 +++ b/m4/uchar.m4 @@ -1,4 +1,4 @@ -# uchar.m4 serial 12 +# uchar.m4 serial 13 dnl Copyright (C) 2019-2020 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, @@ -48,6 +48,18 @@ AC_DEFUN([gl_UCHAR_MODULE_INDICATOR], AC_DEFUN([gl_UCHAR_H_DEFAULTS], [ GNULIB_BTOC32=0; AC_SUBST([GNULIB_BTOC32]) + GNULIB_C32ISALNUM=0; AC_SUBST([GNULIB_C32ISALNUM]) + GNULIB_C32ISALPHA=0; AC_SUBST([GNULIB_C32ISALPHA]) + GNULIB_C32ISBLANK=0; AC_SUBST([GNULIB_C32ISBLANK]) + GNULIB_C32ISCNTRL=0; AC_SUBST([GNULIB_C32ISCNTRL]) + GNULIB_C32ISDIGIT=0; AC_SUBST([GNULIB_C32ISDIGIT]) + GNULIB_C32ISGRAPH=0; AC_SUBST([GNULIB_C32ISGRAPH]) + GNULIB_C32ISLOWER=0; AC_SUBST([GNULIB_C32ISLOWER]) + GNULIB_C32ISPRINT=0; AC_SUBST([GNULIB_C32ISPRINT]) + GNULIB_C32ISPUNCT=0; AC_SUBST([GNULIB_C32ISPUNCT]) + GNULIB_C32ISSPACE=0; AC_SUBST([GNULIB_C32ISSPACE]) + GNULIB_C32ISUPPER=0; AC_SUBST([GNULIB_C32ISUPPER]) + GNULIB_C32ISXDIGIT=0; AC_SUBST([GNULIB_C32ISXDIGIT]) GNULIB_C32RTOMB=0; AC_SUBST([GNULIB_C32RTOMB]) GNULIB_C32SNRTOMBS=0; AC_SUBST([GNULIB_C32SNRTOMBS]) GNULIB_C32SRTOMBS=0; AC_SUBST([GNULIB_C32SRTOMBS]) diff --git a/modules/uchar b/modules/uchar index 595bac5..2f94105 100644 --- a/modules/uchar +++ b/modules/uchar @@ -29,6 +29,18 @@ uchar.h: uchar.in.h $(top_builddir)/config.status $(CXXDEFS_H) -e 's|@''NEXT_UCHAR_H''@|$(NEXT_UCHAR_H)|g' \ -e 's|@''SMALL_WCHAR_T''@|$(SMALL_WCHAR_T)|g' \ -e 's/@''GNULIB_BTOC32''@/$(GNULIB_BTOC32)/g' \ + -e 's/@''GNULIB_C32ISALNUM''@/$(GNULIB_C32ISALNUM)/g' \ + -e 's/@''GNULIB_C32ISALPHA''@/$(GNULIB_C32ISALPHA)/g' \ + -e 's/@''GNULIB_C32ISBLANK''@/$(GNULIB_C32ISBLANK)/g' \ + -e 's/@''GNULIB_C32ISCNTRL''@/$(GNULIB_C32ISCNTRL)/g' \ + -e 's/@''GNULIB_C32ISDIGIT''@/$(GNULIB_C32ISDIGIT)/g' \ + -e 's/@''GNULIB_C32ISGRAPH''@/$(GNULIB_C32ISGRAPH)/g' \ + -e 's/@''GNULIB_C32ISLOWER''@/$(GNULIB_C32ISLOWER)/g' \ + -e 's/@''GNULIB_C32ISPRINT''@/$(GNULIB_C32ISPRINT)/g' \ + -e 's/@''GNULIB_C32ISPUNCT''@/$(GNULIB_C32ISPUNCT)/g' \ + -e 's/@''GNULIB_C32ISSPACE''@/$(GNULIB_C32ISSPACE)/g' \ + -e 's/@''GNULIB_C32ISUPPER''@/$(GNULIB_C32ISUPPER)/g' \ + -e 's/@''GNULIB_C32ISXDIGIT''@/$(GNULIB_C32ISXDIGIT)/g' \ -e 's/@''GNULIB_C32RTOMB''@/$(GNULIB_C32RTOMB)/g' \ -e 's/@''GNULIB_C32SNRTOMBS''@/$(GNULIB_C32SNRTOMBS)/g' \ -e 's/@''GNULIB_C32SRTOMBS''@/$(GNULIB_C32SRTOMBS)/g' \ diff --git a/tests/test-uchar-c++.cc b/tests/test-uchar-c++.cc index 1855b7e..02e2c15 100644 --- a/tests/test-uchar-c++.cc +++ b/tests/test-uchar-c++.cc @@ -28,6 +28,54 @@ SIGNATURE_CHECK (GNULIB_NAMESPACE::btoc32, wint_t, (int)); #endif +#if GNULIB_TEST_C32ISALNUM +SIGNATURE_CHECK (GNULIB_NAMESPACE::c32isalnum, int, (wint_t)); +#endif + +#if GNULIB_TEST_C32ISALPHA +SIGNATURE_CHECK (GNULIB_NAMESPACE::c32isalpha, int, (wint_t)); +#endif + +#if GNULIB_TEST_C32ISBLANK +SIGNATURE_CHECK (GNULIB_NAMESPACE::c32isblank, int, (wint_t)); +#endif + +#if GNULIB_TEST_C32ISCNTRL +SIGNATURE_CHECK (GNULIB_NAMESPACE::c32iscntrl, int, (wint_t)); +#endif + +#if GNULIB_TEST_C32ISDIGIT +SIGNATURE_CHECK (GNULIB_NAMESPACE::c32isdigit, int, (wint_t)); +#endif + +#if GNULIB_TEST_C32ISGRAPH +SIGNATURE_CHECK (GNULIB_NAMESPACE::c32isgraph, int, (wint_t)); +#endif + +#if GNULIB_TEST_C32ISLOWER +SIGNATURE_CHECK (GNULIB_NAMESPACE::c32islower, int, (wint_t)); +#endif + +#if GNULIB_TEST_C32ISPRINT +SIGNATURE_CHECK (GNULIB_NAMESPACE::c32isprint, int, (wint_t)); +#endif + +#if GNULIB_TEST_C32ISPUNCT +SIGNATURE_CHECK (GNULIB_NAMESPACE::c32ispunct, int, (wint_t)); +#endif + +#if GNULIB_TEST_C32ISSPACE +SIGNATURE_CHECK (GNULIB_NAMESPACE::c32isspace, int, (wint_t)); +#endif + +#if GNULIB_TEST_C32ISUPPER +SIGNATURE_CHECK (GNULIB_NAMESPACE::c32isupper, int, (wint_t)); +#endif + +#if GNULIB_TEST_C32ISXDIGIT +SIGNATURE_CHECK (GNULIB_NAMESPACE::c32isxdigit, int, (wint_t)); +#endif + #if GNULIB_TEST_C32RTOMB SIGNATURE_CHECK (GNULIB_NAMESPACE::c32rtomb, size_t, (char *, char32_t , mbstate_t *)); -- 2.7.4