libstdc++/2071
* porting.texi: Add documentation about libstdc++-v3-specific
macros that are currently included in os_defines.h files.
* config/basic_file_stdio.h (sys_getc): New method.
(sys_ungetc): New method.
* include/bits/basic_file.h: (sys_getc): New method signature.
(sys_ungetc): New method signature.
* include/bits/fstream.tcc (underflow): Add conditional code
paths which avoid using short seeks on streams (especially
useful when the stream might be interactive or a pipe). At
the moment, this alternate path only avoids seeking when the
``buffer size'' of underflow() is 1 since the C standard only
guarantees buffer space for one ungetc (this technique could
be extended since *-*-solaris* supports buffering for 4 calls
to ungetc and *-*-*bsd* supports buffering limited only by
memory resources). Also, _GLIBCPP_AVOID_FSEEK must be defined
in a port's os_defines.h file for this alternate path to even
be considered. As a bonus, the idiom of using getc/ungetc
requires no system calls whereas fseek maps to one or two
system call(s) on many platforms.
* config/os/bsd/freebsd/bits/os_defines.h (_GLIBCPP_AVOID_FSEEK):
Define it.
* config/os/solaris/solaris2.5/bits/os_defines.h
(_GLIBCPP_AVOID_FSEEK): Likewise.
* config/os/solaris/solaris2.6/bits/os_defines.h
(_GLIBCPP_AVOID_FSEEK): Likewise.
* config/os/solaris/solaris2.7/bits/os_defines.h
(_GLIBCPP_AVOID_FSEEK): Likewise.
From-SVN: r43278
* config/threads-no.h: Remove file.
* config/threads-posix.h: Remove file.
* acconfig.h (_GLIBCPP_USE_THREADS): Remove.
(_GLIBCPP_SUPPORTS_WEAK): Add (required by namespace-clean gthr*.h).
(_GLIBCPP_HAVE_GTHR_DEFAULT): Likewise.
* config.h.in: Regenerate.
* acinclude.m4 (GLIBCPP_ENABLE_THREADS): Completely rework to
setup and use gthr*.h files. In particular, make gthr.h files
namespace-clean in the staging area (they don't have to be for
libgcc.a).
* aclocal.m4: Regenerate.
* configure: Regenerate.
* src/Makefile.am (build_headers): Remove bits/c++threads.h
and add bits/gthr.h bits/gthr-single.h bits/gthr-default.h.
* src/Makefile.in: Regenerate.
* include/bits/c++config: Cleanup threading configuration macros.
In particular, define __STL_GTHREADS macro which controls...
* include/bits/stl_threads.h: ...a brand new gthr.h-based
configuration here.
* config/c_io_stdio.h: Include staged gthr.h instead of local
thread configuration file. Always use __gthread_mutex_t
instead of __mutext_type (or int).
* include/bits/std_fstream.h: Likewise.
* docs/html/17_intro/howto.html: Remove placeholder comment in
case this configuration patch didn't make it. Add advice that
section only applies if configured with --enable-threads.
* docs/html/23_containers/howto.html: Reword to make clear
that _PTHREADS is no longer required for any port to be
correctly using STL with threads. Add advice that section
only applies if configured with --enable-threads.
Co-Authored-By: John David Anglin <dave@hiauly1.hia.nrc.ca>
From-SVN: r42998
2001-01-29 Benjamin Kosnik <bkoz@redhat.com>
Preliminary named locales.
* acinclude.m4 (GLIBCPP_ENABLE_CLOCALE): New macro.
* aclocal.m4: Regenerate.
* configure.in: Use it.
* configure: Regerate.
* src/Makefile.am (sources): Add c++locale.cc.
(build_headers): Add c++locale.h.
* src/Makefile.in: Regenerate.
* config/c_locale_gnu.h: New file.
* config/c_locale_gnu.cc: New file. Non-inline member functions
for named locales, gnu-specific.
* config/c_locale_generic.h: New file.
* config/c_locale_generic.cc: New file. Non-inline member
functions for named locales, generic version.
* docs/html/configopts.html: Add documentation on new options.
* include/bits/locale_facets.h (class _Messages): Remove.
(class _Moneypunct): Remove.
* src/locale-inst.cc: Remove.
* include/bits/locale_facets.h (class _Collate): Remove.
* src/locale-inst.cc (std): Remove.
* src/locale.cc: And here.
* include/bits/localefwd.h (locale::_M_coalesce): New
function. Correctly put together multi-name locales.
(_Impl(const _Impl&, category, size_t)): Remove.
* include/bits/localefwd.h (locale::_Impl): Remove _M_construct_*
member functions.
(_M_normalize_category_names): Remove.
(_M_replace_categories): Fix.
* src/localename.cc (locale::_Impl::_M_construct_collate): Remove.
(locale::_Impl::_M_construct_ctype): Remove.
(locale::_Impl::_M_construct_monetary): Remove.
(locale::_Impl::_M_construct_numeric): Remove.
(locale::_Impl::_M_construct_time): Remove.
(locale::_Impl::_M_construct_messages): Remove.
* include/bits/locale_facets.h (_Bad_use_facet): Remove.
(_Use_facet_failure_handle): Remove.
* src/locale.cc: Remove definitions.
* src/locale-inst.cc: And here.
* testsuite/22_locale/ctor_copy_dtor.cc (test01): Fixup. Add tests.
* src/localename.cc (locale::facet::_S_create_c_locale): Properly
create and error-check underlying locale object.
(locale::facet::_S_destroy_c_locale): Add, take care of properly
tearing down underlying locale object.
* include/bits/localefwd.h (locale::facet): Declare.
* testsuite/22_locale/members.cc: Don't test "fr_FR" locale for
correctness, as glibc apparently has incorrect info in it. Test
with it when it works again.....
* include/bits/localefwd.h (locale::_Impl::__vec_string):
Remove. Number of categories is fixed at six, so just simplify and
make this an array of strings.
(locale::_Impl::_M_has_name): Remove.
(locale::_Impl::_M_name): Remove.
(locale::_Impl::_M_category_names): Turns into...
(locale::_Impl::_M_names): ...this.
(locale::_Impl::_M_has_same_name()): New function.
* src/localename.cc (locale::_Impl::~_Impl()): Remove here.
(locale::_Impl::_Impl(size_t __refs, string __str)): Simplify
signature.
* src/locale.cc (locale::name()): Construct mangled name
accurately reflecting combined locale categories.
* src/locale.cc (locale::classic()): Don't initialize here.
* src/localename.cc (locale::_Impl::_Impl(size_t __num, size_t
__refs, bool __has_name, string __str): Do it here.
* include/bits/localefwd.h: _S_categories_num to
_S_num_categories. _S_facets_num to _S_num_facets.
(locale:🆔:id()): Explicitly set _M_index to zero.
* src/locale.cc: Same.
* src/locale.cc: (locale::locale(const char*)): Construct named
locales uniquely.
* src/locale.cc: Remove numpunct_byname ctors.
* testsuite/22_locale/numpunct_byname.cc: New file.
* testsuite/22_locale/numpunct.cc: New file.
* include/bits/localefwd.h (class locale): Change data members to
protected, from private.
(_Impl::_M_get_c_locale): Add member function.
(locale::facet::_M_get_global_impl()): Add member function.
* include/bits/locale_facets.h (numpunct::_M_init): Change to take
a __c_locale pointer.
(numpunct::numpunct( __c_locale*, size_t)): Add additonal ctor for
named locales.
* testsuite/22_locale/members.cc: New file, test name and combine.
* include/bits/locale_facets.h (class numpunct): Remove class
_Punct and _Numpunct. Rewrite class numpunct to be correct for
named locales.
* include/bits/localefwd.h (locale::_Imp::_M_c_locale): Add.
* src/localename.cc (_Impl::~_Impl()): Call __frelocale.
(_Imp::_Impl(size_t, size_t, bool, string)) Initialize _M_c_locale.
* src/locale-inst.cc: Remove _Numpunct, _Punct instantiations.
* testsuite/22_locale/numpunct_char_members.cc: New file.
From-SVN: r39347
* acinclude.m4 (GLIBCPP_CHECK_CTYPE_SUPPORT): check for DJGPP <ctype.h>
(LIB_AC_PROG_CXX): replace [/\\] with [\\/] to work around older
bash bug.
* aclocal.m4: regenerated.
* configure.target: set os_include_dir to config/os/djgpp under DJGPP.
* configure: regenerated.
* config/os/djgpp, config/os/djgpp/bits: new directories.
* config/os/djgpp/bits/ctype_base.h,
config/os/djgpp/bits/ctype_inline.h,
config/os/djgpp/bits/ctype_noninline.h,
config/os/djgpp/bits/os_defines.h: new files.
From-SVN: r38958
* config/os/bsd/freebsd/bits/ctype_inline.h (is): (Make right
code path:) Remove magic constants and restructure to handle
ctype.h bit mask layout changes more gracefully. (Make fast
code path:) Use __maskrune (), if available.
(is): Remove special case for digit and xdigit masks.
From-SVN: r38847
2001-01-05 Benjamin Kosnik <bkoz@redhat.com>
Fix 27_io/filebuf_members.cc
* src/localename.cc (locale::_Impl::_Impl(const _Impl& __imp,
const string& __name, category __cat, size_t __refs): Set
_M_has_name with _M_name.
* include/bits/localefwd.h (locale::operator!=): Protect member
function call with this->.
* src/locale.cc (locale::operator==): Make fast checks first.
* include/bits/basic_ios.tcc (basic_ios::init): Simplify.
* include/bits/ios_base.h (_M_synced_with_stdio): Add data member
to ios_base::Init.
* src/ios.cc (ios_base::Init::Init): Initialize here.
(ios_base::sync_with_stdio): Set here.
2001-01-04 Loren J. Rittle <ljrittle@acm.org>
* config/c_io_stdio.cc (__basic_file<_CharT>::sys_open()): On
systems that support it, call dup() before fdopen().
From-SVN: r38742
2001-01-02 Benjamin Kosnik <bkoz@redhat.com>
* acinclude.m4 (GLIBCPP_ENABLD_CSTDIO): Add in default value.
* aclocal.m4: Regenerate.
* configure: Regenerate.
* include/bits/c++config (__GLIBCPP__): Bump version number.
* ChangeLog: Start new log for year 2001
* ChangeLog-2000: New file.
* docs/html/configopts.html: Make sure default values are current,
From-SVN: r38663
2000-12-13 Benjamin Kosnik <bkoz@redhat.com>
* include/bits/locale_facets.h (ctype<char>): Remove throw specs not in
base class signature.
* config/os/*/bits/ctype_inline.h (is): Same.
From-SVN: r38250
* configure.target (hpux): Set os_include_dir.
* config/os/hpux/bits/ctype_base.h: New file
* config/os/hpux/bits/ctype_inline.h: New file
* config/os/hpux/bits/ctype_noinline.h: New file
* config/os/hpux/bits/os_defines.h: New file
Forgot to commit last week...
From-SVN: r38061
2000-12-05 Benjamin Kosnik <bkoz@haight.redhat.com>
* acinclude.m4 (GLIBCPP_ENABLE_LONG_LONG): Check for
lldiv_t. Allow the use of os-specific defines while checking for
long-long functions by the inclusion of os_defines.h.
* aclocal.m4: Regenerate.
* configure.in: Add comments.
* configure: Regenerate.
* acconfig.h: Add _GLIBCPP_HAVE_LLDIV_T.
* config.h.in: Regenerate.
* config/os/gnu-linux/bits/os_defines.h: Fix typos and
duplications in comments.
From-SVN: r38051
* aclocal.m4: Add test for NetBSD's ctype support.
* configure: Regenerate.
* configure.target: Support NetBSD.
* config/os/netbsd/bits/ctype_base.h: New file.
* config/os/netbsd/bits/ctype_inline.h: New file.
* config/os/netbsd/bits/ctype_noinline.h: New file.
* config/os/netbsd/bits/os_defines.h: New file.
From-SVN: r38032
* config/os/gnu-linux/bits/os_defines.h: Include <features.h>.
If not glibc 2.1 or higher, include <gnu/types.h> and define
__off64_t as __loff_t and #define __THROW as empty.
* libio/libio.h [__P]: Move __THROW and __PMT into their own
ifndef:s.
From-SVN: r37695