Commit 3840fa2a by Benjamin Kosnik Committed by Benjamin Kosnik

std_cwctype.h: Clean.


2000-06-01  Benjamin Kosnik  <bkoz@gnu.org>

	* bits/std_cwctype.h: Clean.
	* bits/std_cwchar.h: Clean, remove cruft.

	* acinclude.m4 (GLIBCPP_CHECK_WCHAR_T_SUPPORT): Re-work, add bits
	for beginning iconv support.
	Remove _GLIBCPP_HAS_WCHAR_MIN_MAX, roll into _GLIBCPP_USE_WCHAR_T
	macro.
	* acconfig.h: Remove _GLIBCPP_HAS_WCHAR_MIN_MAX.
	* bits/limits_generic.h: Remove.
	* src/gen-num-limits.cc: Same.

	* src/locale.cc: Tweaks.

	* bits/char_traits.h: Tweaks.

From-SVN: r34352
parent cc057ef3
2000-06-01 Benjamin Kosnik <bkoz@gnu.org>
* bits/std_cwctype.h: Clean.
* bits/std_cwchar.h: Clean, remove cruft.
* acinclude.m4 (GLIBCPP_CHECK_WCHAR_T_SUPPORT): Re-work, add bits
for beginning iconv support.
Remove _GLIBCPP_HAS_WCHAR_MIN_MAX, roll into _GLIBCPP_USE_WCHAR_T
macro.
* acconfig.h: Remove _GLIBCPP_HAS_WCHAR_MIN_MAX.
* bits/limits_generic.h: Remove.
* src/gen-num-limits.cc: Same.
* src/locale.cc: Tweaks.
* bits/char_traits.h: Tweaks.
2000-05-31 Russell Davidson <russell@ehess.cnrs-mrs.fr>
* bits/locale_facets.tcc (num_get<char>::_M_extract): Fix signage,
......
......@@ -83,14 +83,13 @@ FMTFLAGS = @FMTFLAGS@
GCC_OBJDIR = @GCC_OBJDIR@
GLIBCPP_CFLAGS = @GLIBCPP_CFLAGS@
GLIBCPP_CXXFLAGS = @GLIBCPP_CXXFLAGS@
LD = @LD@
LIBMATHOBJS = @LIBMATHOBJS@
LIBSTRINGOBJS = @LIBSTRINGOBJS@
LIBTOOL = @LIBTOOL@
LN_S = @LN_S@
MAINT = @MAINT@
MAKEINFO = @MAKEINFO@
NM = @NM@
OBJDUMP = @OBJDUMP@
PACKAGE = @PACKAGE@
RANLIB = @RANLIB@
THREADDEPS = @THREADDEPS@
......@@ -99,7 +98,6 @@ THREADLIBS = @THREADLIBS@
THREADOBJS = @THREADOBJS@
THREADSPEC = @THREADSPEC@
USE_LONG_DOUBLE = @USE_LONG_DOUBLE@
USE_SYMBOL_UNDERSCORE = @USE_SYMBOL_UNDERSCORE@
VERSION = @VERSION@
WERROR = @WERROR@
cpu_include_dir = @cpu_include_dir@
......
......@@ -9,11 +9,6 @@
// around.
#undef _GLIBCPP_NEED_MBSTATE_T
// Define if WCHAR_MIN and WCHAR_MAX are in the <cwchar_t>
// header. Presently, this is needed so that solaris won't
// instantitate numeric_limits<wchar_t>
#undef _GLIBCPP_HAS_WCHAR_MIN_MAX
// Define if code specialized for wchar_t should be used.
#undef _GLIBCPP_USE_WCHAR_T
......
......@@ -520,59 +520,86 @@ dnl Check to see if this target can enable the wchar_t parts of libstdc++.
dnl
dnl Define _GLIBCPP_USE_WCHAR_T if all the bits are found
dnl Define _GLIBCPP_NEED_MBSTATE_T if mbstate_t is not in wchar.h
dnl Define _GLIBCPP_HAS_WCHAR_MIN_MAX if WCHAR_MIN, WCHAR_MAX in wchar.h
dnl
dnl GLIBCPP_CHECK_WCHAR_T_SUPPORT
AC_DEFUN(GLIBCPP_CHECK_WCHAR_T_SUPPORT, [
AC_CHECK_HEADER(wchar.h,[
dnl Test wchar.h for mbstate_t, which is needed for char_traits and others.
AC_MSG_CHECKING([for native mbstate_t])
AC_TRY_COMPILE([#include <wchar.h>],
[mbstate_t teststate;],
use_native_mbstatet=yes, use_native_mbstatet=no)
AC_MSG_RESULT($use_native_mbstatet)
if test $use_native_mbstatet = "no"; then
AC_DEFINE(_GLIBCPP_NEED_MBSTATE_T)
fi
dnl Sanity check for existence of ISO C9X headers for extended encoding.
AC_CHECK_HEADER(wchar.h, ac_has_wchar_h=yes, ac_has_wchar_h=no)
AC_CHECK_HEADER(wctype.h, ac_has_wctype_h=yes, ac_has_wctype_h=no)
dnl Only continue checking if the ISO C9X headers exist.
if test x"$ac_has_wchar_h" = xyes && test x"$ac_has_wctype_h" = xyes; then
dnl Test wchar.h for mbstate_t, which is needed for char_traits and others.
AC_MSG_CHECKING([for mbstate_t])
AC_TRY_COMPILE([#include <wchar.h>],
[mbstate_t teststate;],
use_native_mbstatet=yes, use_native_mbstatet=no)
AC_MSG_RESULT($use_native_mbstatet)
if test x"$use_native_mbstatet" = xno; then
AC_DEFINE(_GLIBCPP_NEED_MBSTATE_T)
fi
dnl Test wchar.h for WCHAR_MIN, WCHAR_MAX, which is needed before
dnl numeric_limits can instantiate type_traits<wchar_t>
AC_MSG_CHECKING([for WCHAR_MIN and WCHAR_MAX])
AC_TRY_COMPILE([#include <wchar.h>],
[int i = WCHAR_MIN; int j = WCHAR_MAX;],
has_wchar_minmax=yes, has_wchar_minmax=no)
AC_MSG_RESULT($has_wchar_minmax)
if test $has_wchar_minmax = "yes"; then
AC_DEFINE(_GLIBCPP_HAS_WCHAR_MIN_MAX)
fi
dnl Test wchar.h for WCHAR_MIN, WCHAR_MAX, which is needed before
dnl numeric_limits can instantiate type_traits<wchar_t>
AC_MSG_CHECKING([for WCHAR_MIN and WCHAR_MAX])
AC_TRY_COMPILE([#include <wchar.h>],
[int i = WCHAR_MIN; int j = WCHAR_MAX;],
has_wchar_minmax=yes, has_wchar_minmax=no)
AC_MSG_RESULT($has_wchar_minmax)
# Test wchar.h for WEOF, which is what we use to determine whether
# to specialize for wchar_t or not.
AC_MSG_CHECKING([for WEOF])
AC_TRY_COMPILE([
#include <wchar.h>
#include <stddef.h>],
[wint_t i = WEOF;],
has_weof=yes, has_weof=no)
AC_MSG_RESULT($has_weof)
dnl Tests for wide character functions.
AC_REPLACE_STRINGFUNCS(wcslen wmemchr wmemcmp wmemcpy wmemmove wmemset)
AC_SUBST(libinst_wstring_la)
AC_MSG_CHECKING([for wide character support])
if test $has_weof = "yes" && test $has_wchar_minmax = "yes"; then
libinst_wstring_la="libinst-wstring.la"
AC_DEFINE(_GLIBCPP_USE_WCHAR_T)
AC_MSG_RESULT(ok)
dnl Test wchar.h for WEOF, which is what we use to determine whether
dnl to specialize for char_traits<wchar_t> or not.
AC_MSG_CHECKING([for WEOF])
AC_TRY_COMPILE([
#include <wchar.h>
#include <stddef.h>],
[wint_t i = WEOF;],
has_weof=yes, has_weof=no)
AC_MSG_RESULT($has_weof)
dnl Tests for wide character functions used in char_traits<wchar_t>.
AC_CHECK_FUNCS(wcslen wmemchr wmemcmp wmemcpy wmemmove wmemset, ac_wfuncs=yes, ac_wfuncs=no)
AC_MSG_CHECKING([for ISO C9X wchar_t support])
if test x"$has_weof" = xyes && test x"$has_wchar_minmax" = xyes && test x"$ac_wfuncs" = xyes; then
ac_isoC9X_wchar_t=yes
else
ac_isoC9X_wchar_t=no
fi
AC_MSG_RESULT($ac_isoC9X_wchar_t)
dnl Use iconv for wchar_t to char conversions. As such, check for
dnl X/Open Portability Guide, version 2 features (XPG2).
AC_CHECK_HEADER(iconv.h, ac_has_iconv_h=yes, ac_has_iconv_h=no)
AC_CHECK_FUNCS(iconv_open iconv_close iconv, ac_XPG2funcs=yes, ac_XPG2funcs=no)
AC_MSG_CHECKING([for XPG2 wchar_t support])
if test x"$ac_has_iconv_h" = xyes && test x"$ac_XPG2funcs" = xyes; then
ac_XPG2_wchar_t=yes
else
ac_XPG2_wchar_t=no
fi
AC_MSG_RESULT($ac_XPG2_wchar_t)
dnl At the moment, only enable wchar_t specializations if all the
dnl above support is present.
AC_MSG_CHECKING([for enabled wchar_t specializations])
if test x"$ac_isoC9X_wchar_t" = xyes && test x"$ac_XPG2_wchar_t" = xyes; then
libinst_wstring_la="libinst-wstring.la"
AC_DEFINE(_GLIBCPP_USE_WCHAR_T)
AC_MSG_RESULT("yes")
else
libinst_wstring_la=""
AC_MSG_RESULT("no")
fi
AC_SUBST(libinst_wstring_la)
else
libinst_wstring_la=""
AC_MSG_RESULT("not specializing for wchar_t")
AC_MSG_WARN([<wchar.h> not found])
AC_DEFINE(_GLIBCPP_NEED_MBSTATE_T)
fi
],[
AC_MSG_WARN([<wchar.h> not found])
AC_DEFINE(_GLIBCPP_NEED_MBSTATE_T)
])
])
......@@ -949,7 +976,6 @@ dnl GLIBCPP_ENABLE_LONG_LONG
AC_DEFUN(GLIBCPP_ENABLE_LONG_LONG, [dnl
define([GLIBCPP_ENABLE_LONG_LONG_DEFAULT], ifelse($1, yes, yes, no))dnl
AC_MSG_CHECKING([for enabled long long])
AC_ARG_ENABLE(long-long,
changequote(<<, >>)dnl
<<--enable-long-long turns on 'long long' [default=>>GLIBCPP_ENABLE_LONG_LONG_DEFAULT],
......@@ -965,11 +991,12 @@ AC_DEFUN(GLIBCPP_ENABLE_LONG_LONG, [dnl
AC_CHECK_FUNC(strtoll,,ac_strtoll=no)
AC_CHECK_FUNC(strtoull,,ac_strtoull=no)
AC_MSG_CHECKING([for enabled long long])
if test x"$ac_strtoll" = xno || test x"$ac_strtoull" = xno; then
enable_long_long=no;
fi; unset ac_ll
enable_long_long=no;
fi;
AC_MSG_RESULT($enable_long_long)
dnl Option parsed, now set things appropriately
case "$enable_long_long" in
yes) AC_DEFINE(_GLIBCPP_USE_LONG_LONG)
......
......@@ -194,8 +194,8 @@ namespace std {
to_char_type(const int_type& __c)
{ return static_cast<char>(__c); }
// To keep both the byte 0xff and the eof symbol 0xffffffff
// from ending up as 0xffffffff.
// To keep both the byte 0xff and the eof symbol 0xffffffff
// from ending up as 0xffffffff.
static int_type
to_int_type(const char_type& __c)
{ return static_cast<int_type>(static_cast<unsigned char>(__c)); }
......@@ -247,7 +247,7 @@ namespace std {
static size_t
length(const char_type* __s)
{ return wcslen (__s); }
{ return wcslen(__s); }
static const char_type*
find(const char_type* __s, size_t __n, const char_type& __a)
......
......@@ -41,7 +41,7 @@
#include <bits/c++config.h>
#include <bits/std_cfloat.h>
#include <bits/std_climits.h>
#if defined( _GLIBCPP_USE_WCHAR_T) && defined(_GLIBCPP_HAS_WCHAR_MIN_MAX)
#if defined( _GLIBCPP_USE_WCHAR_T)
#include <bits/std_cwchar.h>
#endif
......@@ -299,7 +299,7 @@ namespace std {
static const float_round_style round_style = round_toward_zero;
};
#if defined( _GLIBCPP_USE_WCHAR_T) && defined(_GLIBCPP_HAS_WCHAR_MIN_MAX)
#if defined( _GLIBCPP_USE_WCHAR_T)
template<> struct numeric_limits<wchar_t> {
static const bool is_specialized = true;
......
......@@ -37,54 +37,21 @@
#define _CPP_CWCHAR 1
#include <bits/c++config.h>
#ifdef _GLIBCPP_USE_WCHAR_T
#if _GLIBCPP_USE_WCHAR_T
# pragma system_header
# include_next <wchar.h>
#endif
extern "C" {
#ifdef _GLIBCPP_USE_WCHAR_T
#ifndef _GLIBCPP_HAVE_WMEMCMP
int wmemcmp(const wchar_t* __s1, const wchar_t* __s2, size_t __n);
#endif
#ifndef _GLIBCPP_HAVE_WCSLEN
size_t wcslen(const wchar_t* __s);
#endif
#ifndef _GLIBCPP_HAVE_WMEMCHR
wchar_t* wmemchr(const wchar_t* __s, wchar_t __c, size_t __n);
#endif
#ifndef _GLIBCPP_HAVE_WMEMMOVE
wchar_t* wmemmove(wchar_t* __s1, const wchar_t* __s2, size_t __n);
#endif
#ifndef _GLIBCPP_HAVE_WMEMCPY
wchar_t* wmemcpy(wchar_t* __s1, const wchar_t* __s2, size_t __n);
#endif
#ifndef _GLIBCPP_HAVE_WMEMSET
wchar_t* wmemset(wchar_t* __s, wchar_t __c, size_t __n);
#endif
#endif //_GLIBCPP_USE_WCHAR_T
// NB: mbstate_t should be defined in <cwchar>, as per
// 21.2 p5
// If not, autoconf will
// detect this with some configure time magic and define
// _GLIBCPP_NEED_MBSTATE_T (see config.h in the build directory.)
#ifdef _GLIBCPP_NEED_MBSTATE_T
#else
# ifdef _GLIBCPP_NEED_MBSTATE_T
extern "C"
{
typedef struct
{
int __fill[6];
} mbstate_t;
#endif
}
# endif
#endif //_GLIBCPP_USE_WCHAR_T
#endif // _CPP_CWCHAR
......
// -*- C++ -*- forwarding header.
// Copyright (C) 1997-1999 Free Software Foundation, Inc.
// Copyright (C) 1997-1999, 2000 Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library. This library is free
// software; you can redistribute it and/or modify it under the
......@@ -34,11 +34,6 @@
#ifndef _CPP_CWCTYPE
#define _CPP_CWCTYPE 1
// This keeps isanum, et al from being propagated as macros.
#if __linux__
#define __NO_WCTYPE 1
#endif
# pragma system_header
# include_next <wctype.h>
......
......@@ -12,11 +12,6 @@
// around.
#undef _GLIBCPP_NEED_MBSTATE_T
// Define if WCHAR_MIN and WCHAR_MAX are in the <cwchar_t>
// header. Presently, this is needed so that solaris won't
// instantitate numeric_limits<wchar_t>
#undef _GLIBCPP_HAS_WCHAR_MIN_MAX
// Define if code specialized for wchar_t should be used.
#undef _GLIBCPP_USE_WCHAR_T
......@@ -290,6 +285,15 @@
/* Define if you have the hypotl function. */
#undef HAVE_HYPOTL
/* Define if you have the iconv function. */
#undef HAVE_ICONV
/* Define if you have the iconv_close function. */
#undef HAVE_ICONV_CLOSE
/* Define if you have the iconv_open function. */
#undef HAVE_ICONV_OPEN
/* Define if you have the isinf function. */
#undef HAVE_ISINF
......
......@@ -83,14 +83,13 @@ FMTFLAGS = @FMTFLAGS@
GCC_OBJDIR = @GCC_OBJDIR@
GLIBCPP_CFLAGS = @GLIBCPP_CFLAGS@
GLIBCPP_CXXFLAGS = @GLIBCPP_CXXFLAGS@
LD = @LD@
LIBMATHOBJS = @LIBMATHOBJS@
LIBSTRINGOBJS = @LIBSTRINGOBJS@
LIBTOOL = @LIBTOOL@
LN_S = @LN_S@
MAINT = @MAINT@
MAKEINFO = @MAKEINFO@
NM = @NM@
OBJDUMP = @OBJDUMP@
PACKAGE = @PACKAGE@
RANLIB = @RANLIB@
THREADDEPS = @THREADDEPS@
......@@ -99,7 +98,6 @@ THREADLIBS = @THREADLIBS@
THREADOBJS = @THREADOBJS@
THREADSPEC = @THREADSPEC@
USE_LONG_DOUBLE = @USE_LONG_DOUBLE@
USE_SYMBOL_UNDERSCORE = @USE_SYMBOL_UNDERSCORE@
VERSION = @VERSION@
WERROR = @WERROR@
cpu_include_dir = @cpu_include_dir@
......
......@@ -83,14 +83,13 @@ FMTFLAGS = @FMTFLAGS@
GCC_OBJDIR = @GCC_OBJDIR@
GLIBCPP_CFLAGS = @GLIBCPP_CFLAGS@
GLIBCPP_CXXFLAGS = @GLIBCPP_CXXFLAGS@
LD = @LD@
LIBMATHOBJS = @LIBMATHOBJS@
LIBSTRINGOBJS = @LIBSTRINGOBJS@
LIBTOOL = @LIBTOOL@
LN_S = @LN_S@
MAINT = @MAINT@
MAKEINFO = @MAKEINFO@
NM = @NM@
OBJDUMP = @OBJDUMP@
PACKAGE = @PACKAGE@
RANLIB = @RANLIB@
THREADDEPS = @THREADDEPS@
......@@ -99,7 +98,6 @@ THREADLIBS = @THREADLIBS@
THREADOBJS = @THREADOBJS@
THREADSPEC = @THREADSPEC@
USE_LONG_DOUBLE = @USE_LONG_DOUBLE@
USE_SYMBOL_UNDERSCORE = @USE_SYMBOL_UNDERSCORE@
VERSION = @VERSION@
WERROR = @WERROR@
cpu_include_dir = @cpu_include_dir@
......
......@@ -81,14 +81,13 @@ FMTFLAGS = @FMTFLAGS@
GCC_OBJDIR = @GCC_OBJDIR@
GLIBCPP_CFLAGS = @GLIBCPP_CFLAGS@
GLIBCPP_CXXFLAGS = @GLIBCPP_CXXFLAGS@
LD = @LD@
LIBMATHOBJS = @LIBMATHOBJS@
LIBSTRINGOBJS = @LIBSTRINGOBJS@
LIBTOOL = @LIBTOOL@
LN_S = @LN_S@
MAINT = @MAINT@
MAKEINFO = @MAKEINFO@
NM = @NM@
OBJDUMP = @OBJDUMP@
PACKAGE = @PACKAGE@
RANLIB = @RANLIB@
THREADDEPS = @THREADDEPS@
......@@ -97,7 +96,6 @@ THREADLIBS = @THREADLIBS@
THREADOBJS = @THREADOBJS@
THREADSPEC = @THREADSPEC@
USE_LONG_DOUBLE = @USE_LONG_DOUBLE@
USE_SYMBOL_UNDERSCORE = @USE_SYMBOL_UNDERSCORE@
VERSION = @VERSION@
WERROR = @WERROR@
cpu_include_dir = @cpu_include_dir@
......
......@@ -726,7 +726,7 @@ int main()
type_trait<char>();
type_trait<signed char>();
type_trait<unsigned char>();
#if defined( _GLIBCPP_USE_WCHAR_T) && defined(_GLIBCPP_HAS_WCHAR_MIN_MAX)
#if defined( _GLIBCPP_USE_WCHAR_T)
type_trait<wchar_t>();
#endif
......
......@@ -756,8 +756,7 @@ namespace std {
codecvt_byname<wchar_t, char, mbstate_t>::
codecvt_byname(const char* /*__s*/, size_t __refs)
: codecvt<wchar_t, char, mbstate_t> (__refs)
{
}
{ }
codecvt_byname<wchar_t, char, mbstate_t>::~codecvt_byname() {}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment