diff options
author | Marc Glisse <marc.glisse@normalesup.org> | 2011-08-18 14:59:47 +0000 |
---|---|---|
committer | Rainer Orth <ro@gcc.gnu.org> | 2011-08-18 14:59:47 +0000 |
commit | a1998fab44f12c5d4553e62d33b974f7ec189477 (patch) | |
tree | e1ac4cec20e9f3be646050a685354d96a5798a90 /libstdc++-v3/config/os | |
parent | 9181a6e5b0beb4486bcd8c5d5b53d6e10cfc89ad (diff) | |
download | gcc-a1998fab44f12c5d4553e62d33b974f7ec189477.zip gcc-a1998fab44f12c5d4553e62d33b974f7ec189477.tar.gz gcc-a1998fab44f12c5d4553e62d33b974f7ec189477.tar.bz2 |
Use Solaris prototypes if possible (PR libstdc++-v3/1773)
Co-Authored-By: Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
From-SVN: r177866
Diffstat (limited to 'libstdc++-v3/config/os')
-rw-r--r-- | libstdc++-v3/config/os/solaris/solaris2.8/ctype_base.h (renamed from libstdc++-v3/config/os/solaris/solaris2.7/ctype_base.h) | 0 | ||||
-rw-r--r-- | libstdc++-v3/config/os/solaris/solaris2.8/ctype_configure_char.cc (renamed from libstdc++-v3/config/os/solaris/solaris2.7/ctype_configure_char.cc) | 0 | ||||
-rw-r--r-- | libstdc++-v3/config/os/solaris/solaris2.8/ctype_inline.h (renamed from libstdc++-v3/config/os/solaris/solaris2.7/ctype_inline.h) | 0 | ||||
-rw-r--r-- | libstdc++-v3/config/os/solaris/solaris2.8/os_defines.h (renamed from libstdc++-v3/config/os/solaris/solaris2.7/os_defines.h) | 11 | ||||
-rw-r--r-- | libstdc++-v3/config/os/solaris/solaris2.9/ctype_base.h | 60 | ||||
-rw-r--r-- | libstdc++-v3/config/os/solaris/solaris2.9/ctype_configure_char.cc | 99 | ||||
-rw-r--r-- | libstdc++-v3/config/os/solaris/solaris2.9/ctype_inline.h | 76 | ||||
-rw-r--r-- | libstdc++-v3/config/os/solaris/solaris2.9/os_defines.h | 40 |
8 files changed, 284 insertions, 2 deletions
diff --git a/libstdc++-v3/config/os/solaris/solaris2.7/ctype_base.h b/libstdc++-v3/config/os/solaris/solaris2.8/ctype_base.h index 1ae3874..1ae3874 100644 --- a/libstdc++-v3/config/os/solaris/solaris2.7/ctype_base.h +++ b/libstdc++-v3/config/os/solaris/solaris2.8/ctype_base.h diff --git a/libstdc++-v3/config/os/solaris/solaris2.7/ctype_configure_char.cc b/libstdc++-v3/config/os/solaris/solaris2.8/ctype_configure_char.cc index d351942..d351942 100644 --- a/libstdc++-v3/config/os/solaris/solaris2.7/ctype_configure_char.cc +++ b/libstdc++-v3/config/os/solaris/solaris2.8/ctype_configure_char.cc diff --git a/libstdc++-v3/config/os/solaris/solaris2.7/ctype_inline.h b/libstdc++-v3/config/os/solaris/solaris2.8/ctype_inline.h index d6b8df4..d6b8df4 100644 --- a/libstdc++-v3/config/os/solaris/solaris2.7/ctype_inline.h +++ b/libstdc++-v3/config/os/solaris/solaris2.8/ctype_inline.h diff --git a/libstdc++-v3/config/os/solaris/solaris2.7/os_defines.h b/libstdc++-v3/config/os/solaris/solaris2.8/os_defines.h index 2b7ba18..c58126b 100644 --- a/libstdc++-v3/config/os/solaris/solaris2.7/os_defines.h +++ b/libstdc++-v3/config/os/solaris/solaris2.8/os_defines.h @@ -1,6 +1,6 @@ -// Specific definitions for Solaris 7,8 -*- C++ -*- +// Specific definitions for Solaris 8 -*- C++ -*- -// Copyright (C) 2000, 2002, 2005, 2009 Free Software Foundation, Inc. +// Copyright (C) 2000, 2002, 2005, 2009, 2011 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 @@ -28,5 +28,12 @@ // System-specific #define, typedefs, corrections, etc, go here. This // file will come before all others. +// FIXME: Autoconf if possible. +#if __cplusplus >= 199711L +#define __CORRECT_ISO_CPP_MATH_H_PROTO2 +#define __CORRECT_ISO_CPP_STRING_H_PROTO +#define __CORRECT_ISO_CPP_WCHAR_H_PROTO +#endif + #endif diff --git a/libstdc++-v3/config/os/solaris/solaris2.9/ctype_base.h b/libstdc++-v3/config/os/solaris/solaris2.9/ctype_base.h new file mode 100644 index 0000000..1ae3874 --- /dev/null +++ b/libstdc++-v3/config/os/solaris/solaris2.9/ctype_base.h @@ -0,0 +1,60 @@ +// Locale support -*- C++ -*- + +// Copyright (C) 1997, 1998, 1999, 2000, 2003, 2009 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 3, 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. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// <http://www.gnu.org/licenses/>. + +// +// ISO C++ 14882: 22.1 Locales +// + +// Information as gleaned from /usr/include/ctype.h. Looks like this +// only works with solaris2.7 and solaris2.8. Thanks for not changing +// things, sun engineers! + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + /// @brief Base class for ctype. + struct ctype_base + { + // Non-standard typedefs. + typedef 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 = _ISUPPER; + static const mask lower = _ISLOWER; + static const mask alpha = _ISALPHA; + static const mask digit = _ISDIGIT; + static const mask xdigit = _ISXDIGIT; + static const mask space = _ISSPACE; + static const mask print = _ISPRINT; + static const mask graph = _ISALPHA | _ISDIGIT | _ISPUNCT; + static const mask cntrl = _ISCNTRL; + static const mask punct = _ISPUNCT; + static const mask alnum = _ISALPHA | _ISDIGIT; + }; + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace diff --git a/libstdc++-v3/config/os/solaris/solaris2.9/ctype_configure_char.cc b/libstdc++-v3/config/os/solaris/solaris2.9/ctype_configure_char.cc new file mode 100644 index 0000000..d351942 --- /dev/null +++ b/libstdc++-v3/config/os/solaris/solaris2.9/ctype_configure_char.cc @@ -0,0 +1,99 @@ +// Locale support -*- C++ -*- + +// Copyright (C) 2011 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 3, 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. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// <http://www.gnu.org/licenses/>. + +/** @file ctype_configure_char.cc */ + +// +// ISO C++ 14882: 22.1 Locales +// + +#include <locale> +#include <cstdlib> +#include <cstring> + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + +// Information as gleaned from /usr/include/ctype.h + + const ctype_base::mask* + ctype<char>::classic_table() throw() + { return __ctype_mask; } + + ctype<char>::ctype(__c_locale, const mask* __table, bool __del, + size_t __refs) + : facet(__refs), _M_del(__table != 0 && __del), + _M_toupper(__trans_upper), _M_tolower(__trans_lower), + _M_table(__table ? __table : classic_table()) + { + memset(_M_widen, 0, sizeof(_M_widen)); + _M_widen_ok = 0; + memset(_M_narrow, 0, sizeof(_M_narrow)); + _M_narrow_ok = 0; + } + + ctype<char>::ctype(const mask* __table, bool __del, size_t __refs) + : facet(__refs), _M_del(__table != 0 && __del), + _M_toupper(__trans_upper), _M_tolower(__trans_lower), + _M_table(__table ? __table : classic_table()) + { + memset(_M_widen, 0, sizeof(_M_widen)); + _M_widen_ok = 0; + memset(_M_narrow, 0, sizeof(_M_narrow)); + _M_narrow_ok = 0; + } + + char + ctype<char>::do_toupper(char __c) const + { return _M_toupper[static_cast<unsigned char>(__c)]; } + + const char* + ctype<char>::do_toupper(char* __low, const char* __high) const + { + while (__low < __high) + { + *__low = _M_toupper[static_cast<unsigned char>(*__low)]; + ++__low; + } + return __high; + } + + char + ctype<char>::do_tolower(char __c) const + { return _M_tolower[static_cast<unsigned char>(__c)]; } + + const char* + ctype<char>::do_tolower(char* __low, const char* __high) const + { + while (__low < __high) + { + *__low = _M_tolower[static_cast<unsigned char>(*__low)]; + ++__low; + } + return __high; + } + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace diff --git a/libstdc++-v3/config/os/solaris/solaris2.9/ctype_inline.h b/libstdc++-v3/config/os/solaris/solaris2.9/ctype_inline.h new file mode 100644 index 0000000..d6b8df4 --- /dev/null +++ b/libstdc++-v3/config/os/solaris/solaris2.9/ctype_inline.h @@ -0,0 +1,76 @@ +// Locale support -*- C++ -*- + +// Copyright (C) 2000, 2002, 2009, 2010 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 3, 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. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// <http://www.gnu.org/licenses/>. + +/** @file bits/ctype_inline.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{locale} + */ + +// +// ISO C++ 14882: 22.1 Locales +// + +// ctype bits to be inlined go here. Non-inlinable (ie virtual do_*) +// functions go in ctype.cc + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + 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 + && !(_M_table[static_cast<unsigned char>(*__low)] & __m)) + ++__low; + return __low; + } + + const char* + ctype<char>:: + scan_not(mask __m, const char* __low, const char* __high) const + { + while (__low < __high + && (_M_table[static_cast<unsigned char>(*__low)] & __m) != 0) + ++__low; + return __low; + } + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace diff --git a/libstdc++-v3/config/os/solaris/solaris2.9/os_defines.h b/libstdc++-v3/config/os/solaris/solaris2.9/os_defines.h new file mode 100644 index 0000000..bf84f61 --- /dev/null +++ b/libstdc++-v3/config/os/solaris/solaris2.9/os_defines.h @@ -0,0 +1,40 @@ +// Specific definitions for Solaris 9+ -*- C++ -*- + +// Copyright (C) 2000, 2002, 2005, 2009, 2011 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 3, 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. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// <http://www.gnu.org/licenses/>. + +#ifndef _GLIBCXX_OS_DEFINES +#define _GLIBCXX_OS_DEFINES 1 + +// System-specific #define, typedefs, corrections, etc, go here. This +// file will come before all others. + +// FIXME: Autoconf if possible. +#if __cplusplus >= 199711L +#define __CORRECT_ISO_CPP_MATH_H_PROTO1 +#define __CORRECT_ISO_CPP_STDLIB_H_PROTO +#define __CORRECT_ISO_CPP_STRING_H_PROTO +#define __CORRECT_ISO_CPP_WCHAR_H_PROTO +#endif + +#endif + |