This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


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

[v3] smooth patches from yesterday



Does a couple of things.

1) remove special rules in src/Makefile.am for -fimplicit-templates.

2) cleans up global function names, should not have _S_ appended, as
   per C++STYLE.

3) finishes off the GLIBCPP_EXPORT_INSTALL_INFO by dealing with where
   libraries get installed, thus removing the need for USE_LIBDIR.

4) fixes typos in yesterday's changes to string-inst that stop
   compliation of wchar_t enabled builds.

tested with compiles on linux/x86 for the following configs:
(default)
(libio-wchar_t-gnu-locale)
(--enable-version-specific-runtime-libs)


2001-02-06  Benjamin Kosnik  <bkoz@fillmore.constant.com>

	* acinclude.m4 (GLIBCPP_EXPORT_INSTALL_INFO): Deal with library
	install locations too.
	* aclocal.m4: Regeneate.
	* configure.in: Remove USE_LIBDIR.
	* configure: Regenerate.
	* src/Makefile.am (toolexecdir): Simplify, use
	glibcpp_toolexecdir, glibcpp_toolexeclibdir.
	* src/Makefile.in: Regenerate.
	* libsupc++/Makefile.am: Same.
	* libsupc++/Makefile.in: Regenerate.

	* src/Makefile.am: Just remove special rules for locale-inst.cc and
	misc-inst.cc as no longer necessary.

	Follow C++STYLE for naming non-static functions.
	* include/bits/ostream.tcc (_S_pad_char): Not static, rename to
	__pad_char.
	* include/bits/streambuf.tcc: Same.
	* include/bits/ostream.tcc: Same.
	* include/bits/istream.tcc: Same.
	* include/bits/locale_facets.tcc (_S_pad_numeric): To __pad_numeric.
	(_S_output_float): To __output_float.
	* include/bits/std_streambuf.h (_S_copy_streambufs): To
	__copy_streambufs.
	* include/bits/locale_facets.tcc (_S_build_float_format): To
	__build_float_format.
	(_S_format): To __output_integer.
	(_S_fill): To __pad.
	* src/locale.cc: Same.
	* src/misc-inst.cc: Fix formatting. Fix signature for wchar_t. Correct
	names.
	* include/bits/locale_facets.tcc (_S_group_digits): To
	__group_digits.
	* src/locale-inst.cc: Fixup names. Add use_facet instantiations
	for collate, numpunct.
	
Index: Makefile.in
===================================================================
RCS file: /cvs/gcc/egcs/libstdc++-v3/Makefile.in,v
retrieving revision 1.58
diff -c -p -r1.58 Makefile.in
*** Makefile.in	2001/02/06 06:31:57	1.58
--- Makefile.in	2001/02/07 01:19:15
*************** WERROR = @WERROR@
*** 108,115 ****
  WFMT_FLAGS = @WFMT_FLAGS@
  enable_shared = @enable_shared@
  enable_static = @enable_static@
- gcc_version = @gcc_version@
  glibcpp_basedir = @glibcpp_basedir@
  gxx_include_dir = @gxx_include_dir@
  ifGNUmake = @ifGNUmake@
  libinst_wstring_la = @libinst_wstring_la@
--- 108,116 ----
  WFMT_FLAGS = @WFMT_FLAGS@
  enable_shared = @enable_shared@
  enable_static = @enable_static@
  glibcpp_basedir = @glibcpp_basedir@
+ glibcpp_toolexecdir = @glibcpp_toolexecdir@
+ glibcpp_toolexeclibdir = @glibcpp_toolexeclibdir@
  gxx_include_dir = @gxx_include_dir@
  ifGNUmake = @ifGNUmake@
  libinst_wstring_la = @libinst_wstring_la@
Index: acinclude.m4
===================================================================
RCS file: /cvs/gcc/egcs/libstdc++-v3/acinclude.m4,v
retrieving revision 1.128
diff -c -p -r1.128 acinclude.m4
*** acinclude.m4	2001/02/06 08:18:29	1.128
--- acinclude.m4	2001/02/07 01:19:20
*************** AC_DEFUN(GLIBCPP_EXPORT_FLAGS, [
*** 1500,1511 ****
    AC_SUBST(WARN_FLAGS)
  ])
  
! 
  dnl  GLIBCPP_EXPORT_INSTALL_INFO
  dnl  calculates gxx_install_dir
  dnl
  AC_DEFUN(GLIBCPP_EXPORT_INSTALL_INFO, [
  
  AC_MSG_CHECKING([for interface version number])
  libstdcxx_interface=$INTERFACE
  AC_MSG_RESULT($libstdcxx_interface)
--- 1500,1520 ----
    AC_SUBST(WARN_FLAGS)
  ])
  
! dnl
  dnl  GLIBCPP_EXPORT_INSTALL_INFO
  dnl  calculates gxx_install_dir
+ dnl  exports glibcpp_toolexecdir
+ dnl  exports glibcpp_toolexeclibdir
+ dnl
+ dnl Assumes cross_compiling bits already done, and with_cross_host in
+ dnl particular
  dnl
+ dnl GLIBCPP_EXPORT_INSTALL_INFO
  AC_DEFUN(GLIBCPP_EXPORT_INSTALL_INFO, [
  
+ glibcpp_toolexecdir=no
+ glibcpp_toolexeclibdir=no
+ 
  AC_MSG_CHECKING([for interface version number])
  libstdcxx_interface=$INTERFACE
  AC_MSG_RESULT($libstdcxx_interface)
*************** AC_ARG_ENABLE(version-specific-runtime-l
*** 1537,1559 ****
  # and header files if --enable-version-specific-runtime-libs option
  # is selected.
  changequote(,)dnl
! gcc_tmp=`grep version_string ${srcdir}/../gcc/version.c | awk '{print $6}'`
! gcc_num=`echo ${gcc_tmp} | sed 's/\"//g'`
! gcc_version=$gcc_num
! gxx_include_dir='$(libdir)/gcc-lib/$(target_alias)/$(gcc_version)/include/g++'
  changequote([,])dnl
- AC_SUBST(gcc_version)
- AM_CONDITIONAL(VERSION_SPECIFIC_LIBS, test x"$version_specific_libs" = x"yes")
  ],version_specific_libs=no)
  AC_MSG_RESULT($version_specific_libs)
  
! AC_MSG_CHECKING([for install location])
  if test x"$version_specific_libs" = x"no" \
     && test x"$gxx_include_dir"=x"no"; then
!   gxx_include_dir=${prefix}/include/g++-${libstdcxx_interface}
  fi
  AC_MSG_RESULT($gxx_include_dir)
  AC_SUBST(gxx_include_dir)
  ])
  
  
--- 1546,1585 ----
  # and header files if --enable-version-specific-runtime-libs option
  # is selected.
  changequote(,)dnl
! gcc_version_trigger=${srcdir}/../gcc/version.c
! gcc_version_full=`grep version_string ${gcc_version_trigger} | sed -e 's/.*\"\([^\"]*\)\".*/\1/'`
! gcc_version=`echo ${gcc_version_full} | sed -e 's/\([^ ]*\) .*/\1/'`
! gxx_include_dir='$(libdir)/gcc-lib/$(target_alias)/'${gcc_version}/include/g++
! glibcpp_toolexecdir='$(libdir)/gcc-lib/$(target_alias)'
! glibcpp_toolexeclibdir='$(toolexecdir)/'${gcc_version}
  changequote([,])dnl
  ],version_specific_libs=no)
  AC_MSG_RESULT($version_specific_libs)
  
! # Default case for install directory for include files.
  if test x"$version_specific_libs" = x"no" \
     && test x"$gxx_include_dir"=x"no"; then
!   gxx_include_dir='$(prefix)'/include/g++-${libstdcxx_interface}
  fi
+ 
+ # Calculate glibcpp_toolexecdir, glibcpp_toolexeclibdir
+ # Install a library built with a cross compiler in tooldir, not libdir.
+ if test x"$glibcpp_toolexecdir" = x"no"; then 
+   if test x"$with_cross_host" = x"yes"; then
+     glibcpp_toolexecdir='$(exec_prefix)/$(target_alias)'
+     glibcpp_toolexeclibdir='$(toolexecdir)/lib$(MULTISUBDIR)'
+   else
+     glibcpp_toolexecdir='$(libdir)/gcc-lib/$(target_alias)'
+     glibcpp_toolexeclibdir='$(libdir)$(MULTISUBDIR)'
+   fi
+ fi
+ 
+ AC_MSG_CHECKING([for install location])
  AC_MSG_RESULT($gxx_include_dir)
+ 
  AC_SUBST(gxx_include_dir)
+ AC_SUBST(glibcpp_toolexecdir)
+ AC_SUBST(glibcpp_toolexeclibdir)
  ])
Index: aclocal.m4
===================================================================
RCS file: /cvs/gcc/egcs/libstdc++-v3/aclocal.m4,v
retrieving revision 1.131
diff -c -p -r1.131 aclocal.m4
*** aclocal.m4	2001/02/06 08:18:29	1.131
--- aclocal.m4	2001/02/07 01:19:24
*************** AC_DEFUN(GLIBCPP_EXPORT_FLAGS, [
*** 1512,1523 ****
    AC_SUBST(WARN_FLAGS)
  ])
  
! 
  dnl  GLIBCPP_EXPORT_INSTALL_INFO
  dnl  calculates gxx_install_dir
  dnl
  AC_DEFUN(GLIBCPP_EXPORT_INSTALL_INFO, [
  
  AC_MSG_CHECKING([for interface version number])
  libstdcxx_interface=$INTERFACE
  AC_MSG_RESULT($libstdcxx_interface)
--- 1512,1532 ----
    AC_SUBST(WARN_FLAGS)
  ])
  
! dnl
  dnl  GLIBCPP_EXPORT_INSTALL_INFO
  dnl  calculates gxx_install_dir
+ dnl  exports glibcpp_toolexecdir
+ dnl  exports glibcpp_toolexeclibdir
+ dnl
+ dnl Assumes cross_compiling bits already done, and with_cross_host in
+ dnl particular
  dnl
+ dnl GLIBCPP_EXPORT_INSTALL_INFO
  AC_DEFUN(GLIBCPP_EXPORT_INSTALL_INFO, [
  
+ glibcpp_toolexecdir=no
+ glibcpp_toolexeclibdir=no
+ 
  AC_MSG_CHECKING([for interface version number])
  libstdcxx_interface=$INTERFACE
  AC_MSG_RESULT($libstdcxx_interface)
*************** AC_ARG_ENABLE(version-specific-runtime-l
*** 1549,1571 ****
  # and header files if --enable-version-specific-runtime-libs option
  # is selected.
  changequote(,)dnl
! gcc_tmp=`grep version_string ${srcdir}/../gcc/version.c | awk '{print $6}'`
! gcc_num=`echo ${gcc_tmp} | sed 's/\"//g'`
! gcc_version=$gcc_num
! gxx_include_dir='$(libdir)/gcc-lib/$(target_alias)/$(gcc_version)/include/g++'
  changequote([,])dnl
- AC_SUBST(gcc_version)
- AM_CONDITIONAL(VERSION_SPECIFIC_LIBS, test x"$version_specific_libs" = x"yes")
  ],version_specific_libs=no)
  AC_MSG_RESULT($version_specific_libs)
  
! AC_MSG_CHECKING([for install location])
  if test x"$version_specific_libs" = x"no" \
     && test x"$gxx_include_dir"=x"no"; then
!   gxx_include_dir=${prefix}/include/g++-${libstdcxx_interface}
  fi
  AC_MSG_RESULT($gxx_include_dir)
  AC_SUBST(gxx_include_dir)
  ])
  
  
--- 1558,1597 ----
  # and header files if --enable-version-specific-runtime-libs option
  # is selected.
  changequote(,)dnl
! gcc_version_trigger=${srcdir}/../gcc/version.c
! gcc_version_full=`grep version_string ${gcc_version_trigger} | sed -e 's/.*\"\([^\"]*\)\".*/\1/'`
! gcc_version=`echo ${gcc_version_full} | sed -e 's/\([^ ]*\) .*/\1/'`
! gxx_include_dir='$(libdir)/gcc-lib/$(target_alias)/'${gcc_version}/include/g++
! glibcpp_toolexecdir='$(libdir)/gcc-lib/$(target_alias)'
! glibcpp_toolexeclibdir='$(toolexecdir)/'${gcc_version}
  changequote([,])dnl
  ],version_specific_libs=no)
  AC_MSG_RESULT($version_specific_libs)
  
! # Default case for install directory for include files.
  if test x"$version_specific_libs" = x"no" \
     && test x"$gxx_include_dir"=x"no"; then
!   gxx_include_dir='$(prefix)'/include/g++-${libstdcxx_interface}
  fi
+ 
+ # Calculate glibcpp_toolexecdir, glibcpp_toolexeclibdir
+ # Install a library built with a cross compiler in tooldir, not libdir.
+ if test x"$glibcpp_toolexecdir" = x"no"; then 
+   if test x"$with_cross_host" = x"yes"; then
+     glibcpp_toolexecdir='$(exec_prefix)/$(target_alias)'
+     glibcpp_toolexeclibdir='$(toolexecdir)/lib$(MULTISUBDIR)'
+   else
+     glibcpp_toolexecdir='$(libdir)/gcc-lib/$(target_alias)'
+     glibcpp_toolexeclibdir='$(libdir)$(MULTISUBDIR)'
+   fi
+ fi
+ 
+ AC_MSG_CHECKING([for install location])
  AC_MSG_RESULT($gxx_include_dir)
+ 
  AC_SUBST(gxx_include_dir)
+ AC_SUBST(glibcpp_toolexecdir)
+ AC_SUBST(glibcpp_toolexeclibdir)
  ])
  
  
Index: configure.in
===================================================================
RCS file: /cvs/gcc/egcs/libstdc++-v3/configure.in,v
retrieving revision 1.52
diff -c -p -r1.52 configure.in
*** configure.in	2001/02/06 06:31:59	1.52
--- configure.in	2001/02/07 01:20:03
*************** AC_LINK_FILES($ATOMICITYH/bits/atomicity
*** 231,237 ****
  
  AM_CONDITIONAL(NULL_TARGET, test "$NULL_TARGET" = yes)
  AM_CONDITIONAL(NATIVE, test "$NATIVE" = yes || test "$NULL_TARGET" = yes)
- AM_CONDITIONAL(USE_LIBDIR, test -z "$with_cross_host")
  AM_CONDITIONAL(CANADIAN, test "$CANADIAN" = yes)
   
  AC_CACHE_SAVE
--- 231,236 ----
Index: include/bits/istream.tcc
===================================================================
RCS file: /cvs/gcc/egcs/libstdc++-v3/include/bits/istream.tcc,v
retrieving revision 1.4
diff -c -p -r1.4 istream.tcc
*** istream.tcc	2001/01/16 07:55:25	1.4
--- istream.tcc	2001/02/07 01:20:06
*************** namespace std {
*** 465,471 ****
        __streambuf_type* __sbin = this->rdbuf();
        sentry __cerb(*this, false);
        if (__sbout && __cerb)
! 	__xtrct = _S_copy_streambufs(*this, __sbin, __sbout);
        if (!__sbout || !__xtrct)
  	this->setstate(ios_base::failbit);
        return *this;
--- 465,471 ----
        __streambuf_type* __sbin = this->rdbuf();
        sentry __cerb(*this, false);
        if (__sbout && __cerb)
! 	__xtrct = __copy_streambufs(*this, __sbin, __sbout);
        if (!__sbout || !__xtrct)
  	this->setstate(ios_base::failbit);
        return *this;
Index: include/bits/locale_facets.tcc
===================================================================
RCS file: /cvs/gcc/egcs/libstdc++-v3/include/bits/locale_facets.tcc,v
retrieving revision 1.7
diff -c -p -r1.7 locale_facets.tcc
*** locale_facets.tcc	2001/02/06 06:36:18	1.7
--- locale_facets.tcc	2001/02/07 01:20:09
*************** namespace std
*** 715,728 ****
        return __beg;
      }
  
!   // _S_fill is specialized for ostreambuf_iterator, random access iterator.
    template <typename _CharT, typename _OutIter>
      inline _OutIter
!     _S_fill(_OutIter __s, _CharT __fill, int __padding);
  
    template <typename _CharT, typename _RaIter>
      _RaIter
!     _S_fill(_RaIter __s, _CharT __fill, int __padding,
              random_access_iterator_tag)
      {
        fill_n(__s, __fill);
--- 715,728 ----
        return __beg;
      }
  
!   // __pad is specialized for ostreambuf_iterator, random access iterator.
    template <typename _CharT, typename _OutIter>
      inline _OutIter
!     __pad(_OutIter __s, _CharT __fill, int __padding);
  
    template <typename _CharT, typename _RaIter>
      _RaIter
!     __pad(_RaIter __s, _CharT __fill, int __padding,
              random_access_iterator_tag)
      {
        fill_n(__s, __fill);
*************** namespace std
*** 731,737 ****
  
    template <typename _CharT, typename _OutIter, typename _Tag>
      _OutIter
!     _S_fill(_OutIter __s, _CharT __fill, int __padding, _Tag)
      {
        while (--__padding >= 0) { *__s = __fill; ++__s; }
        return __s;
--- 731,737 ----
  
    template <typename _CharT, typename _OutIter, typename _Tag>
      _OutIter
!     __pad(_OutIter __s, _CharT __fill, int __padding, _Tag)
      {
        while (--__padding >= 0) { *__s = __fill; ++__s; }
        return __s;
*************** namespace std
*** 739,757 ****
  
    template <typename _CharT, typename _OutIter>
      inline _OutIter
!     _S_fill(_OutIter __s, _CharT __fill, int __padding)
      {
!       return _S_fill(__s, __fill, __padding,
                       iterator_traits<_OutIter>::iterator_category());
      }
  
    template <typename _CharT, typename _OutIter>
      _OutIter
!     _S_pad_numeric(_OutIter __s, ios_base::fmtflags /*__flags*/,
!                    _CharT /*__fill*/, int /*__width*/, 
! 		   _CharT const* /*__first*/, _CharT const* /*__middle*/, 
! 		   _CharT const* /*__last*/)
!     {
        // XXX Not currently done: non streambuf_iterator
        return __s;
      }
--- 739,757 ----
  
    template <typename _CharT, typename _OutIter>
      inline _OutIter
!     __pad(_OutIter __s, _CharT __fill, int __padding)
      {
!       return __pad(__s, __fill, __padding,
                       iterator_traits<_OutIter>::iterator_category());
      }
  
    template <typename _CharT, typename _OutIter>
      _OutIter
!     __pad_numeric(_OutIter __s, ios_base::fmtflags /*__flags*/,
! 		  _CharT /*__fill*/, int /*__width*/, 
! 		  _CharT const* /*__first*/, _CharT const* /*__middle*/, 
! 		  _CharT const* /*__last*/)
!   {
        // XXX Not currently done: non streambuf_iterator
        return __s;
      }
*************** namespace std
*** 759,767 ****
    // Partial specialization for ostreambuf_iterator.
    template <typename _CharT>   
      ostreambuf_iterator<_CharT>
!     _S_pad_numeric(ostreambuf_iterator<_CharT> __s, ios_base::fmtflags __flags,
!                    _CharT __fill, int __width, _CharT const* __first,
!                    _CharT const* __middle, _CharT const* __last)
      {
        typedef ostreambuf_iterator<_CharT> 	__out_iter;
        int __padding = __width - (__last - __first);
--- 759,767 ----
    // Partial specialization for ostreambuf_iterator.
    template <typename _CharT>   
      ostreambuf_iterator<_CharT>
!     __pad_numeric(ostreambuf_iterator<_CharT> __s, ios_base::fmtflags __flags,
! 		  _CharT __fill, int __width, _CharT const* __first,
! 		  _CharT const* __middle, _CharT const* __last)
      {
        typedef ostreambuf_iterator<_CharT> 	__out_iter;
        int __padding = __width - (__last - __first);
*************** namespace std
*** 776,782 ****
          {
            if (!__testfield)
              {
!               _S_fill(__s, __fill, __padding);
                __padding = 0;
              }
            copy(__first, __middle, __s);
--- 776,782 ----
          {
            if (!__testfield)
              {
!               __pad(__s, __fill, __padding);
                __padding = 0;
              }
            copy(__first, __middle, __s);
*************** namespace std
*** 785,796 ****
  
        if (__padding && __aflags != ios_base::left)
          {
!           _S_fill(__s2, __fill, __padding);
            __padding = 0;
          }
        __out_iter __s3 = copy(__middle, __last, __s2);
        if (__padding)
!         _S_fill(__s3, __fill, __padding);
        return __s3;
      }
  
--- 785,796 ----
  
        if (__padding && __aflags != ios_base::left)
          {
!           __pad(__s2, __fill, __padding);
            __padding = 0;
          }
        __out_iter __s3 = copy(__middle, __last, __s2);
        if (__padding)
!         __pad(__s3, __fill, __padding);
        return __s3;
      }
  
*************** namespace std
*** 805,811 ****
        if ((__flags & ios_base::boolalpha) == 0)
          {
            unsigned long __uv = __v;
!           return _S_format(__s, __io, __fill, false, __uv);
          }
        else
          {
--- 805,811 ----
        if ((__flags & ios_base::boolalpha) == 0)
          {
            unsigned long __uv = __v;
!           return __output_integer(__s, __io, __fill, false, __uv);
          }
        else
          {
*************** namespace std
*** 826,844 ****
        return __s;
      }
  
!   // _S_group_digits inserts "group separator" characters into an array
    // of characters.  It's recursive, one iteration per group.  It moves
    // the characters in the buffer this way: "xxxx12345" -> "12,345xxx".
    // Call this only with __grouping != __grend.
    template <typename _CharT>
      _CharT*
!     _S_group_digits(_CharT* __s, _CharT __grsep,  char const* __grouping,
                      char const* __grend, _CharT const* __first,
                      _CharT const* __last)
      {
        if (__last - __first > *__grouping)
          {
!           __s = _S_group_digits(__s,  __grsep,
                (__grouping + 1 == __grend ? __grouping : __grouping + 1),
                __grend, __first, __last - *__grouping);
            __first = __last - *__grouping;
--- 826,844 ----
        return __s;
      }
  
!   // __group_digits inserts "group separator" characters into an array
    // of characters.  It's recursive, one iteration per group.  It moves
    // the characters in the buffer this way: "xxxx12345" -> "12,345xxx".
    // Call this only with __grouping != __grend.
    template <typename _CharT>
      _CharT*
!     __group_digits(_CharT* __s, _CharT __grsep,  char const* __grouping,
                      char const* __grend, _CharT const* __first,
                      _CharT const* __last)
      {
        if (__last - __first > *__grouping)
          {
!           __s = __group_digits(__s,  __grsep,
                (__grouping + 1 == __grend ? __grouping : __grouping + 1),
                __grend, __first, __last - *__grouping);
            __first = __last - *__grouping;
*************** namespace std
*** 854,860 ****
  
    template <typename _CharT, typename _OutIter, typename _ValueT>
      _OutIter
!     _S_format(_OutIter __s, ios_base& __io, _CharT __fill, bool __neg,
                _ValueT __v)
      {
        // Leave room for "+/-," "0x," and commas.
--- 854,860 ----
  
    template <typename _CharT, typename _OutIter, typename _ValueT>
      _OutIter
!     __output_integer(_OutIter __s, ios_base& __io, _CharT __fill, bool __neg,
                _ValueT __v)
      {
        // Leave room for "+/-," "0x," and commas.
*************** namespace std
*** 909,925 ****
          return copy(__front, __digits + _M_room, __s);
  
        if (!__fmt->_M_use_grouping)
!         return _S_pad_numeric(__s, __flags, __fill, __io.width(0),
!                               __front, __sign_end, __digits + _M_room);
  
        _CharT* __p = __digits;
        while (__front < __sign_end)
          *__p++ = *__front++;
        const char* __gr = __fmt->_M_grouping.data();
!       __front = _S_group_digits(__p, __fmt->_M_thousands_sep, __gr,
          __gr + __fmt->_M_grouping.size(), __sign_end, __digits + _M_room);
!       return _S_pad_numeric(__s, __flags, __fill, __io.width(0),
!                             __digits, __p, __front);
      }
  
    template <typename _CharT, typename _OutIter>
--- 909,925 ----
          return copy(__front, __digits + _M_room, __s);
  
        if (!__fmt->_M_use_grouping)
!         return __pad_numeric(__s, __flags, __fill, __io.width(0),
! 			     __front, __sign_end, __digits + _M_room);
  
        _CharT* __p = __digits;
        while (__front < __sign_end)
          *__p++ = *__front++;
        const char* __gr = __fmt->_M_grouping.data();
!       __front = __group_digits(__p, __fmt->_M_thousands_sep, __gr,
          __gr + __fmt->_M_grouping.size(), __sign_end, __digits + _M_room);
!       return __pad_numeric(__s, __flags, __fill, __io.width(0),
! 			   __digits, __p, __front);
      }
  
    template <typename _CharT, typename _OutIter>
*************** namespace std
*** 934,940 ****
            __neg = true;
            __uv = -__uv;
          }
!       return _S_format(__s, __io, __fill, __neg, __uv);
      }
  
    template <typename _CharT, typename _OutIter>
--- 934,940 ----
            __neg = true;
            __uv = -__uv;
          }
!       return __output_integer(__s, __io, __fill, __neg, __uv);
      }
  
    template <typename _CharT, typename _OutIter>
*************** namespace std
*** 942,948 ****
      num_put<_CharT, _OutIter>::
      do_put(iter_type __s, ios_base& __io, char_type __fill,
             unsigned long __v) const
!     { return _S_format(__s, __io, __fill, false, __v); }
  
  #ifdef _GLIBCPP_USE_LONG_LONG
    template <typename _CharT, typename _OutIter>
--- 942,948 ----
      num_put<_CharT, _OutIter>::
      do_put(iter_type __s, ios_base& __io, char_type __fill,
             unsigned long __v) const
!     { return __output_integer(__s, __io, __fill, false, __v); }
  
  #ifdef _GLIBCPP_USE_LONG_LONG
    template <typename _CharT, typename _OutIter>
*************** namespace std
*** 957,963 ****
            __neg = true;
            __uv = -__uv;
          }
!       return _S_format(__s, __b, __fill, __neg, __uv);
      }
  
    template <typename _CharT, typename _OutIter>
--- 957,963 ----
            __neg = true;
            __uv = -__uv;
          }
!       return __output_integer(__s, __b, __fill, __neg, __uv);
      }
  
    template <typename _CharT, typename _OutIter>
*************** namespace std
*** 965,977 ****
      num_put<_CharT, _OutIter>::
      do_put(iter_type __s, ios_base& __io, char_type __fill,
             unsigned long long __v) const
!     { return _S_format(__s, __io, __fill, false, __v); }
  #endif
  
    // Generic helper function
    template<typename _CharT, typename _OutIter>
      _OutIter
!     _S_output_float(_OutIter __s, ios_base& __io, _CharT __fill,
                      const char* __sptr, size_t __slen)
      {
        // XXX Not currently done: non streambuf_iterator
--- 965,977 ----
      num_put<_CharT, _OutIter>::
      do_put(iter_type __s, ios_base& __io, char_type __fill,
             unsigned long long __v) const
!     { return __output_integer(__s, __io, __fill, false, __v); }
  #endif
  
    // Generic helper function
    template<typename _CharT, typename _OutIter>
      _OutIter
!     __output_float(_OutIter __s, ios_base& __io, _CharT __fill,
                      const char* __sptr, size_t __slen)
      {
        // XXX Not currently done: non streambuf_iterator
*************** namespace std
*** 981,987 ****
    // Partial specialization for ostreambuf_iterator.
    template<typename _CharT>
      ostreambuf_iterator<_CharT>
!     _S_output_float(ostreambuf_iterator<_CharT> __s, ios_base& __io, 
  		    _CharT __fill, const char* __sptr, size_t __slen)
      {
        size_t __padding = __io.width() > streamsize(__slen) ?
--- 981,987 ----
    // Partial specialization for ostreambuf_iterator.
    template<typename _CharT>
      ostreambuf_iterator<_CharT>
!     __output_float(ostreambuf_iterator<_CharT> __s, ios_base& __io, 
  		    _CharT __fill, const char* __sptr, size_t __slen)
      {
        size_t __padding = __io.width() > streamsize(__slen) ?
*************** namespace std
*** 1000,1011 ****
               ++__s;
               ++__sptr;
             }
!          __s = _S_fill(__s, __fill, __padding);
           __padding = 0;
         }
        else if (__adjfield != ios_base::left)
          {
!           __s = _S_fill(__s, __fill, __padding);
            __padding = 0;
          }
        // the "C" locale decimal character
--- 1000,1011 ----
               ++__s;
               ++__sptr;
             }
!          __s = __pad(__s, __fill, __padding);
           __padding = 0;
         }
        else if (__adjfield != ios_base::left)
          {
!           __s = __pad(__s, __fill, __padding);
            __padding = 0;
          }
        // the "C" locale decimal character
*************** namespace std
*** 1022,1035 ****
         }
        // [22.2.2.2.2.19] Table 61
        if (__padding)
!         _S_fill(__s, __fill, __padding);
        __io.width(0);
        return __s;
      }
  
    bool
!   _S_build_float_format(ios_base& __io, char* __fptr, char __modifier,
!                         streamsize __prec);
  
    template <typename _CharT, typename _OutIter>
      _OutIter
--- 1022,1035 ----
         }
        // [22.2.2.2.2.19] Table 61
        if (__padding)
!         __pad(__s, __fill, __padding);
        __io.width(0);
        return __s;
      }
  
    bool
!   __build_float_format(ios_base& __io, char* __fptr, char __modifier,
! 		       streamsize __prec);
  
    template <typename _CharT, typename _OutIter>
      _OutIter
*************** namespace std
*** 1046,1057 ****
        size_t __slen;
        // Long enough for the max format spec.
        char __fbuf[16];
!       if (_S_build_float_format(__io, __fbuf, 0, __prec))
          __slen = sprintf(__sbuf, __fbuf, __prec, __v);
        else
          __slen = sprintf(__sbuf, __fbuf, __v);
        // [22.2.2.2.2] Stages 2-4.
!       return _S_output_float(__s, __io, __fill, __sbuf, __slen);
      }
  
    template <typename _CharT, typename _OutIter>
--- 1046,1057 ----
        size_t __slen;
        // Long enough for the max format spec.
        char __fbuf[16];
!       if (__build_float_format(__io, __fbuf, 0, __prec))
          __slen = sprintf(__sbuf, __fbuf, __prec, __v);
        else
          __slen = sprintf(__sbuf, __fbuf, __v);
        // [22.2.2.2.2] Stages 2-4.
