OSDN Git Service

* configure.target: Add os_include_dir for mingw32* target.
authorcgf <cgf@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 8 Nov 2001 20:52:29 +0000 (20:52 +0000)
committercgf <cgf@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 8 Nov 2001 20:52:29 +0000 (20:52 +0000)
* docs/html/17_intro/porting.texi: Mention mingw32 as target benefiting from
_GLIBCPP_AVOID_FSEEK.
* config/os/mingw32/bits/ctype_base.h: New file.
* config/os/mingw32/bits/ctype_inline.h: New file.
* config/os/mingw32/bits/ctype_noninline.h: New file.
* config/os/mingw32/bits/os_defines.h: New file.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@46857 138bc75d-0d04-0410-961f-82ee72b054a4

libstdc++-v3/ChangeLog
libstdc++-v3/config/os/mingw32/bits/ctype_base.h [new file with mode: 0644]
libstdc++-v3/config/os/mingw32/bits/ctype_inline.h [new file with mode: 0644]
libstdc++-v3/config/os/mingw32/bits/ctype_noninline.h [new file with mode: 0644]
libstdc++-v3/config/os/mingw32/bits/os_defines.h [new file with mode: 0644]
libstdc++-v3/configure.target
libstdc++-v3/docs/html/17_intro/porting.texi

index d220d5e..0128c43 100644 (file)
@@ -1,3 +1,13 @@
+2001-11-08  Danny Smith  <dannysmith@users.sourceforge.net>
+
+       * configure.target: Add os_include_dir for mingw32* target.
+       * docs/html/17_intro/porting.texi: Mention mingw32 as target benefiting
+       from _GLIBCPP_AVOID_FSEEK.
+       * config/os/mingw32/bits/ctype_base.h: New file.
+       * config/os/mingw32/bits/ctype_inline.h: New file.
+       * config/os/mingw32/bits/ctype_noninline.h: New file.
+       * config/os/mingw32/bits/os_defines.h: New file.
+
 2001-11-07  Nathan Myers  <ncm@cantrip.org>
 
        * docs/html/faq/index.html (5.8):  New entry on ABIs.
diff --git a/libstdc++-v3/config/os/mingw32/bits/ctype_base.h b/libstdc++-v3/config/os/mingw32/bits/ctype_base.h
new file mode 100644 (file)
index 0000000..aed6662
--- /dev/null
@@ -0,0 +1,58 @@
+// Locale support -*- C++ -*-
+
+// Copyright (C) 1997-1999 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 /mingw32/include/ctype.h.
+  
+  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 short     mask;   
+    static const mask upper            = _UPPER;
+    static const mask lower    = _LOWER;
+    static const mask alpha    = _ALPHA;
+    static const mask digit    = _DIGIT;
+    static const mask xdigit   = _HEX;
+    static const mask space    = _SPACE;
+    static const mask print    = (_BLANK | _PUNCT| _ALPHA | _DIGIT);
+    static const mask graph    = (_PUNCT | _ALPHA | _DIGIT);
+    static const mask cntrl    = _CONTROL;
+    static const mask punct    = _PUNCT;
+    static const mask alnum    = (_ALPHA | _DIGIT);
+  };
+
+
+
diff --git a/libstdc++-v3/config/os/mingw32/bits/ctype_inline.h b/libstdc++-v3/config/os/mingw32/bits/ctype_inline.h
new file mode 100644 (file)
index 0000000..979d607
--- /dev/null
@@ -0,0 +1,71 @@
+// 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
+// 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
+
+
+  bool
+  ctype<char>::
+  is(mask __m, char __c) const
+  {
+       return (_M_table[static_cast<unsigned char>(__c) ] & __m); 
+  }
+   
+  const char*
+  ctype<char>::
+  is(const char* __low, const char* __high, mask* __vec) const 
+  {
+    while (__low < __high)
+      *__vec++ = _M_table[static_cast<unsigned char>(*__low++)];
+    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;
+  }
diff --git a/libstdc++-v3/config/os/mingw32/bits/ctype_noninline.h b/libstdc++-v3/config/os/mingw32/bits/ctype_noninline.h
new file mode 100644 (file)
index 0000000..d07ffcf
--- /dev/null
@@ -0,0 +1,75 @@
+// Locale support -*- C++ -*-
+
+// 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
+// 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 /mingw32/include/ctype.h.
+
+// This should be in mingw's ctype.h but isn't in older versions
+
+  extern "C"  unsigned short*  __declspec(dllimport) _pctype;  
+
+  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_ctable(NULL), _M_table(__table == 0 ? (_pctype) : __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;
+  }
+
diff --git a/libstdc++-v3/config/os/mingw32/bits/os_defines.h b/libstdc++-v3/config/os/mingw32/bits/os_defines.h
new file mode 100644 (file)
index 0000000..eb4bb1c
--- /dev/null
@@ -0,0 +1,40 @@
+// Specific definitions for generic platforms  -*- 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
+// 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
+
+// System-specific #define, typedefs, corrections, etc, go here.  This
+// file will come before all others.
+
+#define _GLIBCPP_AVOID_FSEEK 1
+
+
+#endif
index 304457d..eda3b1a 100644 (file)
@@ -89,6 +89,9 @@ case "${target_os}" in
   irix6.5)
     os_include_dir="config/os/irix/irix6.5"
     ;;
+  mingw32*)
+    os_include_dir="config/os/mingw32"
+    ;;
   netbsd*)
     os_include_dir="config/os/bsd/netbsd"
     ;;
index 9114806..018cbde 100644 (file)
@@ -152,8 +152,8 @@ stream (or one hooked to a pipe) is not allowed by the OS.  In this
 case, getc()/ungetc() will be used at some key locations in the library
 implementation instead of fseek().  Currently, the code path to avoid
 fseek() is only enabled when the seek size is 1 character away from the
-current stream position.  This is known to improve *-unknown-freebsd*
-and sparc-sun-solaris2.*.
+current stream position.  This is known to improve *-unknown-freebsd*,
+sparc-sun-solaris2.* and *-*-mingw32*.
 
 Finally, you should bracket the entire file in an include-guard, like
 this: