This is the mail archive of the libstdc++@gcc.gnu.org mailing list for the libstdc++ project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

V3 PATCH: WindISS support


Here are WindISS bits for V3.

Bootstrapped and tested on i686-pc-linux-gnu, applied on the mainline.

--
Mark Mitchell                   mark@codesourcery.com
CodeSourcery, LLC               http://www.codesourcery.com

2002-05-07  Mark Mitchell  <mark@codesourcery.com>

	* configure.in: Add support for WindISS.
	* configure: Regenerated.
	* configure.target: Add support for WindISS.
	* config/os/windiss/bits/ctype_base.h: New file.
	* config/os/windiss/bits/ctype_inline.h: Likewise.
	* config/os/windiss/bits/ctype_noninline.h: Likewise.
	* config/os/windiss/bits/os_defines.h: Likewise.

Index: configure.in
===================================================================
RCS file: /cvs/gcc/gcc/libstdc++-v3/configure.in,v
retrieving revision 1.87
diff -c -p -r1.87 configure.in
*** configure.in	19 Mar 2002 19:50:10 -0000	1.87
--- configure.in	7 May 2002 20:21:18 -0000
*************** if test -n "$with_cross_host" || test x"
*** 150,155 ****
--- 150,158 ----
        GLIBCPP_CHECK_WCHAR_T_SUPPORT
        os_include_dir="config/os/mingw32"
        ;;
+     *-windiss*)
+       os_include_dir="config/os/windiss"
+       ;;
      *)
        os_include_dir="config/os/newlib"
        AC_DEFINE(HAVE_HYPOT)
*************** if test -n "$with_cross_host" || test x"
*** 158,163 ****
--- 161,192 ----

    case "$target_alias" in
      *-mingw32*)
+       ;;
+     *-windiss*)
+       AC_DEFINE(HAVE_ACOSF)
+       AC_DEFINE(HAVE_ASINF)
+       AC_DEFINE(HAVE_ATAN2F)
+       AC_DEFINE(HAVE_ATANF)
+       AC_DEFINE(HAVE_CEILF)
+       AC_DEFINE(HAVE_COPYSIGN)
+       AC_DEFINE(HAVE_COPYSIGNF)
+       AC_DEFINE(HAVE_COSF)
+       AC_DEFINE(HAVE_COSHF)
+       AC_DEFINE(HAVE_EXPF)
+       AC_DEFINE(HAVE_FABSF)
+       AC_DEFINE(HAVE_FLOORF)
+       AC_DEFINE(HAVE_FMODF)
+       AC_DEFINE(HAVE_FREXPF)
+       AC_DEFINE(HAVE_LDEXPF)
+       AC_DEFINE(HAVE_LOG10F)
+       AC_DEFINE(HAVE_LOGF)
+       AC_DEFINE(HAVE_MODFF)
+       AC_DEFINE(HAVE_POWF)
+       AC_DEFINE(HAVE_SINF)
+       AC_DEFINE(HAVE_SINHF)
+       AC_DEFINE(HAVE_SQRTF)
+       AC_DEFINE(HAVE_TANF)
+       AC_DEFINE(HAVE_TANHF)
        ;;
      *)
        # GLIBCPP_CHECK_STDLIB_SUPPORT
Index: configure.target
===================================================================
RCS file: /cvs/gcc/gcc/libstdc++-v3/configure.target,v
retrieving revision 1.39
diff -c -p -r1.39 configure.target
*** configure.target	23 Apr 2002 17:46:22 -0000	1.39
--- configure.target	7 May 2002 20:21:18 -0000
*************** case "${target_os}" in
*** 108,113 ****
--- 108,116 ----
    hpux*)
      os_include_dir="config/os/hpux"
      ;;
+   windiss*)
+     os_include_dir="config/os/windiss"
+     ;;
    *)
      os_include_dir="config/os/generic"
      ;;