!       return __output_float(__s, __io, __fill, __sbuf, __slen);
      }
  
    template <typename _CharT, typename _OutIter>
*************** namespace std
*** 1071,1082 ****
        // Long enough for the max format spec.
        char __fbuf[16];
        // 'L' as per [22.2.2.2.2] Table 59
!       if ( _S_build_float_format(__io, __fbuf, 'L', __prec))
          __slen = sprintf(__sbuf, __fbuf, __prec, __v);
        else
          __slen = sprintf(__sbuf, __fbuf, __v);
        // [22.2.2.2.2] Stages 2-4
!       return _S_output_float(__s, __io, __fill, __sbuf, __slen);
      }
  
    template <typename _CharT, typename _OutIter>
--- 1071,1082 ----
        // Long enough for the max format spec.
        char __fbuf[16];
        // 'L' as per [22.2.2.2.2] Table 59
!       if (__build_float_format(__io, __fbuf, 'L', __prec))
          __slen = sprintf(__sbuf, __fbuf, __prec, __v);
        else
          __slen = sprintf(__sbuf, __fbuf, __v);
        // [22.2.2.2.2] Stages 2-4
!       return __output_float(__s, __io, __fill, __sbuf, __slen);
      }
  
    template <typename _CharT, typename _OutIter>
