This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: V3 PATCH: IRIX ctype
- To: Mark P Mitchell <mark at codesourcery dot com>
- Subject: Re: V3 PATCH: IRIX ctype
- From: Travis Shirk <travis at pobox dot com>
- Date: Thu, 2 Nov 2000 21:45:17 -0700 (MST)
- cc: gcc-patches at gcc dot gnu dot org, libstdc++ at sources dot redhat dot com
On Thu, 2 Nov 2000, Mark P Mitchell wrote:
>
> Here are the IRIX configury bits for ctype.
>
> --
> Mark Mitchell mark@codesourcery.com
> CodeSourcery, LLC http://www.codesourcery.com
>
> Thu Nov 2 10:11:45 2000 Mark P Mitchell <mark@codesourcery.com>
>
> * acinclude.m4 (GLIBCPP_CHECK_CTYPE_SUPPORT): Add support for IRIX.
> * aclocal.m4: Regenerated.
> * Makefile.in: Regenerated.
> * libio/Makefile.in: Likewise.
> * libmath/Makefile.in: Likewise.
> * libsupc++/Makefile.in: Likewise.
> * src/Makefile.in: Likewise.
> * configure: Likewise.
> * config/os/irix/bits/ctype_base.h: Revise.
> * config/os/irix/bits/ctype_inline.h: Likewise.
> * config/os/irix/bits/ctype_noninline.h: Likewise.
>
> Index: acinclude.m4
> ===================================================================
> RCS file: /cvs/gcc/egcs/libstdc++-v3/acinclude.m4,v
> retrieving revision 1.79
> diff -c -p -r1.79 acinclude.m4
> *** acinclude.m4 2000/11/01 21:38:31 1.79
> --- acinclude.m4 2000/11/03 02:22:28
> *************** AC_DEFUN(GLIBCPP_CHECK_CTYPE_SUPPORT, [
> *** 953,958 ****
> --- 953,974 ----
> fi
> fi
>
> + dnl Test for <ctype> functionality -- IRIX
> + if test $ctype_defualt ="yes"; then
You got a typo here: defualt
> + AC_MSG_CHECKING([<ctype> for IRIX])
> + AC_TRY_COMPILE([#include <ctype.h>],
> + [int
> + foo (int a)
> + { return _U + _L + _N + _S + _P + _C + _B + _X + \
> + _A + _PR + _G + _BL;}], \
> + ctype_irix=yes, ctype_irix=no)
> + AC_MSG_RESULT($ctype_irix)
> + if test $ctype_irix = "yes"; then
> + ctype_include_dir="config/os/irix"
> + ctype_default=no
> + fi
> + fi
> +
> dnl Test for <ctype> functionality -- newlib
> if test $ctype_default = "yes"; then
> AC_MSG_CHECKING([<ctype> for newlib])
> Index: config/os/irix/bits/ctype_base.h
> ===================================================================
> RCS file: /cvs/gcc/egcs/libstdc++-v3/config/os/irix/bits/ctype_base.h,v
> retrieving revision 1.1
> diff -c -p -r1.1 ctype_base.h
> *** ctype_base.h 2000/10/07 18:39:05 1.1
> --- ctype_base.h 2000/11/03 02:22:28
> ***************
> *** 35,41 ****
>
> struct ctype_base
> {
> ! typedef unsigned char mask;
> // Non-standard typedefs.
> typedef int* __to_type;
>
> --- 35,41 ----
>
> struct ctype_base
> {
> ! typedef unsigned int mask;
> // Non-standard typedefs.
> typedef int* __to_type;
>
> Index: config/os/irix/bits/ctype_inline.h
> ===================================================================
> RCS file: /cvs/gcc/egcs/libstdc++-v3/config/os/irix/bits/ctype_inline.h,v
> retrieving revision 1.1
> diff -c -p -r1.1 ctype_inline.h
> *** ctype_inline.h 2000/10/07 18:39:05 1.1
> --- ctype_inline.h 2000/11/03 02:22:28
> ***************
> *** 1,6 ****
> // Locale support -*- C++ -*-
>
> ! // Copyright (C) 2000 Cygnus Solutions
> //
> // 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
> --- 1,6 ----
> // Locale support -*- C++ -*-
>
> ! // Copyright (C) 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
> ***************
> *** 37,50 ****
> bool
> ctype<char>::
> is(mask __m, char __c) const throw()
> ! { return (_M_table + 1)[(unsigned char)(__c)] & __m; }
>
> const char*
> ctype<char>::
> is(const char* __low, const char* __high, mask* __vec) const throw()
> {
> while (__low < __high)
> ! *__vec++ = (_M_table + 1)[(unsigned char)(*__low++)];
> return __high;
> }
>
> --- 37,50 ----
> bool
> ctype<char>::
> is(mask __m, char __c) const throw()
> ! { return (_M_table)[(unsigned char)(__c)] & __m; }
>
> const char*
> ctype<char>::
> is(const char* __low, const char* __high, mask* __vec) const throw()
> {
> while (__low < __high)
> ! *__vec++ = (_M_table)[(unsigned char)(*__low++)];
> return __high;
> }
>
> ***************
> *** 52,58 ****
> ctype<char>::
> scan_is(mask __m, const char* __low, const char* __high) const throw()
> {
> ! while (__low < __high && !((_M_table + 1)[(unsigned char)(*__low)] & __m))
> ++__low;
> return __low;
> }
> --- 52,58 ----
> ctype<char>::
> scan_is(mask __m, const char* __low, const char* __high) const throw()
> {
> ! while (__low < __high && !((_M_table)[(unsigned char)(*__low)] & __m))
> ++__low;
> return __low;
> }
> Index: config/os/irix/bits/ctype_noninline.h
> ===================================================================
> RCS file: /cvs/gcc/egcs/libstdc++-v3/config/os/irix/bits/ctype_noninline.h,v
> retrieving revision 1.1
> diff -c -p -r1.1 ctype_noninline.h
> *** ctype_noninline.h 2000/10/07 18:39:05 1.1
> --- ctype_noninline.h 2000/11/03 02:22:28
> ***************
> *** 32,45 ****
> //
>
> // Information as gleaned from /usr/include/ctype.h
> -
> - ctype_base::__to_type const& ctype<char>::_S_toupper = _toupper;
> - ctype_base::__to_type const& ctype<char>::_S_tolower = _tolower;
> - const ctype_base::mask* const& ctype<char>::_S_table = __ctype;
>
> ! #ifdef _GLIBCPP_USE_WCHAR_T
> ! ctype_base::__to_type const& ctype<wchar_t>::_S_toupper = _toupper;
> ! ctype_base::__to_type const& ctype<wchar_t>::_S_tolower = _tolower;
> ! const ctype_base::mask* const& ctype<wchar_t>::_S_table = __ctype;
> ! #endif
>
> --- 32,76 ----
> //
>
> // Information as gleaned from /usr/include/ctype.h
>
> ! ctype<char>::ctype(const mask* __table = 0, bool __del = false,
> ! size_t __refs = 0)
> ! : _Ctype_nois<char>(__refs), _M_del(__table != 0 && __del),
> ! _M_toupper(NULL),
> ! _M_tolower(NULL),
> ! _M_ctable(NULL),
> ! _M_table(!__table
> ! ? (const mask*) (__libc_attr._ctype_tbl->_class + 1)
> ! : __table)
> ! { }
> !
> ! char
> ! ctype<char>::do_toupper(char __c) const
> ! { return _toupper(__c); }
> !
> ! const char*
> ! ctype<char>::do_toupper(char* __low, const char* __high) const
> ! {
> ! while (__low < __high)
> ! {
> ! *__low = do_toupper(*__low);
> ! ++__low;
> ! }
> ! return __high;
> ! }
> !
> ! char
> ! ctype<char>::do_tolower(char __c) const
> ! { return _tolower(__c); }
> !
> ! const char*
> ! ctype<char>::do_tolower(char* __low, const char* __high) const
> ! {
> ! while (__low < __high)
> ! {
> ! *__low = do_tolower(*__low);
> ! ++__low;
> ! }
> ! return __high;
> ! }
>
>
--
Travis Shirk <travis at pobox dot com>
Mathematics is God and Knuth is our prophet.