Index: config/os/windiss/bits/ctype_base.h
===================================================================
RCS file: config/os/windiss/bits/ctype_base.h
diff -N config/os/windiss/bits/ctype_base.h
*** /dev/null	1 Jan 1970 00:00:00 -0000
--- config/os/windiss/bits/ctype_base.h	7 May 2002 20:21:19 -0000
***************
*** 0 ****
--- 1,55 ----
+ // Locale support -*- C++ -*-
+
+ // Copyright (C) 2002 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
+ // terms of the GNU General Public License as published by the
+ // Free Software Foundation; either version 2, or (at your option)
+ // any later version.
+
+ // This 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 General Public License for more details.
+
+ // You should have received a copy of the GNU General Public License along
+ // with this library; see the file COPYING.  If not, write to the Free
+ // Software Foundation, 59 Temple Place - Suite 330, Boston, MA 
02111-1307,
+ // USA.
+
+ // As a special exception, you may use this file as part of a free 
software
+ // library without restriction.  Specifically, if other files instantiate
+ // templates or use macros or inline functions from this file, or you 
compile
+ // this file and link it with other files to produce an executable, this
+ // file does not by itself cause the resulting executable to be covered by
+ // the GNU General Public License.  This exception does not however
+ // invalidate any other reasons why the executable file might be covered 
by
+ // the GNU General Public License.
+
+ //
+ // ISO C++ 14882: 22.1  Locales
+ //
+
+ // Default information, may not be appropriate for specific host.
+
+   struct ctype_base
+   {
+     // Non-standard typedefs.
+     typedef const int* 		__to_type;
+
+     // NB: Offsets into ctype<char>::_M_table force a particular size
+     // on the mask type. Because of this, we don't use an enum.
+     typedef unsigned int 	mask;
+     static const mask upper    	= _U;
+     static const mask lower 	= _L;
+     static const mask alpha 	= _U | _L;
+     static const mask digit 	= _N;
+     static const mask xdigit 	= _X;
+     static const mask space 	= _S;
+     static const mask print 	= _U | _L | _N | _P | _B;
+     static const mask graph 	= _U | _L | _N | _P;
+     static const mask cntrl 	= _C;
+     static const mask punct 	= _P;
+     static const mask alnum 	= _U | _L | _N;
+   };
Index: config/os/windiss/bits/ctype_inline.h
===================================================================
RCS file: config/os/windiss/bits/ctype_inline.h
diff -N config/os/windiss/bits/ctype_inline.h
*** /dev/null	1 Jan 1970 00:00:00 -0000
--- config/os/windiss/bits/ctype_inline.h	7 May 2002 20:21:19 -0000
***************
*** 0 ****
--- 1,125 ----
+ // Locale support -*- C++ -*-
+
+ // Copyright (C) 2000, 2002 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
+ // terms of the GNU General Public License as published by the
+ // Free Software Foundation; either version 2, or (at your option)
+ // any later version.
+
+ // This 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 General Public License for more details.
+
+ // You should have received a copy of the GNU General Public License along
+ // with this library; see the file COPYING.  If not, write to the Free
+ // Software Foundation, 59 Temple Place - Suite 330, Boston, MA 
02111-1307,
+ // USA.
+
+ // As a special exception, you may use this file as part of a free 
software
+ // library without restriction.  Specifically, if other files instantiate
+ // templates or use macros or inline functions from this file, or you 
compile
+ // this file and link it with other files to produce an executable, this
+ // file does not by itself cause the resulting executable to be covered by
+ // the GNU General Public License.  This exception does not however
+ // invalidate any other reasons why the executable file might be covered 
by
+ // the GNU General Public License.
+
+ //
+ // ISO C++ 14882: 22.1  Locales
+ //
+
+ // ctype bits to be inlined go here. Non-inlinable (ie virtual do_*)
+ // functions go in ctype.cc
+
+ // The following definitions are portable, but insanely slow. If one
+ // cares at all about performance, then specialized ctype
+ // functionality should be added for the native os in question: see
+ // the config/os/bits/ctype_*.h files.
+
+   bool
+   ctype<char>::
+   is(mask __m, char __c) const
+   {
+     bool __ret;
+     switch (__m)
+       {
+       case space:
+ 	__ret = isspace(__c);
+ 	break;
+       case print:
+ 	__ret = isprint(__c);
+ 	break;
+       case cntrl:
+ 	__ret = iscntrl(__c);
+ 	break;
+       case upper:
+ 	__ret = isupper(__c);
+ 	break;
+       case lower:
+ 	__ret = islower(__c);
+ 	break;
+       case alpha:
+ 	__ret = isalpha(__c);
+ 	break;
+       case digit:
+ 	__ret = isdigit(__c);
+ 	break;
+       case punct:
+ 	__ret = ispunct(__c);
+ 	break;
+       case xdigit:
+ 	__ret = isxdigit(__c);
+ 	break;
+       case alnum:
+ 	__ret = isalnum(__c);
+ 	break;
+       case graph:
+ 	__ret = isgraph(__c);
+ 	break;
+       default:
+ 	__ret = false;
+ 	break;
+       }
+     return __ret;
+   }
+
+   const char*
+   ctype<char>::
+   is(const char* __low, const char* __high, mask* __vec) const
+   {
+     const int __bitmasksize = 11; // Highest bitmask in ctype_base == 10
+     for (;__low < __high; ++__vec, ++__low)
+       {
+ 	mask __m = 0;
+ 	int __i = 0; // Lowest bitmask in ctype_base == 0
+ 	for (;__i < __bitmasksize; ++__i)
+ 	  {
+ 	    mask __bit = static_cast<mask>(1 << __i);
+ 	    if (this->is(__bit, *__low))
+ 	      __m |= __bit;
+ 	  }
+ 	*__vec = __m;
+       }
+     return __high;
+   }
+
+   const char*
+   ctype<char>::
+   scan_is(mask __m, const char* __low, const char* __high) const
+   {
+     while (__low < __high && !this->is(__m, *__low))
+       ++__low;
+     return __low;
+   }
+
+   const char*
+   ctype<char>::
+   scan_not(mask __m, const char* __low, const char* __high) const
+   {
+     while (__low < __high && this->is(__m, *__low) != 0)
+       ++__low;
+     return __low;
+   }
Index: config/os/windiss/bits/ctype_noninline.h
===================================================================
RCS file: config/os/windiss/bits/ctype_noninline.h
diff -N config/os/windiss/bits/ctype_noninline.h
*** /dev/null	1 Jan 1970 00:00:00 -0000
--- config/os/windiss/bits/ctype_noninline.h	7 May 2002 20:21:19 -0000
***************
*** 0 ****
--- 1,82 ----
+ // Locale support -*- C++ -*-
+
+ // Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002
+ //  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
+ // terms of the GNU General Public License as published by the
+ // Free Software Foundation; either version 2, or (at your option)
+ // any later version.
+
+ // This 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 General Public License for more details.
+
+ // You should have received a copy of the GNU General Public License along
+ // with this library; see the file COPYING.  If not, write to the Free
+ // Software Foundation, 59 Temple Place - Suite 330, Boston, MA 
02111-1307,
+ // USA.
+
+ // As a special exception, you may use this file as part of a free 
software
+ // library without restriction.  Specifically, if other files instantiate
+ // templates or use macros or inline functions from this file, or you 
compile
+ // this file and link it with other files to produce an executable, this
+ // file does not by itself cause the resulting executable to be covered by
+ // the GNU General Public License.  This exception does not however
+ // invalidate any other reasons why the executable file might be covered 
by
+ // the GNU General Public License.
+
+ //
+ // ISO C++ 14882: 22.1  Locales
+ //
+
+ // Information as gleaned from /usr/include/ctype.h
+
+   const ctype_base::mask*
+   ctype<char>::classic_table() throw()
+   { return 0; }
+
+   ctype<char>::ctype(__c_locale, const mask* __table, bool __del,
+ 		     size_t __refs)
+   : __ctype_abstract_base<char>(__refs), _M_del(__table != 0 && __del),
+   _M_toupper(NULL), _M_tolower(NULL),
+   _M_table(__table == 0 ? classic_table() : __table)
+   { }
+
+   ctype<char>::ctype(const mask* __table, bool __del, size_t __refs)
+   : __ctype_abstract_base<char>(__refs), _M_del(__table != 0 && __del),
+   _M_toupper(NULL), _M_tolower(NULL),
+   _M_table(__table == 0 ? classic_table() : __table)
+   { }
+
+   char
+   ctype<char>::do_toupper(char __c) const
+   { return ::toupper((int) __c); }
+
+   const char*
+   ctype<char>::do_toupper(char* __low, const char* __high) const
+   {
+     while (__low < __high)
+       {
+ 	*__low = ::toupper((int) *__low);
+ 	++__low;
+       }
+     return __high;
+   }
+
+   char
+   ctype<char>::do_tolower(char __c) const
+   { return ::tolower((int) __c); }
+
+   const char*
+   ctype<char>::do_tolower(char* __low, const char* __high) const
+   {
+     while (__low < __high)
+       {
+ 	*__low = ::tolower((int) *__low);
+ 	++__low;
+       }
+     return __high;
+   }
Index: config/os/windiss/bits/os_defines.h
===================================================================
RCS file: config/os/windiss/bits/os_defines.h
diff -N config/os/windiss/bits/os_defines.h
*** /dev/null	1 Jan 1970 00:00:00 -0000
--- config/os/windiss/bits/os_defines.h	7 May 2002 20:21:19 -0000
***************
*** 0 ****
--- 1,37 ----
+ // Specific definitions for generic platforms  -*- C++ -*-
+
+ // Copyright (C) 2000, 2002 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
+ // terms of the GNU General Public License as published by the
+ // Free Software Foundation; either version 2, or (at your option)
+ // any later version.
+
+ // This 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 General Public License for more details.
+
+ // You should have received a copy of the GNU General Public License along
+ // with this library; see the file COPYING.  If not, write to the Free
+ // Software Foundation, 59 Temple Place - Suite 330, Boston, MA 
02111-1307,
+ // USA.
+
+ // As a special exception, you may use this file as part of a free 
software
+ // library without restriction.  Specifically, if other files instantiate
+ // templates or use macros or inline functions from this file, or you 
compile
+ // this file and link it with other files to produce an executable, this
+ // file does not by itself cause the resulting executable to be covered by
+ // the GNU General Public License.  This exception does not however
+ // invalidate any other reasons why the executable file might be covered 
by
+ // the GNU General Public License.
+
+
+ #ifndef _GLIBCPP_OS_DEFINES
+ #define _GLIBCPP_OS_DEFINES 1
+
+ // System-specific #define, typedefs, corrections, etc, go here.  This
+ // file will come before all others.
+
+ #endif


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]