*************** namespace std
*** 1091,1097 ****
                               | ios_base::uppercase | ios_base::internal);
        __io.flags(__fmt & __fmtmask | (ios_base::hex | ios_base::showbase));
        try {
!         _OutIter __s2 = _S_format(__s, __io, __fill, false,
                                    reinterpret_cast<unsigned long>(__v));
          __io.flags(__fmt);
          return __s2;
--- 1091,1097 ----
                               | ios_base::uppercase | ios_base::internal);
        __io.flags(__fmt & __fmtmask | (ios_base::hex | ios_base::showbase));
        try {
!         _OutIter __s2 = __output_integer(__s, __io, __fill, false,
                                    reinterpret_cast<unsigned long>(__v));
          __io.flags(__fmt);
          return __s2;
Index: include/bits/ostream.tcc
===================================================================
RCS file: /cvs/gcc/egcs/libstdc++-v3/include/bits/ostream.tcc,v
retrieving revision 1.1
diff -c -p -r1.1 ostream.tcc
*** ostream.tcc	2000/10/05 11:27:01	1.1
--- ostream.tcc	2001/02/07 01:20:10
***************
*** 1,4 ****
! // 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
--- 1,4 ----
! // Copyright (C) 1997, 1998, 1999, 2000, 2001 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
*************** namespace std {
*** 309,315 ****
        __streambuf_type* __sbout = this->rdbuf();
        sentry __cerb(*this);
        if (__sbin && __cerb)
! 	__xtrct = _S_copy_streambufs(*this, __sbin, __sbout);
        if (!__sbin || !__xtrct)
  	this->setstate(ios_base::failbit);
        return *this;
--- 309,315 ----
        __streambuf_type* __sbout = this->rdbuf();
        sentry __cerb(*this);
        if (__sbin && __cerb)
! 	__xtrct = __copy_streambufs(*this, __sbin, __sbout);
        if (!__sbin || !__xtrct)
  	this->setstate(ios_base::failbit);
        return *this;
*************** namespace std {
*** 401,416 ****
    // 27.6.2.5.4 Character inserters
  
    // Construct correctly padded string, as per 22.2.2.2.2
!   // Similar in theory to _S_pad_numeric, from num_put, but it doesn't
    // use _S_fill: perhaps it should.
    // Assumes 
    // __newlen > __oldlen
    // __news is allocated for __newlen size
    template<typename _CharT, typename _Traits>
      void
!     _S_pad_char(basic_ios<_CharT, _Traits>& __ios, 
! 		_CharT* __news, const _CharT* __olds,
! 		const streamsize __newlen, const streamsize __oldlen)
      {
        typedef _CharT	char_type;
        typedef _Traits	traits_type;
--- 401,416 ----
    // 27.6.2.5.4 Character inserters
  
    // Construct correctly padded string, as per 22.2.2.2.2
!   // Similar in theory to __pad_numeric, from num_put, but it doesn't
    // use _S_fill: perhaps it should.
    // Assumes 
    // __newlen > __oldlen
    // __news is allocated for __newlen size
    template<typename _CharT, typename _Traits>
      void
!     __pad_char(basic_ios<_CharT, _Traits>& __ios, 
! 	       _CharT* __news, const _CharT* __olds,
! 	       const streamsize __newlen, const streamsize __oldlen)
      {
        typedef _CharT	char_type;
        typedef _Traits	traits_type;
*************** namespace std {
*** 501,507 ****
  	    streamsize __len = 1;
  	    if (__w > __len)
  	      {
! 		_S_pad_char(__out, __pads, &__c, __w, __len);
  		__len = __w;
  	      }
  	    __out.write(__pads, __len);
--- 501,507 ----
  	    streamsize __len = 1;
  	    if (__w > __len)
  	      {
! 		__pad_char(__out, __pads, &__c, __w, __len);
  		__len = __w;
  	      }
  	    __out.write(__pads, __len);
*************** namespace std {
*** 534,540 ****
  	    streamsize __len = 1;
  	    if (__w > __len)
  	      {
! 		_S_pad_char(__out, __pads, &__c, __w, __len);
  		__len = __w;
  	      }
  	    __out.write(__pads, __len);
--- 534,540 ----
  	    streamsize __len = 1;
  	    if (__w > __len)
  	      {
! 		__pad_char(__out, __pads, &__c, __w, __len);
  		__len = __w;
  	      }
  	    __out.write(__pads, __len);
*************** namespace std {
*** 565,571 ****
  	    streamsize __len = static_cast<streamsize>(_Traits::length(__s));
  	    if (__w > __len)
  	      {
! 		_S_pad_char(__out, __pads, __s, __w, __len);
  		__s = __pads;
  		__len = __w;
  	      }
--- 565,571 ----
  	    streamsize __len = static_cast<streamsize>(_Traits::length(__s));
  	    if (__w > __len)
  	      {
! 		__pad_char(__out, __pads, __s, __w, __len);
  		__s = __pads;
  		__len = __w;
  	      }
*************** namespace std {
*** 608,614 ****
  
  	    if (__w > __len)
  	      {
! 		_S_pad_char(__out, __pads, __ws, __w, __len);
  		__str = __pads;
  		__len = __w;
  	      }
--- 608,614 ----
  
  	    if (__w > __len)
  	      {
! 		__pad_char(__out, __pads, __ws, __w, __len);
  		__str = __pads;
  		__len = __w;
  	      }
*************** namespace std {
*** 641,647 ****
  	    streamsize __len = static_cast<streamsize>(_Traits::length(__s));
  	    if (__w > __len)
  	      {
! 		_S_pad_char(__out, __pads, __s, __w, __len);
  		__s = __pads;
  		__len = __w;
  	      }
--- 641,647 ----
  	    streamsize __len = static_cast<streamsize>(_Traits::length(__s));
  	    if (__w > __len)
  	      {
! 		__pad_char(__out, __pads, __s, __w, __len);
  		__s = __pads;
  		__len = __w;
  	      }
Index: include/bits/std_streambuf.h
===================================================================
RCS file: /cvs/gcc/egcs/libstdc++-v3/include/bits/std_streambuf.h,v
retrieving revision 1.4
diff -c -p -r1.4 std_streambuf.h
*** std_streambuf.h	2001/02/06 06:36:18	1.4
--- std_streambuf.h	2001/02/07 01:20:12
*************** namespace std {
*** 44,52 ****
  
    template<typename _CharT, typename _Traits>
      streamsize
!     _S_copy_streambufs(basic_ios<_CharT, _Traits>& _ios,
! 		       basic_streambuf<_CharT, _Traits>* __sbin,
! 		       basic_streambuf<_CharT, _Traits>* __sbout);
    
    // 27.5.2 Template class basic_streambuf<_CharT, _Traits>
    template<typename _CharT, typename _Traits>
--- 44,52 ----
  
    template<typename _CharT, typename _Traits>
      streamsize
!     __copy_streambufs(basic_ios<_CharT, _Traits>& _ios,
! 		      basic_streambuf<_CharT, _Traits>* __sbin,
! 		      basic_streambuf<_CharT, _Traits>* __sbout);
    
    // 27.5.2 Template class basic_streambuf<_CharT, _Traits>
    template<typename _CharT, typename _Traits>
*************** namespace std {
*** 71,78 ****
        friend class ostreambuf_iterator<char_type, traits_type>;
  
        friend streamsize
!       _S_copy_streambufs<>(basic_ios<char_type, traits_type>& __ios,
! 			   __streambuf_type* __sbin,__streambuf_type* __sbout);
        
      protected:
  
--- 71,78 ----
        friend class ostreambuf_iterator<char_type, traits_type>;
  
        friend streamsize
!       __copy_streambufs<>(basic_ios<char_type, traits_type>& __ios,
! 			  __streambuf_type* __sbin,__streambuf_type* __sbout);
        
      protected:
  
Index: include/bits/streambuf.tcc
===================================================================
RCS file: /cvs/gcc/egcs/libstdc++-v3/include/bits/streambuf.tcc,v
retrieving revision 1.2
diff -c -p -r1.2 streambuf.tcc
*** streambuf.tcc	2001/01/16 07:55:26	1.2
--- streambuf.tcc	2001/02/07 01:20:13
*************** namespace std {
*** 183,192 ****
    // necessary.
    template<typename _CharT, typename _Traits>
      streamsize
!     _S_copy_streambufs(basic_ios<_CharT, _Traits>& __ios,
! 		       basic_streambuf<_CharT, _Traits>* __sbin,
! 		       basic_streambuf<_CharT, _Traits>* __sbout) 
!     {
        typedef typename _Traits::int_type	int_type;
  
        streamsize __ret = 0;
--- 183,192 ----
    // necessary.
    template<typename _CharT, typename _Traits>
      streamsize
!     __copy_streambufs(basic_ios<_CharT, _Traits>& __ios,
! 		      basic_streambuf<_CharT, _Traits>* __sbin,
! 		      basic_streambuf<_CharT, _Traits>* __sbout) 
!   {
        typedef typename _Traits::int_type	int_type;
  
        streamsize __ret = 0;
Index: libsupc++/Makefile.am
===================================================================
RCS file: /cvs/gcc/egcs/libstdc++-v3/libsupc++/Makefile.am,v
retrieving revision 1.18
diff -c -p -r1.18 Makefile.am
*** Makefile.am	2001/02/06 06:32:01	1.18
--- Makefile.am	2001/02/07 01:20:15
*************** MAINT_CHARSET = latin1
*** 27,45 ****
  mkinstalldirs = $(SHELL) $(toplevel_srcdir)/mkinstalldirs
  
  # Cross compiler and multilib support.
! # Install a library built with a cross compiler in tooldir, not libdir.
! if USE_LIBDIR
! if VERSION_SPECIFIC_LIBS
! gcc_version = @gcc_version@
! toolexecdir = $(libdir)/gcc-lib/$(target_alias)
! toolexeclibdir = $(toolexecdir)/$(gcc_version)
! else
! toolexeclibdir = $(libdir)$(MULTISUBDIR)
! endif
! else
! toolexecdir = $(exec_prefix)/$(target_alias)
! toolexeclibdir = $(toolexecdir)/lib$(MULTISUBDIR)
! endif
  
  
  # Need this library to both be part of libstdc++.a, and installed
--- 27,34 ----
  mkinstalldirs = $(SHELL) $(toplevel_srcdir)/mkinstalldirs
  
  # Cross compiler and multilib support.
! toolexecdir = @glibcpp_toolexecdir@
! toolexeclibdir = @glibcpp_toolexeclibdir@
  
  
  # Need this library to both be part of libstdc++.a, and installed
Index: src/Makefile.am
===================================================================
RCS file: /cvs/gcc/egcs/libstdc++-v3/src/Makefile.am,v
retrieving revision 1.69
diff -c -p -r1.69 Makefile.am
*** Makefile.am	2001/02/06 06:36:18	1.69
--- Makefile.am	2001/02/07 01:20:17
*************** MAINT_CHARSET = latin1
*** 29,48 ****
  mkinstalldirs = $(SHELL) $(toplevel_srcdir)/mkinstalldirs
  
  # Cross compiler and multilib support.
! # Install a library built with a cross compiler in tooldir, not libdir.
! if USE_LIBDIR
! if VERSION_SPECIFIC_LIBS
! gcc_version = @gcc_version@
! toolexecdir = $(libdir)/gcc-lib/$(target_alias)
! toolexeclibdir = $(toolexecdir)/$(gcc_version)
! else
! toolexeclibdir = $(libdir)$(MULTISUBDIR)
! endif
! else
! toolexecdir = $(exec_prefix)/$(target_alias)
! toolexeclibdir = $(toolexecdir)/lib$(MULTISUBDIR)
! endif
! 
  toolexeclib_LTLIBRARIES = libstdc++.la
  EXTRA_LTLIBRARIES = libinst-string.la libinst-wstring.la
  
--- 29,36 ----
  mkinstalldirs = $(SHELL) $(toplevel_srcdir)/mkinstalldirs
  
  # Cross compiler and multilib support.
! toolexecdir = @glibcpp_toolexecdir@
! toolexeclibdir = @glibcpp_toolexeclibdir@
  toolexeclib_LTLIBRARIES = libstdc++.la
  EXTRA_LTLIBRARIES = libinst-string.la libinst-wstring.la
  
*************** myinstallheaders: 
*** 292,310 ****
  	done; \
  	fi;
  
- 
- # We have to handle misc-inst.cc and locale-inst.cc in a special way
- # since we cannot instantiate all classes due to missing definitions
- # for things like vptrs, type_info bits, etc. when using
- # -fno-implicit-templates.
- misc-inst.o: misc-inst.cc
- 	$(CXXCOMPILE) -c $<
- misc-inst.lo: misc-inst.cc
- 	$(LTCXXCOMPILE) -c $<
- locale-inst.o: locale-inst.cc
- 	$(CXXCOMPILE) -c $<
- locale-inst.lo: locale-inst.cc
- 	$(LTCXXCOMPILE) -c $<
  
  # Use special rules for the deprecated source files so that they find
  # deprecated include files.
--- 280,285 ----
Index: src/locale-inst.cc
===================================================================
RCS file: /cvs/gcc/egcs/libstdc++-v3/src/locale-inst.cc,v
retrieving revision 1.13
diff -c -p -r1.13 locale-inst.cc
*** locale-inst.cc	2001/02/06 06:36:18	1.13
--- locale-inst.cc	2001/02/07 01:20:20
*************** namespace std {
*** 136,158 ****
    // use_facet
    template 
      const num_put<char, obuf_iterator >& 
!     use_facet<num_put<char, obuf_iterator> >(const locale &);
    template 
      const num_get<char, ibuf_iterator >& 
!     use_facet<num_get<char, ibuf_iterator> >(const locale &);
    template
      const codecvt<char, char, mbstate_t>& 
      use_facet<codecvt<char, char, mbstate_t> >(const locale&);
  #ifdef _GLIBCPP_USE_WCHAR_T
    template 
      const num_put<wchar_t, wobuf_iterator>& 
!     use_facet<num_put<wchar_t, wobuf_iterator> >(const locale &);
    template 
      const num_get<wchar_t, wibuf_iterator>& 
!     use_facet<num_get<wchar_t, wibuf_iterator> >(const locale &);
    template
      const codecvt<wchar_t, char, mbstate_t>& 
!     use_facet<codecvt<wchar_t, char, mbstate_t> >(locale const &);
  #endif
  
    // has_facet
--- 136,170 ----
    // use_facet
    template 
      const num_put<char, obuf_iterator >& 
!     use_facet<num_put<char, obuf_iterator> >(const locale&);
    template 
      const num_get<char, ibuf_iterator >& 
!     use_facet<num_get<char, ibuf_iterator> >(const locale&);
    template
      const codecvt<char, char, mbstate_t>& 
      use_facet<codecvt<char, char, mbstate_t> >(const locale&);
+   template
+     const numpunct<char>& 
+     use_facet<numpunct<char> >(const locale&);
+   template
+     const collate<char>& 
+     use_facet<collate<char> >(const locale&);
  #ifdef _GLIBCPP_USE_WCHAR_T
    template 
      const num_put<wchar_t, wobuf_iterator>& 
!     use_facet<num_put<wchar_t, wobuf_iterator> >(const locale&);
    template 
      const num_get<wchar_t, wibuf_iterator>& 
!     use_facet<num_get<wchar_t, wibuf_iterator> >(const locale&);
    template
      const codecvt<wchar_t, char, mbstate_t>& 
!     use_facet<codecvt<wchar_t, char, mbstate_t> >(locale const&);
!   template
!     const numpunct<wchar_t>& 
!     use_facet<numpunct<wchar_t> >(const locale&);
!   template
!     const collate<wchar_t>& 
!     use_facet<collate<wchar_t> >(const locale&);
  #endif
  
    // has_facet
*************** namespace std {
*** 211,239 ****
  
    template
      ostreambuf_iter
!     _S_fill<char, ostreambuf_iter, output_iterator_tag>
      (ostreambuf_iter, char, int, output_iterator_tag);
  
    template 
      ostreambuf_iter
!     _S_pad_numeric<char, ostreambuf_iter>
      (ostreambuf_iter, ios_base::fmtflags, char, int, char const*, char const*, 
       char const*);
  
    template
      char*
!     _S_group_digits<char>(char*, char, char const*, char const*, 
! 			  char const*, char const*);
  
    template 
      ostreambuf_iter
!     _S_format<char, ostreambuf_iter, unsigned long>
      (ostreambuf_iter, ios_base &, char, bool, unsigned long);
  
  #ifdef _GLIBCPP_USE_LONG_LONG
    template
      ostreambuf_iter
!     _S_format<char, ostreambuf_iter, unsigned long long>
      (ostreambuf_iter, ios_base &, char, bool, unsigned long long);
  #endif
  
--- 223,251 ----
  
    template
      ostreambuf_iter
!     __pad<char, ostreambuf_iter, output_iterator_tag>
      (ostreambuf_iter, char, int, output_iterator_tag);
  
    template 
      ostreambuf_iter
!     __pad_numeric<char, ostreambuf_iter>
      (ostreambuf_iter, ios_base::fmtflags, char, int, char const*, char const*, 
       char const*);
  
    template
      char*
!     __group_digits<char>(char*, char, char const*, char const*, 
! 			 char const*, char const*);
  
    template 
      ostreambuf_iter
!     __output_integer<char, ostreambuf_iter, unsigned long>
      (ostreambuf_iter, ios_base &, char, bool, unsigned long);
  
  #ifdef _GLIBCPP_USE_LONG_LONG
    template
      ostreambuf_iter
!     __output_integer<char, ostreambuf_iter, unsigned long long>
      (ostreambuf_iter, ios_base &, char, bool, unsigned long long);
  #endif
  
*************** namespace std {
*** 246,274 ****
  
    template
      wostreambuf_iter
!     _S_fill<wchar_t, wostreambuf_iter, output_iterator_tag>
      (wostreambuf_iter, wchar_t, int, output_iterator_tag);
  
    template 
      wostreambuf_iter
!     _S_pad_numeric<wchar_t, wostreambuf_iter>
!     (wostreambuf_iter, ios_base::fmtflags, wchar_t __fill, int, wchar_t const*, 
       wchar_t const*, wchar_t const*);
  
    template
      wchar_t*
!     _S_group_digits<wchar_t>(wchar_t*, wchar_t, char const*, char const*, 
! 			     wchar_t const*, wchar_t const*);
  
    template 
      wostreambuf_iter
!     _S_format<wchar_t, wostreambuf_iter, unsigned long>
      (wostreambuf_iter, ios_base &, wchar_t, bool, unsigned long);
  
  #ifdef _GLIBCPP_USE_LONG_LONG
    template
      wostreambuf_iter
!     _S_format<wchar_t, wostreambuf_iter, unsigned long long>
      (wostreambuf_iter, ios_base &, wchar_t, bool, unsigned long long);
  #endif
  #endif // _GLIBCPP_USE_WCHAR_T
--- 258,286 ----
  
    template
      wostreambuf_iter
!     __pad<wchar_t, wostreambuf_iter, output_iterator_tag>
      (wostreambuf_iter, wchar_t, int, output_iterator_tag);
  
    template 
      wostreambuf_iter
!     __pad_numeric<wchar_t, wostreambuf_iter>
!     (wostreambuf_iter, ios_base::fmtflags, wchar_t __fill, int, wchar_t const*,
       wchar_t const*, wchar_t const*);
  
    template
      wchar_t*
!     __group_digits<wchar_t>(wchar_t*, wchar_t, char const*, char const*, 
! 			    wchar_t const*, wchar_t const*);
  
    template 
      wostreambuf_iter
!     __output_integer<wchar_t, wostreambuf_iter, unsigned long>
      (wostreambuf_iter, ios_base &, wchar_t, bool, unsigned long);
  
  #ifdef _GLIBCPP_USE_LONG_LONG
    template
      wostreambuf_iter
!     __output_integer<wchar_t, wostreambuf_iter, unsigned long long>
      (wostreambuf_iter, ios_base &, wchar_t, bool, unsigned long long);
  #endif
  #endif // _GLIBCPP_USE_WCHAR_T
*************** namespace std {
*** 284,293 ****
      (locale::facet**, unsigned long, locale::facet* const&);
  
    template
-     const numpunct<char>& 
-     use_facet(const locale&);
- 
-   template
      void __sink_unused_warning<locale::facet*>(locale::facet*);
  
    template
--- 296,301 ----
*************** namespace std {
*** 304,312 ****
  	  __normal_iterator<locale::facet**, 
  	                    vector<locale::facet*> >,
  	  locale::facet* const&);
- 
-   template
-     const collate<char>&
-     use_facet<collate<char> >(const locale&);
  } //std
  
--- 312,316 ----
Index: src/locale.cc
===================================================================
RCS file: /cvs/gcc/egcs/libstdc++-v3/src/locale.cc,v
retrieving revision 1.26
diff -c -p -r1.26 locale.cc
*** locale.cc	2001/01/30 09:18:51	1.26
--- locale.cc	2001/02/07 01:20:22
*************** namespace std 
*** 981,988 ****
    // implementation follows the C++ standard fairly directly as
    // outlined in 22.2.2.2 [lib.locale.num.put]
    bool
!   _S_build_float_format(ios_base& __io, char* __fptr, char __modifier,
!                         streamsize __prec)
    {
      bool __incl_prec = false;
      ios_base::fmtflags __flags = __io.flags();
--- 981,988 ----
    // implementation follows the C++ standard fairly directly as
    // outlined in 22.2.2.2 [lib.locale.num.put]
    bool
!   __build_float_format(ios_base& __io, char* __fptr, char __modifier,
! 		       streamsize __prec)
    {
      bool __incl_prec = false;
      ios_base::fmtflags __flags = __io.flags();
Index: src/misc-inst.cc
===================================================================
RCS file: /cvs/gcc/egcs/libstdc++-v3/src/misc-inst.cc,v
retrieving revision 1.6
diff -c -p -r1.6 misc-inst.cc
*** misc-inst.cc	2001/02/06 17:41:44	1.6
--- misc-inst.cc	2001/02/07 01:20:23
***************
*** 1,6 ****
  // Explicit instantiation file.
  
! // Copyright (C) 1997-1999, 2000, 2001 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
--- 1,6 ----
  // Explicit instantiation file.
  
! // Copyright (C) 1997, 1998, 1999, 2000, 2001 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
*************** namespace std {
*** 262,308 ****
  
    template
      void 
!     _S_pad_char (basic_ios<char>&, char*, const char*,
! 		 const streamsize, const streamsize);
  #ifdef _GLIBCPP_USE_WCHAR_T
    template
      void 
!     _S_pad_char (basic_ios<wchar_t>&, wchar_t*, const wchar_t*,
! 		 const streamsize, const streamsize);
  #endif
  
    template
      ostreambuf_iterator<char>
!     _S_pad_numeric (ostreambuf_iterator<char>, _Ios_Fmtflags, char, int,
! 		    const char*, const char*, const char*);
  #ifdef _GLIBCPP_USE_WCHAR_T
    template
      ostreambuf_iterator<wchar_t>
!     _S_pad_numeric (ostreambuf_iterator<wchar_t>, _Ios_Fmtflags, wchar_t, int,
! 		    const wchar_t*, const wchar_t*, const wchar_t*);
  #endif
  
    template
      ostreambuf_iterator<char>
!     _S_output_float (ostreambuf_iterator<char>, ios_base&, char, 
! 		     const char*, size_t);
  #ifdef _GLIBCPP_USE_WCHAR_T
    template
      ostreambuf_iterator<wchar_t>
!     _S_output_float (ostreambuf_iterator<wchar_t>, ios_base&, wchar_t, 
! 		     const wchar_t*, size_t);
  #endif
  
    template
      streamsize
!     _S_copy_streambufs(basic_ios<char>&, 
! 		       basic_streambuf<char>*,
! 		       basic_streambuf<char>*); 
  #ifdef _GLIBCPP_USE_WCHAR_T
    template
      int
!     _S_copy_streambufs(basic_ios<wchar_t>&, 
! 		       basic_streambuf<wchar_t>*,
! 		       basic_streambuf<wchar_t>*); 
  #endif
  } //std
--- 262,312 ----
  
    template
      void 
!     __pad_char(basic_ios<char>&, char*, const char*,
! 		const streamsize, const streamsize);
  #ifdef _GLIBCPP_USE_WCHAR_T
    template
      void 
!     __pad_char(basic_ios<wchar_t>&, wchar_t*, const wchar_t*,
! 		const streamsize, const streamsize);
  #endif
  
    template
      ostreambuf_iterator<char>
!     __pad_numeric(ostreambuf_iterator<char>, _Ios_Fmtflags, char, int,
! 		  const char*, const char*, const char*);
  #ifdef _GLIBCPP_USE_WCHAR_T
    template
      ostreambuf_iterator<wchar_t>
!     __pad_numeric(ostreambuf_iterator<wchar_t>, _Ios_Fmtflags, wchar_t, int,
! 		  const wchar_t*, const wchar_t*, const wchar_t*);
  #endif
  
    template
      ostreambuf_iterator<char>
!     __output_float(ostreambuf_iterator<char>, ios_base&, char, 
! 		   const char*, size_t);
  #ifdef _GLIBCPP_USE_WCHAR_T
    template
      ostreambuf_iterator<wchar_t>
!     __output_float(ostreambuf_iterator<wchar_t>, ios_base&, wchar_t, 
! 		   const char*, size_t);
  #endif
  
    template
      streamsize
!     __copy_streambufs(basic_ios<char>&, 
! 		      basic_streambuf<char>*,
! 		      basic_streambuf<char>*); 
  #ifdef _GLIBCPP_USE_WCHAR_T
    template
      int
!     __copy_streambufs(basic_ios<wchar_t>&, 
! 		      basic_streambuf<wchar_t>*,
! 		      basic_streambuf<wchar_t>*); 
  #endif
  } //std

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