Author: faridz
Date: Fri Mar 14 08:16:33 2008
New Revision: 637130

URL: http://svn.apache.org/viewvc?rev=637130&view=rev
Log:
2008-03-14 Farid Zaripov <[EMAIL PROTECTED]>

        Merge changes from trunk.


        2008-02-08 Farid Zaripov <[EMAIL PROTECTED]>
        STDCXX-375
        * include/istream (std::getline, std::operator>>): Declaration moved 
from here ...
        * include/string (std::getline, std::operator>>): ... to here.
        * include/istream.cc (std::getline, std::operator>>): Added comment 
about
        declarations in <string>


        2008-02-12  Martin Sebor  <[EMAIL PROTECTED]>
        STDCXX-308
        * include/fstream (~basic_filebuf): Caught and swallowed all exceptions.
        * include/fstream.cc (close): Closed file regardless of whether the call
        to overflow() or codecvt::unshift() fails or throws, as required by the
        resolution of LWG issue 622.


        2008-02-13  Martin Sebor  <[EMAIL PROTECTED]>
        STDCXX-695
        * include/loc/_money_get.cc (_C_get): Introduced a convenience typedef
        for size_t, changed the type of the local __sign to int and cast it to
        size_t to silence the pesky HP aCC 6 remark #4271-D: type conversion
        may lose sign.
        * include/loc/_messages.cc (do_get): Same.
        * include/sstream (str): Avoided pointer math to silence remark #4271.


        2008-02-14  Farid Zaripov  <[EMAIL PROTECTED]>
        * include/rw/_defs.h: Move MSVC specific #pragma's from here...
        * include/rw/_config-msvc.h: ... to here. Disable warning C4661.


        2008-02-14  Farid Zaripov  <[EMAIL PROTECTED]>
        * include/rw/_defs.h: #define new macro _RWSTD_TI_EXPORT
        to prevent MSVC warning C4910: "'__declspec(dllexport)'
        and 'extern' are incompatible on an explicit instantiation".
        * include/fstream: Use _RWSTD_TI_EXPORT instead of
        _RWSTD_EXPORT on an explicit instantiations.
        * include/istream: Ditto.
        * include/loc/_messages.h: Ditto.
        * include/loc/_money_get.h: Ditto.
        * include/loc/_money_put.h: Ditto.
        * include/loc/_moneypunct.h: Ditto.
        * include/loc/_num_get.h: Ditto.
        * include/loc/_num_put.h: Ditto.
        * include/loc/_numpunct.h: Ditto.
        * include/loc/_punct.h: Ditto.
        * include/loc/_time_get.h: Ditto.
        * include/loc/_time_put.h: Ditto.
        * include/ostream: Ditto.
        * include/rw/_basic_ios.h: Ditto.
        * include/rw/_ioinsert.h: Ditto.
        * include/rw/_mutex.h: Ditto.
        * include/sstream: Ditto.
        * include/streambuf: Ditto.
        * include/string: Ditto.


        2008-02-22  Farid Zaripov  <[EMAIL PROTECTED]>
        STDCXX-375
        * include/string: Declarations of the string inserter's and extractor's
        are moved to  #included <rw/_stringio.h>.
        * include/ostream: Definition of the inline string inserter moved to
        #included <rw/_stringio.h>.
        * include/istream: Definition of the inline std::getline() moved to
        #included <rw/_stringio.h>.
        * include/istream.cc: Definitions of the string extractor's are moved
        to rw/_stringio.cc file.
        * include/rw/_stringio.h: New header file with declarations of the
        string inserter's and extractor's.
        * include/rw/_stringio.cc: New file with definitions of the string 
extractors.
        * include/rw/_stringio.c: New file for compilers with implicit
        inclusion feature.
        * src/export/cpp: #included <rw/_stringio.h> and <rw/_stringio.cc>.

Added:
    stdcxx/branches/4.2.x/include/rw/_stringio.c
      - copied unchanged from r635445, stdcxx/trunk/include/rw/_stringio.c
    stdcxx/branches/4.2.x/include/rw/_stringio.cc
      - copied unchanged from r635445, stdcxx/trunk/include/rw/_stringio.cc
    stdcxx/branches/4.2.x/include/rw/_stringio.h
      - copied unchanged from r635445, stdcxx/trunk/include/rw/_stringio.h
Modified:
    stdcxx/branches/4.2.x/include/fstream
    stdcxx/branches/4.2.x/include/fstream.cc
    stdcxx/branches/4.2.x/include/istream
    stdcxx/branches/4.2.x/include/istream.cc
    stdcxx/branches/4.2.x/include/loc/_messages.cc
    stdcxx/branches/4.2.x/include/loc/_messages.h
    stdcxx/branches/4.2.x/include/loc/_money_get.cc
    stdcxx/branches/4.2.x/include/loc/_money_get.h
    stdcxx/branches/4.2.x/include/loc/_money_put.h
    stdcxx/branches/4.2.x/include/loc/_moneypunct.h
    stdcxx/branches/4.2.x/include/loc/_num_get.h
    stdcxx/branches/4.2.x/include/loc/_num_put.h
    stdcxx/branches/4.2.x/include/loc/_numpunct.h
    stdcxx/branches/4.2.x/include/loc/_punct.h
    stdcxx/branches/4.2.x/include/loc/_time_get.h
    stdcxx/branches/4.2.x/include/loc/_time_put.h
    stdcxx/branches/4.2.x/include/ostream
    stdcxx/branches/4.2.x/include/rw/_basic_ios.h
    stdcxx/branches/4.2.x/include/rw/_config-msvc.h
    stdcxx/branches/4.2.x/include/rw/_defs.h
    stdcxx/branches/4.2.x/include/rw/_ioinsert.h
    stdcxx/branches/4.2.x/include/rw/_mutex.h
    stdcxx/branches/4.2.x/include/sstream
    stdcxx/branches/4.2.x/include/streambuf
    stdcxx/branches/4.2.x/include/string
    stdcxx/branches/4.2.x/src/export.cpp

Modified: stdcxx/branches/4.2.x/include/fstream
URL: 
http://svn.apache.org/viewvc/stdcxx/branches/4.2.x/include/fstream?rev=637130&r1=637129&r2=637130&view=diff
==============================================================================
--- stdcxx/branches/4.2.x/include/fstream (original)
+++ stdcxx/branches/4.2.x/include/fstream Fri Mar 14 08:16:33 2008
@@ -23,7 +23,7 @@
  * implied.   See  the License  for  the  specific language  governing
  * permissions and limitations under the License.
  *
- * Copyright 1994-2006 Rogue Wave Software.
+ * Copyright 1994-2008 Rogue Wave Software, Inc.
  * 
  **************************************************************************/
 
@@ -109,7 +109,9 @@
           _C_cur_pos (pos_type (off_type (-1))),
           _C_beg_pos (pos_type (off_type (-1))),
           _C_pbacksize (0) {
-        setbuf (0, _RWSTD_DEFAULT_BUFSIZE);
+        // call the virtual setbuf defined in this class (but
+        // not an override defined in a class derived from it)
+        basic_filebuf::setbuf (0, _RWSTD_DEFAULT_BUFSIZE);
     }
 
 #if     defined (_RWSTD_NO_EXT_FILEBUF)            \
@@ -277,7 +279,12 @@
 template<class _CharT, class _Traits>
 inline basic_filebuf<_CharT, _Traits>::~basic_filebuf ()
 {
-    close ();
+    _TRY {
+        close ();
+    }
+    _CATCH (...) {
+        // LWG issue 622: swallow all exceptions
+    }
 
     if (this->_C_own_buf ())
         delete [] this->_C_buffer;
@@ -664,7 +671,7 @@
 
 #if _RWSTD_INSTANTIATE (_BASIC_FILEBUF, _CHAR)
 
-_RWSTD_INSTANTIATE_2 (class _RWSTD_EXPORT
+_RWSTD_INSTANTIATE_2 (class _RWSTD_TI_EXPORT
                       basic_filebuf<char, char_traits<char> >);
 
 #endif   // _RWSTD_INSTANTIATE (_BASIC_FILEBUF, _CHAR)
@@ -672,7 +679,7 @@
 
 #if _RWSTD_INSTANTIATE (_BASIC_FILEBUF, _WCHAR_T)
 
-_RWSTD_INSTANTIATE_2 (class _RWSTD_EXPORT
+_RWSTD_INSTANTIATE_2 (class _RWSTD_TI_EXPORT
                       basic_filebuf<wchar_t, char_traits<wchar_t> >);
 
 #endif   // _RWSTD_INSTANTIATE (_BASIC_FILEBUF, _WCHAR_T)

Modified: stdcxx/branches/4.2.x/include/fstream.cc
URL: 
http://svn.apache.org/viewvc/stdcxx/branches/4.2.x/include/fstream.cc?rev=637130&r1=637129&r2=637130&view=diff
==============================================================================
--- stdcxx/branches/4.2.x/include/fstream.cc (original)
+++ stdcxx/branches/4.2.x/include/fstream.cc Fri Mar 14 08:16:33 2008
@@ -23,7 +23,7 @@
  * implied.   See  the License  for  the  specific language  governing
  * permissions and limitations under the License.
  *
- * Copyright 1997-2006 Rogue Wave Software, Inc.
+ * Copyright 1997-2008 Rogue Wave Software, Inc.
  * 
  **************************************************************************/
 
@@ -76,27 +76,52 @@
 basic_filebuf<_CharT, _Traits>::
 close (bool __close_file /* = true */)
 {
+    // close_file is false when close() is called from detach()
+
     _RWSTD_ASSERT (this->_C_is_valid ());
 
     if (!is_open ())
         return 0;   // failure
 
-    // avoid expensive call to overflow() unless necessary
-    if (this->pptr () != this->pbase () && this->_C_is_eof (overflow ()))
-        return 0;   // failure
+    // close() returns this on success, 0 on failure
+    basic_filebuf *__retval = this;
 
-    // write out any unshift sequence if necessary
-    // (applies to multibyte, state dependent encodings only)
-    if (this->_C_out_last () && !_C_unshift ())
-        return 0;   // failure
+    _TRY {
+        // avoid expensive call to overflow() unless necessary
+        if (this->pptr () != this->pbase () && this->_C_is_eof (overflow ()))
+            __retval = 0;   // failure
+
+        // write out any unshift sequence if necessary
+        // (applies to multibyte, state dependent encodings only)
+        if (__retval && this->_C_out_last () && !_C_unshift ())
+            __retval = 0;   // failure
+    }
+    _CATCH (...) {
+        // either overflow() or codecvt::unshift() threw
 
-    if (__close_file && _RW::__rw_fclose (_C_file, this->_C_state))
-        return 0;   // failure
+        if (__close_file) {
+            _RW::__rw_fclose (_C_file, this->_C_state);
 
-    _C_file    = 0;
-    _C_cur_pos = _C_beg_pos = pos_type (off_type (-1));
+            // zero out the file pointer except when detaching fd
+            _C_file    = 0;
+            _C_cur_pos = _C_beg_pos = pos_type (off_type (-1));
 
-    return this;
+        }
+
+        // rethrow the caught exception
+        _RETHROW;
+    }
+
+    if (__close_file) {
+        if (_RW::__rw_fclose (_C_file, this->_C_state))
+            __retval = 0;
+
+        // zero out the file pointer except when detaching fd
+        _C_file    = 0;
+        _C_cur_pos = _C_beg_pos = pos_type (off_type (-1));
+    }
+
+    return __retval;
 }
 
 

Modified: stdcxx/branches/4.2.x/include/istream
URL: 
http://svn.apache.org/viewvc/stdcxx/branches/4.2.x/include/istream?rev=637130&r1=637129&r2=637130&view=diff
==============================================================================
--- stdcxx/branches/4.2.x/include/istream (original)
+++ stdcxx/branches/4.2.x/include/istream Fri Mar 14 08:16:33 2008
@@ -522,30 +522,6 @@
 }
 
 
-_EXPORT
-template<class _CharT, class _Traits, class _Allocator>
-basic_istream<_CharT, _Traits>&
-operator>> (basic_istream<_CharT, _Traits>&,
-            basic_string<_CharT, _Traits, _Allocator>&);
-
-
-_EXPORT
-template<class _CharT, class _Traits, class _Allocator>
-basic_istream<_CharT, _Traits>&
-getline (basic_istream<_CharT, _Traits>&,
-         basic_string<_CharT, _Traits, _Allocator>&,
-         _CharT);
-
-
-template<class _CharT, class _Traits, class _Allocator>
-inline basic_istream<_CharT, _Traits>& 
-getline (basic_istream<_CharT, _Traits>&            __is,
-         basic_string<_CharT, _Traits, _Allocator>& __str)
-{
-    return getline (__is, __str, __is.widen ('\n'));
-}
-
-
 // 27.6.1.5
 template<class _CharT, class _Traits /* = char_traits<_CharT> */>
 class basic_iostream
@@ -581,27 +557,16 @@
 
 #if _RWSTD_INSTANTIATE (_BASIC_ISTREAM, _CHAR)
 
-_RWSTD_INSTANTIATE_2 (class _RWSTD_EXPORT
+_RWSTD_INSTANTIATE_2 (class _RWSTD_TI_EXPORT
                       basic_istream<char, char_traits<char> >);
 
-_RWSTD_INSTANTIATE_FUN_1 (_RWSTD_EXPORT istream&
-                          operator>> (istream&, string&));
-
-_RWSTD_INSTANTIATE_FUN_1 (_RWSTD_EXPORT istream&
-                          getline (istream&, string&, char));
-
 #endif   // _RWSTD_INSTANTIATE (_BASIC_ISTREAM, _CHAR)
 
 #if _RWSTD_INSTANTIATE (_BASIC_ISTREAM, _WCHAR_T)
 
-_RWSTD_INSTANTIATE_2 (class _RWSTD_EXPORT
+_RWSTD_INSTANTIATE_2 (class _RWSTD_TI_EXPORT
                       basic_istream<wchar_t, char_traits<wchar_t> >);
 
-_RWSTD_INSTANTIATE_FUN_1 (_RWSTD_EXPORT wistream&
-                          operator>> (wistream&, wstring&));
-
-_RWSTD_INSTANTIATE_FUN_1 (_RWSTD_EXPORT wistream&
-                          getline (wistream&, wstring&, wchar_t));
 #endif   // _RWSTD_INSTANTIATE (_BASIC_ISTREAM, _WCHAR_T)
 
 }   // namespace std
@@ -610,5 +575,12 @@
 #if _RWSTD_DEFINE_TEMPLATE_LAST (_BASIC_ISTREAM)
 #  include <istream.cc>
 #endif   // _RWSTD_DEFINE_TEMPLATE_LAST (_BASIC_ISTREAM)
+
+
+#ifndef _RWSTD_STRING_EXTRACTORS_INCLUDED
+#  define _RWSTD_INCLUDE_STRING_EXTRACTORS
+#  include <rw/_stringio.h>
+#endif   // _RWSTD_STRING_EXTRACTORS_INCLUDED
+
 
 #endif   // _RWSTD_ISTREAM_INCLUDED

Modified: stdcxx/branches/4.2.x/include/istream.cc
URL: 
http://svn.apache.org/viewvc/stdcxx/branches/4.2.x/include/istream.cc?rev=637130&r1=637129&r2=637130&view=diff
==============================================================================
--- stdcxx/branches/4.2.x/include/istream.cc (original)
+++ stdcxx/branches/4.2.x/include/istream.cc Fri Mar 14 08:16:33 2008
@@ -780,372 +780,6 @@
 }
 
 
-_EXPORT
-template<class _CharT, class _Traits, class _Allocator>
-basic_istream<_CharT, _Traits>&
-operator>> (basic_istream<_CharT, _Traits>&            __is, 
-            basic_string<_CharT, _Traits, _Allocator>& __str)
-{
-    _RWSTD_ASSERT (0 != __is.rdbuf ());
-
-    const _TYPENAME basic_istream<_CharT, _Traits>::sentry
-        __ipfx (__is /* , noskipws = false */);
-
-    ios_base::iostate __err = ios_base::goodbit;
-
-    typedef _RWSTD_SIZE_T _SizeT;
-
-    // count of characters read from stream
-    _SizeT __gcount = 0;
-
-    _TRY {
-
-        if (__ipfx) {
-
-            __str.clear ();
-
-            // maximum number of characters we can read
-            _RWSTD_SIZE_T __n =
-                __is.width () ? __is.width () : __str.max_size ();
-
-            basic_streambuf<_CharT, _Traits>* const __rdbuf = __is.rdbuf ();
-
-            const ctype<_CharT> &__ctp =
-                _USE_FACET (ctype<_CharT>, __is.getloc ());
-
-#ifndef _RWSTD_NO_FRIEND_TEMPLATE
-
-            while (__n != 0) {
-
-                const _CharT* const __gptr  = __rdbuf->gptr ();
-                const _CharT* const __egptr = __rdbuf->egptr ();
-
-                // maximum number of characters would want to extract
-                _SizeT __navail = __egptr - __gptr;
-                if (__n < __navail)
-                    __navail = __n;
-
-                if (__navail) {
-
-                    // find the delimeter in the squence if it exists, or
-                    // get pointer to end of sequence
-                    const _CharT* __pdel = __gptr;
-                    for (/**/; __pdel != __egptr; ++__pdel) {
-
-                        const _TYPENAME _Traits::int_type
-                            __c = _Traits::to_int_type(*__pdel);
-
-                        if (_Traits::eq_int_type (__c, _Traits::eof ())) {
-                            __err = ios_base::eofbit;
-                            break;
-                        }
-
-                        if (__ctp.is (__ctp.space, *__pdel))
-                            break;
-                    }
-
-                    // __pdel is either pointing to a delimiter or one past
-                    // the end of the input stream get area. if it is past
-                    // the end, then set it to null.
-                    if (__pdel == __egptr) {
-                        __pdel = 0;
-                    }
-
-                    if (__pdel) {
-                        __navail = __pdel - __gptr + 1;
-                        __n     -= __navail - 1;
-                    }
-                    else if (__n == __navail)
-                        __n -= --__navail;
-                    else
-                        __n -= __navail;
-
-                    // store characters excluding the delimiter
-                    __str.append (__gptr, __navail - !!__pdel);
-
-                    __gcount += __navail;
-
-                    // advance gptr() by the number of extracted
-                    // characters, including the delimiter
-                    __rdbuf->gbump (__navail);
-
-                    // we found a delimiter before the end of the get area,
-                    // break out of outer loop
-                    if (__pdel) {
-                        break;
-                    }
-
-                    if (2 > __n && _SizeT (__egptr - __gptr) != __navail) {
-                        __err = ios_base::failbit;
-                        break;
-                    }
-                }
-                else {
-
-                    // n data in buffer, trigger underflow()
-                    // note that streambuf may be unbuffered
-                    const _TYPENAME _Traits::int_type
-                        __c = __rdbuf->sgetc ();
-
-                    if (_Traits::eq_int_type (__c, _Traits::eof ())) {
-                        __err = ios_base::eofbit;
-                        break;
-                    }
-
-                    // convert to char_type so that isspace works correctly
-                    const _TYPENAME _Traits::char_type
-                        __ch = _Traits::to_char_type (__c);
-
-                    if (__ctp.is (__ctp.space, __ch))
-                        break;
-
-                    __str.push_back (__ch);
-                    --__n;
-
-                    __rdbuf->sbumpc ();
-
-                    // increment gcount only _after_ sbumpc() but _before_
-                    // the subsequent call to sgetc() to correctly reflect
-                    // the number of extracted characters in the presence
-                    // of exceptions thrown from streambuf virtuals
-                    ++__gcount;
-                }
-            }
-
-#else   // if defined (_RWSTD_NO_FRIEND_TEMPLATE)
-
-            for ( ; __n != 0; ) {
-
-                const _TYPENAME _Traits::int_type
-                    __c (__rdbuf->sgetc ());
-
-                if (_Traits::eq_int_type (__c, _Traits::eof ())) {
-                    __err = ios_base::eofbit;
-                    break;
-                }
-
-                // convert to char_type so that isspace works correctly
-                const _TYPENAME _Traits::char_type
-                    __ch = _Traits::to_char_type (__c);
-
-                if (__ctp.is (__ctp.space, __ch))
-                    break;
-
-                __str.push_back (__ch);
-                --__n;
-
-                __rdbuf->sbumpc ();
-
-                // increment gcount only _after_ sbumpc() but _before_
-                // the subsequent call to sgetc() to correctly reflect
-                // the number of extracted characters in the presence
-                // of exceptions thrown from streambuf virtuals
-                ++__gcount;
-            }
-
-#endif   // if defined (_RWSTD_NO_FRIEND_TEMPLATE)
-
-            __is.width (0);
-        }
-    }
-    _CATCH (...) {
-        __is.setstate (ios_base::badbit | _RW::__rw_rethrow);
-    }
-
-    if (!__gcount)
-        __err |= ios_base::failbit;
-
-    if (__err)
-        __is.setstate (__err);
-
-    return __is;
-}
-
-
-_EXPORT
-template<class _CharT, class _Traits, class _Allocator>
-basic_istream<_CharT, _Traits>&
-getline (basic_istream<_CharT, _Traits>&            __is, 
-         basic_string<_CharT, _Traits, _Allocator>& __str, 
-         _CharT                                     __delim)
-{
-    _RWSTD_ASSERT (0 != __is.rdbuf ());
-
-    const _TYPENAME basic_istream<_CharT, _Traits>::sentry
-        __ipfx (__is, true /* noskipws */);
-
-#ifndef _RWSTD_NO_FRIEND_TEMPLATE
-
-    ios_base::iostate __err = ios_base::goodbit;
-
-    typedef _RWSTD_SIZE_T _SizeT;
-
-    _SizeT __gcount = 0;
-
-    if (__ipfx) { 
-
-        __str.clear ();
-
-        // carefuly handle arithmetic overflow
-        _SizeT __n = __str.max_size ();
-        if (__n + _SizeT (1))
-            ++__n;
-
-        basic_streambuf<_CharT, _Traits>* const __rdbuf = __is.rdbuf ();
-
-        _TRY {
-
-            for ( ; ; ) {
-
-                typedef _TYPENAME _Traits::int_type int_type;
-
-                const _CharT* const __gptr  = __rdbuf->gptr ();
-                const _CharT* const __egptr = __rdbuf->egptr ();
-
-                // compute the lesser of the number of characters in the
-                // stream buffer and the size of the destination buffer
-                _SizeT __navail = __egptr - __gptr;
-                if (__n < __navail)
-                    __navail = __n;
-
-                if (__navail) {
-
-                    // find the delimiter in the sequence if it exists
-                    const _CharT* const __pdel =
-                        _Traits::find (__gptr, __navail, __delim);
-
-                    if (__pdel) {
-                        __navail = __pdel - __gptr + 1;
-                        __n     -= __navail - 1;
-                    }
-                    else if (__n == __navail)
-                        __n -= --__navail;
-                    else
-                        __n -= __navail;
-
-                    // store characters excluding the delimiter
-                    __str.append (__gptr, __navail - !!__pdel);
-
-                    __gcount += __navail;
-
-                    // advance gptr() by the number of extracted
-                    // characters, including the delimiter
-                    __rdbuf->gbump (__navail);
-
-                    if (__pdel) {
-                        break;
-                    }
-
-                    if (2 > __n && _SizeT (__egptr - __gptr) != __navail) {
-                        __err = ios_base::failbit;
-                        break;
-                    }
-                }
-                else {
-
-                    // no data in buffer, trigger underflow()
-                    // note that streambuf may be unbuffered
-                    const int_type __c (__rdbuf->sgetc ());
-
-                    if (_Traits::eq_int_type (__c, _Traits::eof ())) {
-                        __err = ios_base::eofbit;
-                        break;
-                    }
-
-                    const _CharT __ch = _Traits::to_char_type (__c);
-                    if (_Traits::eq (__ch, __delim)) {
-                        __rdbuf->sbumpc ();
-                        __gcount++;
-                        break;
-                    }
-
-                    if (2 > __n) {
-                        __err = ios_base::failbit;
-                        break;
-                    }
-
-                    __str += __ch;
-                    --__n;
-
-                    __rdbuf->sbumpc ();
-
-                    // increment gcount only _after_ sbumpc() but _before_
-                    // the subsequent call to sgetc() to correctly reflect
-                    // the number of extracted characters in the presence
-                    // of exceptions thrown from streambuf virtuals
-                    ++__gcount;
-                }
-            }
-        }
-        _CATCH (...) {
-            __is.setstate (ios_base::badbit | _RW::__rw_rethrow);
-        }
-    }
-
-    if (!__gcount)
-        __err |= ios_base::failbit;
-
-#else   // if defined (_RWSTD_NO_FRIEND_TEMPLATE)
-
-    ios_base::iostate __err = ios_base::failbit;
-
-    if (__ipfx) { 
-
-        _TRY {
-
-            __str.clear ();
-
-            const _RWSTD_SIZE_T __max_size = __str.max_size ();
-
-            // FIXME: code commented out to work around an HP aCC 3.14.10
-            // bug #JAGac86264
-
-            // typedef _TYPENAME
-            //     basic_string<_CharT, _Traits, _Allocator>::size_type
-
-            for ( ; ; ) {
-
-                const _TYPENAME _Traits::int_type
-                    __c (__is.rdbuf ()->sgetc ());
-
-                if (_Traits::eq_int_type (__c, _Traits::eof ())) {
-                    // 21.3.7.9, p7
-                    if (__str.size ())
-                        __err = ios_base::eofbit;
-                    else
-                        __err = ios_base::eofbit | ios_base::failbit;
-
-                    break;
-                }
-
-                if (_Traits::eq (_Traits::to_char_type (__c), __delim)) {
-                    __is.rdbuf ()->sbumpc ();
-                    __err = ios_base::goodbit;
-                    break;
-                }
-
-                if (__max_size <= __str.size ())
-                    break;
-
-                __str.push_back (_Traits::to_char_type (__c));
-
-                __is.rdbuf ()->sbumpc ();
-            }
-        }
-        _CATCH (...) {
-            __is.setstate (ios_base::badbit | _RW::__rw_rethrow);
-        }
-    }
-
-#endif   // _RWSTD_NO_FRIEND_TEMPLATE
-
-    if (__err)
-        __is.setstate (__err);
-
-    return __is;
-}  
-
-
 #ifdef _RWSTD_NO_UNDEFINED_TEMPLATES
 
 template <class _CharT, class _Traits>

Modified: stdcxx/branches/4.2.x/include/loc/_messages.cc
URL: 
http://svn.apache.org/viewvc/stdcxx/branches/4.2.x/include/loc/_messages.cc?rev=637130&r1=637129&r2=637130&view=diff
==============================================================================
--- stdcxx/branches/4.2.x/include/loc/_messages.cc (original)
+++ stdcxx/branches/4.2.x/include/loc/_messages.cc Fri Mar 14 08:16:33 2008
@@ -22,7 +22,7 @@
  * implied.   See  the License  for  the  specific language  governing
  * permissions and limitations under the License.
  *
- * Copyright 1994-2007 Rogue Wave Software, Inc.
+ * Copyright 1994-2008 Rogue Wave Software, Inc.
  * 
  **************************************************************************/
 
@@ -78,9 +78,10 @@
             return _RWSTD_REINTERPRET_CAST (const _CharT*, __text);
         }
 
-        typedef char_traits<char> CharTraits;
+        typedef char_traits<char> _CharTraits;
+        typedef _RWSTD_SIZE_T     _SizeT;
 
-        const _RWSTD_SIZE_T __src_len = CharTraits::length (__text);
+        const _SizeT      __src_len = _CharTraits::length (__text);
         const char* const __src_first = __text;
         const char* const __src_last  = __text + __src_len;
         const char*       __src_next  = __src_first;
@@ -105,7 +106,9 @@
         switch (__res) {
         case codecvt_base::ok:
             // shrink the converted string accordingly
-            __result_str.resize (__dst_next - __dst_first);
+            _RWSTD_ASSERT (__dst_first <= __dst_next);
+
+            __result_str.resize (_SizeT (__dst_next - __dst_first));
             return __result_str;
 
         case codecvt_base::noconv:
@@ -122,7 +125,7 @@
                 const _Ctype& __ctp =
                     _RWSTD_USE_FACET (_Ctype, _RW::__rw_get_locale (__cat));
 
-                for (_RWSTD_SIZE_T __i = 0; __i != __src_len; ++__i)
+                for (_SizeT __i = 0; __i != __src_len; ++__i)
                     __dst_first [__i] = __ctp.widen (__text [__i]);
 
                 return __result_str;

Modified: stdcxx/branches/4.2.x/include/loc/_messages.h
URL: 
http://svn.apache.org/viewvc/stdcxx/branches/4.2.x/include/loc/_messages.h?rev=637130&r1=637129&r2=637130&view=diff
==============================================================================
--- stdcxx/branches/4.2.x/include/loc/_messages.h (original)
+++ stdcxx/branches/4.2.x/include/loc/_messages.h Fri Mar 14 08:16:33 2008
@@ -150,13 +150,13 @@
 
 #if _RWSTD_INSTANTIATE (_MESSAGES, _CHAR)
 
-_RWSTD_INSTANTIATE_1 (class _RWSTD_EXPORT messages<char>);
+_RWSTD_INSTANTIATE_1 (class _RWSTD_TI_EXPORT messages<char>);
 
 #endif   // _RWSTD_INSTANTIATE (_MESSAGES, _CHAR)
 
 #if _RWSTD_INSTANTIATE (_MESSAGES, _WCHAR_T)
 
-_RWSTD_INSTANTIATE_1 (class _RWSTD_EXPORT messages<wchar_t>);
+_RWSTD_INSTANTIATE_1 (class _RWSTD_TI_EXPORT messages<wchar_t>);
 
 #endif   // _RWSTD_INSTANTIATE (_MESSAGES, _WCHAR_T)
 

Modified: stdcxx/branches/4.2.x/include/loc/_money_get.cc
URL: 
http://svn.apache.org/viewvc/stdcxx/branches/4.2.x/include/loc/_money_get.cc?rev=637130&r1=637129&r2=637130&view=diff
==============================================================================
--- stdcxx/branches/4.2.x/include/loc/_money_get.cc (original)
+++ stdcxx/branches/4.2.x/include/loc/_money_get.cc Fri Mar 14 08:16:33 2008
@@ -22,7 +22,7 @@
  * implied.   See  the License  for  the  specific language  governing
  * permissions and limitations under the License.
  *
- * Copyright 2001-2006 Rogue Wave Software.
+ * Copyright 2001-2008 Rogue Wave Software, Inc.
  * 
  **************************************************************************/
 
@@ -94,7 +94,7 @@
     const char *__grpend   = 0;      // the end of the last group
 
 
-    long __sign = 0;    // the sign of the result if detected
+    int __sign = 0;    // the sign of the result if detected (-1, 0, or +1)
 
     // buffer must always start with a sign (__rw_get_num requirement)
     // use a '+' and overwrite it with a '-' if necessary
@@ -102,7 +102,9 @@
 
     const int __fl = __flags.flags ();
 
-    for (_RWSTD_SIZE_T __i = 0; !__ebits && __i != sizeof __pat.field; ++__i) {
+    typedef _RWSTD_SIZE_T _SizeT;
+
+    for (_SizeT __i = 0; !__ebits && __i != sizeof __pat.field; ++__i) {
 
         switch (__pat.field [__i]) {
 
@@ -124,7 +126,7 @@
                 && (0 == __cs.size () || !(__fl & _RW::__rw_showbase)))
                 break;
 
-            _RWSTD_SIZE_T __nc = 0;
+            _SizeT __nc = 0;
 
             while (__it != __end && __ctp.is (ctype_base::space, *__it)) {
                 ++__it;
@@ -148,7 +150,7 @@
                 || __sign < 0 && __ns.size () > 1
                 || __sign > 0 && __ps.size () > 1) {
 
-                for (_RWSTD_SIZE_T __nc = 0; __nc != __cs.size ();
+                for (_SizeT __nc = 0; __nc != __cs.size ();
                      ++__nc, ++__it) {
                     if (__it == __end || !_Traits::eq (*__it, __cs [__nc])) {
 
@@ -259,7 +261,7 @@
         if (__buf [1]) {
 
             // process the remainder of a multicharacter sign
-            const _RWSTD_SIZE_T __sizes [] = {
+            const _SizeT __sizes [] = {
                 __ps.size () ? __ps.size () -1 : 0,
                 __ns.size () ? __ns.size () -1 : 0
             };
@@ -274,7 +276,7 @@
                 // if the first character of a multi-character sign
                 // has been seen, try to extract the rest of the sign
 
-                _RWSTD_SIZE_T __inx = 0;
+                _SizeT __inx = 0;
 
                 int __errtmp = 1;   // no duplicates allowed
 
@@ -304,7 +306,7 @@
                     // if both signs begin with the same character,
                     // the result is positive (22.2.6.1.2, p3)
                     *__buf = __inx ? '-' : '+';
-                    __sign = -long (__inx);
+                    __sign = -int (__inx);
                 }
             }
             else if (__sign < 0) {
@@ -316,20 +318,21 @@
                 const char *__start = __buf + 1;
                 for (; '0' == *__start && '0' == __start [1]; ++__start);
 
+                // invert the sign if negative
                 __sign = __sign < 0;
 
                 // widen narrow digits optionally preceded by the minus sign
                 // into the basic_string object as required by 22.2.6.1.2, p1
-                __pstr->resize ((__pcur - __start) + __sign);
+                __pstr->resize ((__pcur - __start) + _SizeT (__sign));
 
                 if (__sign)
                     _Traits::assign ((*__pstr)[0], __ctp.widen ('-'));
 
-                __ctp.widen (__start, __pcur, &(*__pstr)[__sign]);
+                __ctp.widen (__start, __pcur, &(*__pstr)[_SizeT (__sign)]);
             }
 
-            const char   *__grs = "";
-            _RWSTD_SIZE_T __grn = 0;
+            const char *__grs = "";
+            _SizeT      __grn = 0;
 
             // 22.2.6.1.2, p1: thousands separators are optional
 

Modified: stdcxx/branches/4.2.x/include/loc/_money_get.h
URL: 
http://svn.apache.org/viewvc/stdcxx/branches/4.2.x/include/loc/_money_get.h?rev=637130&r1=637129&r2=637130&view=diff
==============================================================================
--- stdcxx/branches/4.2.x/include/loc/_money_get.h (original)
+++ stdcxx/branches/4.2.x/include/loc/_money_get.h Fri Mar 14 08:16:33 2008
@@ -134,13 +134,13 @@
 
 #if _RWSTD_INSTANTIATE (_MONEY_GET, _CHAR)
 
-_RWSTD_INSTANTIATE_1 (struct _RWSTD_EXPORT money_get<char>);
+_RWSTD_INSTANTIATE_1 (struct _RWSTD_TI_EXPORT money_get<char>);
 
 #endif   // _RWSTD_INSTANTIATE (_MONEY_GET, _CHAR)
 
 #if _RWSTD_INSTANTIATE (_MONEY_GET, _WCHAR_T)
 
-_RWSTD_INSTANTIATE_1 (struct _RWSTD_EXPORT money_get<wchar_t>);
+_RWSTD_INSTANTIATE_1 (struct _RWSTD_TI_EXPORT money_get<wchar_t>);
 
 #endif   // _RWSTD_INSTANTIATE (_MONEY_GET, _WCHAR_T)
 

Modified: stdcxx/branches/4.2.x/include/loc/_money_put.h
URL: 
http://svn.apache.org/viewvc/stdcxx/branches/4.2.x/include/loc/_money_put.h?rev=637130&r1=637129&r2=637130&view=diff
==============================================================================
--- stdcxx/branches/4.2.x/include/loc/_money_put.h (original)
+++ stdcxx/branches/4.2.x/include/loc/_money_put.h Fri Mar 14 08:16:33 2008
@@ -120,13 +120,13 @@
 
 #if _RWSTD_INSTANTIATE (_MONEY_PUT, _CHAR)
 
-_RWSTD_INSTANTIATE_1 (struct _RWSTD_EXPORT money_put<char>);
+_RWSTD_INSTANTIATE_1 (struct _RWSTD_TI_EXPORT money_put<char>);
 
 #endif   // _RWSTD_INSTANTIATE (_MONEY_PUT, _CHAR)
 
 #if _RWSTD_INSTANTIATE (_MONEY_PUT, _WCHAR_T)
 
-_RWSTD_INSTANTIATE_1 (struct _RWSTD_EXPORT money_put<wchar_t>);
+_RWSTD_INSTANTIATE_1 (struct _RWSTD_TI_EXPORT money_put<wchar_t>);
 
 #endif   // _RWSTD_INSTANTIATE (_MONEY_PUT, _WCHAR_T)
 

Modified: stdcxx/branches/4.2.x/include/loc/_moneypunct.h
URL: 
http://svn.apache.org/viewvc/stdcxx/branches/4.2.x/include/loc/_moneypunct.h?rev=637130&r1=637129&r2=637130&view=diff
==============================================================================
--- stdcxx/branches/4.2.x/include/loc/_moneypunct.h (original)
+++ stdcxx/branches/4.2.x/include/loc/_moneypunct.h Fri Mar 14 08:16:33 2008
@@ -226,15 +226,15 @@
 
 #if _RWSTD_INSTANTIATE (_MONEYPUNCT, _CHAR)
 
-_RWSTD_INSTANTIATE_2 (struct _RWSTD_EXPORT moneypunct<char, true>);
-_RWSTD_INSTANTIATE_2 (struct _RWSTD_EXPORT moneypunct<char, false>);
+_RWSTD_INSTANTIATE_2 (struct _RWSTD_TI_EXPORT moneypunct<char, true>);
+_RWSTD_INSTANTIATE_2 (struct _RWSTD_TI_EXPORT moneypunct<char, false>);
 
 #endif   // _RWSTD_INSTANTIATE (_MONEYPUNCT, _CHAR)
 
 #if _RWSTD_INSTANTIATE (_MONEYPUNCT, _WCHAR_T)
 
-_RWSTD_INSTANTIATE_2 (struct _RWSTD_EXPORT moneypunct<wchar_t, true>);
-_RWSTD_INSTANTIATE_2 (struct _RWSTD_EXPORT moneypunct<wchar_t, false>);
+_RWSTD_INSTANTIATE_2 (struct _RWSTD_TI_EXPORT moneypunct<wchar_t, true>);
+_RWSTD_INSTANTIATE_2 (struct _RWSTD_TI_EXPORT moneypunct<wchar_t, false>);
 
 #endif   // _RWSTD_INSTANTIATE (_MONEYPUNCT, _WCHAR_T)
 

Modified: stdcxx/branches/4.2.x/include/loc/_num_get.h
URL: 
http://svn.apache.org/viewvc/stdcxx/branches/4.2.x/include/loc/_num_get.h?rev=637130&r1=637129&r2=637130&view=diff
==============================================================================
--- stdcxx/branches/4.2.x/include/loc/_num_get.h (original)
+++ stdcxx/branches/4.2.x/include/loc/_num_get.h Fri Mar 14 08:16:33 2008
@@ -268,13 +268,13 @@
 
 #if _RWSTD_INSTANTIATE (_NUM_GET, _CHAR)
 
-_RWSTD_INSTANTIATE_1 (struct _RWSTD_EXPORT num_get<char>);
+_RWSTD_INSTANTIATE_1 (struct _RWSTD_TI_EXPORT num_get<char>);
 
 #endif   // _RWSTD_INSTANTIATE (_NUM_GET, _CHAR)
 
 #if _RWSTD_INSTANTIATE (_NUM_GET, _WCHAR_T)
 
-_RWSTD_INSTANTIATE_1 (struct _RWSTD_EXPORT num_get<wchar_t>);
+_RWSTD_INSTANTIATE_1 (struct _RWSTD_TI_EXPORT num_get<wchar_t>);
 
 #endif   // _RWSTD_INSTANTIATE (_NUM_GET, _WCHAR_T)
 

Modified: stdcxx/branches/4.2.x/include/loc/_num_put.h
URL: 
http://svn.apache.org/viewvc/stdcxx/branches/4.2.x/include/loc/_num_put.h?rev=637130&r1=637129&r2=637130&view=diff
==============================================================================
--- stdcxx/branches/4.2.x/include/loc/_num_put.h (original)
+++ stdcxx/branches/4.2.x/include/loc/_num_put.h Fri Mar 14 08:16:33 2008
@@ -218,13 +218,13 @@
 
 #if _RWSTD_INSTANTIATE (_NUM_PUT, _CHAR)
 
-_RWSTD_INSTANTIATE_1 (struct _RWSTD_EXPORT num_put<char>);
+_RWSTD_INSTANTIATE_1 (struct _RWSTD_TI_EXPORT num_put<char>);
 
 #endif   // _RWSTD_INSTANTIATE (_NUM_PUT, _CHAR)
 
 #if _RWSTD_INSTANTIATE (_NUM_PUT, _WCHAR_T)
 
-_RWSTD_INSTANTIATE_1 (struct _RWSTD_EXPORT num_put<wchar_t>);
+_RWSTD_INSTANTIATE_1 (struct _RWSTD_TI_EXPORT num_put<wchar_t>);
 
 #endif   // _RWSTD_INSTANTIATE (_NUM_PUT, _WCHAR_T)
 

Modified: stdcxx/branches/4.2.x/include/loc/_numpunct.h
URL: 
http://svn.apache.org/viewvc/stdcxx/branches/4.2.x/include/loc/_numpunct.h?rev=637130&r1=637129&r2=637130&view=diff
==============================================================================
--- stdcxx/branches/4.2.x/include/loc/_numpunct.h (original)
+++ stdcxx/branches/4.2.x/include/loc/_numpunct.h Fri Mar 14 08:16:33 2008
@@ -252,13 +252,13 @@
 
 #if _RWSTD_INSTANTIATE (_NUMPUNCT, _CHAR)
 
-_RWSTD_INSTANTIATE_1 (struct _RWSTD_EXPORT numpunct<char>);
+_RWSTD_INSTANTIATE_1 (struct _RWSTD_TI_EXPORT numpunct<char>);
 
 #endif   // _RWSTD_INSTANTIATE (_NUMPUNCT, _CHAR)
 
 #if _RWSTD_INSTANTIATE (_NUMPUNCT, _WCHAR_T)
 
-_RWSTD_INSTANTIATE_1 (struct _RWSTD_EXPORT numpunct<wchar_t>);
+_RWSTD_INSTANTIATE_1 (struct _RWSTD_TI_EXPORT numpunct<wchar_t>);
 
 #endif   // _RWSTD_INSTANTIATE (_NUMPUNCT, _WCHAR_T)
 

Modified: stdcxx/branches/4.2.x/include/loc/_punct.h
URL: 
http://svn.apache.org/viewvc/stdcxx/branches/4.2.x/include/loc/_punct.h?rev=637130&r1=637129&r2=637130&view=diff
==============================================================================
--- stdcxx/branches/4.2.x/include/loc/_punct.h (original)
+++ stdcxx/branches/4.2.x/include/loc/_punct.h Fri Mar 14 08:16:33 2008
@@ -139,14 +139,14 @@
 
 #if _RWSTD_INSTANTIATE (_PUNCT, _CHAR)
 
-_RWSTD_INSTANTIATE_FUN_1 (_RWSTD_EXPORT _RW::__rw_istreambuf_iterator
+_RWSTD_INSTANTIATE_FUN_1 (_RWSTD_TI_EXPORT _RW::__rw_istreambuf_iterator
                           __rw_match_name (_RWSTD_ARG_LIST (char)));
 
 #endif   // _RWSTD_INSTANTIATE (_PUNCT, _CHAR)
 
 #if _RWSTD_INSTANTIATE (_PUNCT, _WCHAR_T)
 
-_RWSTD_INSTANTIATE_FUN_1 (_RWSTD_EXPORT _RW::__rw_wistreambuf_iterator
+_RWSTD_INSTANTIATE_FUN_1 (_RWSTD_TI_EXPORT _RW::__rw_wistreambuf_iterator
                           __rw_match_name (_RWSTD_ARG_LIST (wchar_t)));
 
 #endif   // _RWSTD_INSTANTIATE (_PUNCT, _WCHAR_T)

Modified: stdcxx/branches/4.2.x/include/loc/_time_get.h
URL: 
http://svn.apache.org/viewvc/stdcxx/branches/4.2.x/include/loc/_time_get.h?rev=637130&r1=637129&r2=637130&view=diff
==============================================================================
--- stdcxx/branches/4.2.x/include/loc/_time_get.h (original)
+++ stdcxx/branches/4.2.x/include/loc/_time_get.h Fri Mar 14 08:16:33 2008
@@ -221,13 +221,13 @@
 
 #if _RWSTD_INSTANTIATE (_TIME_GET, _CHAR)
 
-_RWSTD_INSTANTIATE_1 (class _RWSTD_EXPORT time_get<char>);
+_RWSTD_INSTANTIATE_1 (class _RWSTD_TI_EXPORT time_get<char>);
 
 #endif   // _RWSTD_INSTANTIATE (_TIME_GET, _CHAR)
 
 #if _RWSTD_INSTANTIATE (_TIME_GET, _WCHAR_T)
 
-_RWSTD_INSTANTIATE_1 (class _RWSTD_EXPORT time_get<wchar_t>);
+_RWSTD_INSTANTIATE_1 (class _RWSTD_TI_EXPORT time_get<wchar_t>);
 
 #endif   // _RWSTD_INSTANTIATE (_TIME_GET, _WCHAR_T)
 

Modified: stdcxx/branches/4.2.x/include/loc/_time_put.h
URL: 
http://svn.apache.org/viewvc/stdcxx/branches/4.2.x/include/loc/_time_put.h?rev=637130&r1=637129&r2=637130&view=diff
==============================================================================
--- stdcxx/branches/4.2.x/include/loc/_time_put.h (original)
+++ stdcxx/branches/4.2.x/include/loc/_time_put.h Fri Mar 14 08:16:33 2008
@@ -120,13 +120,13 @@
 
 #if _RWSTD_INSTANTIATE (_TIME_PUT, _CHAR)
 
-_RWSTD_INSTANTIATE_1 (struct _RWSTD_EXPORT time_put<char>);
+_RWSTD_INSTANTIATE_1 (struct _RWSTD_TI_EXPORT time_put<char>);
 
 #endif   // _RWSTD_INSTANTIATE (_TIME_PUT, _CHAR)
 
 #if _RWSTD_INSTANTIATE (_TIME_PUT, _WCHAR_T)
 
-_RWSTD_INSTANTIATE_1 (struct _RWSTD_EXPORT time_put<wchar_t>);
+_RWSTD_INSTANTIATE_1 (struct _RWSTD_TI_EXPORT time_put<wchar_t>);
 
 #endif   // _RWSTD_INSTANTIATE (_TIME_PUT, _WCHAR_T)
 

Modified: stdcxx/branches/4.2.x/include/ostream
URL: 
http://svn.apache.org/viewvc/stdcxx/branches/4.2.x/include/ostream?rev=637130&r1=637129&r2=637130&view=diff
==============================================================================
--- stdcxx/branches/4.2.x/include/ostream (original)
+++ stdcxx/branches/4.2.x/include/ostream Fri Mar 14 08:16:33 2008
@@ -244,14 +244,14 @@
 // explicit instantiation followed by explicit specialization is illegal
 // according to 14.6.4.1, p7 but MSVC allows it (linker errors otherwise)
 
-_RWSTD_INSTANTIATE_2 (class _RWSTD_EXPORT
+_RWSTD_INSTANTIATE_2 (class _RWSTD_TI_EXPORT
                       basic_ostream<char, char_traits<char> >);
 
 #  endif   // _RWSTD_INSTANTIATE (_BASIC_OSTREAM, _CHAR)
 
 #  if _RWSTD_INSTANTIATE (_BASIC_OSTREAM, _WCHAR_T)
 
-_RWSTD_INSTANTIATE_2 (class _RWSTD_EXPORT
+_RWSTD_INSTANTIATE_2 (class _RWSTD_TI_EXPORT
                       basic_ostream<wchar_t, char_traits<wchar_t> >);
 
 #  endif   // _RWSTD_INSTANTIATE (_BASIC_OSTREAM, _WCHAR_T)
@@ -484,18 +484,6 @@
 }
  
 
-// 21.3.7.9, p3 - defined here, declared inline in <string>
-template<class _CharT, class _Traits, class _Allocator>
-inline basic_ostream<_CharT, _Traits>&
-operator<< (basic_ostream<_CharT, _Traits>                  & __strm,
-            const basic_string<_CharT, _Traits, _Allocator> &__str)
-{
-    _RW::__rw_insert (__strm, __str.data (), __str.length (),
-                      __strm.width ());
-    return __strm;
-}
-
-
 #if defined (_MSC_VER) && _MSC_VER < 1310
 
 // working around an MSVC bug that causes it to pick the member
@@ -554,14 +542,14 @@
 
 #  if _RWSTD_INSTANTIATE (_BASIC_OSTREAM, _CHAR)
 
-_RWSTD_INSTANTIATE_2 (class _RWSTD_EXPORT
+_RWSTD_INSTANTIATE_2 (class _RWSTD_TI_EXPORT
                       basic_ostream<char, char_traits<char> >);
 
 #  endif   // _RWSTD_INSTANTIATE (_BASIC_OSTREAM, _CHAR)
 
 #  if _RWSTD_INSTANTIATE (_BASIC_OSTREAM, _WCHAR_T)
 
-_RWSTD_INSTANTIATE_2 (class _RWSTD_EXPORT
+_RWSTD_INSTANTIATE_2 (class _RWSTD_TI_EXPORT
                       basic_ostream<wchar_t, char_traits<wchar_t> >);
 
 #  endif   // _RWSTD_INSTANTIATE (_BASIC_OSTREAM, _WCHAR_T)
@@ -573,6 +561,12 @@
 #if _RWSTD_DEFINE_TEMPLATE_LAST (_BASIC_OSTREAM)
 #  include <ostream.cc>
 #endif   // _RWSTD_DEFINE_TEMPLATE_LAST (_BASIC_OSTREAM)
+
+
+#ifndef _RWSTD_STRING_INSERTER_INCLUDED
+#  define _RWSTD_INCLUDE_STRING_INSERTER
+#  include <rw/_stringio.h>
+#endif   // _RWSTD_STRING_INSERTER_INCLUDED
 
 
 #endif   // _RWSTD_OSTREAM_INCLUDED

Modified: stdcxx/branches/4.2.x/include/rw/_basic_ios.h
URL: 
http://svn.apache.org/viewvc/stdcxx/branches/4.2.x/include/rw/_basic_ios.h?rev=637130&r1=637129&r2=637130&view=diff
==============================================================================
--- stdcxx/branches/4.2.x/include/rw/_basic_ios.h (original)
+++ stdcxx/branches/4.2.x/include/rw/_basic_ios.h Fri Mar 14 08:16:33 2008
@@ -344,14 +344,14 @@
 
 #if _RWSTD_INSTANTIATE (_BASIC_IOS, _CHAR)
 
-_RWSTD_INSTANTIATE_2 (class _RWSTD_EXPORT
+_RWSTD_INSTANTIATE_2 (class _RWSTD_TI_EXPORT
                       basic_ios<char, char_traits<char> >);
 
 #endif   // _RWSTD_INSTANTIATE (_BASIC_IOS, _CHAR)
 
 #if _RWSTD_INSTANTIATE (_BASIC_IOS, _WCHAR_T)
 
-_RWSTD_INSTANTIATE_2 (class _RWSTD_EXPORT
+_RWSTD_INSTANTIATE_2 (class _RWSTD_TI_EXPORT
                       basic_ios<wchar_t, char_traits<wchar_t> >);
 
 #endif   // _RWSTD_INSTANTIATE (_BASIC_IOS, _WCHAR_T)

Modified: stdcxx/branches/4.2.x/include/rw/_config-msvc.h
URL: 
http://svn.apache.org/viewvc/stdcxx/branches/4.2.x/include/rw/_config-msvc.h?rev=637130&r1=637129&r2=637130&view=diff
==============================================================================
--- stdcxx/branches/4.2.x/include/rw/_config-msvc.h (original)
+++ stdcxx/branches/4.2.x/include/rw/_config-msvc.h Fri Mar 14 08:16:33 2008
@@ -48,21 +48,37 @@
 #  endif   // _RWSTD_NO_STRING_NPOS_TYPE
 #endif   // MSVC <= 7.0
 
-   // disable "Same type qualifier used more than once"
-#  pragma warning (disable: 4114)
+// disable "Same type qualifier used more than once"
+#pragma warning (disable: 4114)
 
-   // disable "return type for operator->' is not a UDT"
-#  pragma warning (disable: 4284)
+// disable "return type for operator->' is not a UDT"
+#pragma warning (disable: 4284)
 
-   // disable "nonstandard extension used :"
-   // "'extern' before template explicit instantiation"
-#  pragma warning (disable: 4231)
+// disable "nonstandard extension used :"
+// "'extern' before template explicit instantiation"
+#pragma warning (disable: 4231)
 
-   // disable "decorated name length exceeded"
-#  pragma warning (disable: 4503)
+// RWDLL - defined for all Rogue Wave(R) products built as shared libs
+// _RWSHARED - defined for libstd built/used as a shared lib
+#if defined (RWDLL) || defined (_RWSHARED)
 
-   // disable "identifier was truncated to 255 characters"
-#  pragma warning (disable: 4786)
+   // disable "class needs to have dll-interface to be used by cliens"
+#  pragma warning (disable: 4251)
 
-   // disable "'function': was declared deprecated"
-#  pragma warning (disable: 4996)
+   // disable "non dll-interface class used as base for dll-interface class"
+#  pragma warning (disable: 4275)
+
+#endif   // RWDLL || _RWSHARED
+
+// disable "decorated name length exceeded"
+#pragma warning (disable: 4503)
+
+// disable "'identifier' : no suitable definition"
+// "provided for explicit template instantiation request"
+#pragma warning (disable: 4661)
+
+// disable "identifier was truncated to 255 characters"
+#pragma warning (disable: 4786)
+
+// disable "'function': was declared deprecated"
+#pragma warning (disable: 4996)

Modified: stdcxx/branches/4.2.x/include/rw/_defs.h
URL: 
http://svn.apache.org/viewvc/stdcxx/branches/4.2.x/include/rw/_defs.h?rev=637130&r1=637129&r2=637130&view=diff
==============================================================================
--- stdcxx/branches/4.2.x/include/rw/_defs.h (original)
+++ stdcxx/branches/4.2.x/include/rw/_defs.h Fri Mar 14 08:16:33 2008
@@ -481,13 +481,6 @@
 
 #    define _RWSTD_CLASS_EXPORT    _RWSTD_EXPORT
 #    define _RWSTD_MEMBER_EXPORT   /* empty */
-
-   // disable warnings:
-   // C4251: class needs to have dll-interface to be used by cliens
-   // C4275: non dll-interface class used as base for dll-interface class
-#  pragma warning (disable: 4251)
-#  pragma warning (disable: 4275)
-
 #else
    // disable Windows hacks
 #  define _RWSTD_EXPORT          /* empty */
@@ -1306,6 +1299,13 @@
 #endif   // _RWSTD_NO_STRTOULL
 
 
+#ifdef _RWSTD_LIB_SRC
+#  define _RWSTD_TI_EXPORT    /* empty */
+#else    // #ifndef _RWSTD_LIB_SRC
+#  define _RWSTD_TI_EXPORT    _RWSTD_EXPORT
+#endif   // _RWSTD_LIB_SRC
+
+
 #if     defined (_RWSTD_INSTANTIATE_TEMPLATES)       \
     && !defined (_RWSTD_NO_EXPLICIT_INSTANTIATION)   \
     && !defined (_RWSTD_NO_INSTANTIATE)
@@ -1319,6 +1319,9 @@
 #  define _RWSTD_INSTANTIATE_2(a1, a2)       template a1, a2
 #  define _RWSTD_INSTANTIATE_3(a1, a2, a3)   template a1, a2, a3
 
+#  undef  _RWSTD_TI_EXPORT
+#  define _RWSTD_TI_EXPORT    _RWSTD_EXPORT
+
 #  ifdef _RWSTD_NO_FUNCTION_EXPLICIT_INSTANTIATION
      // replace explicit function template instantiations with
      // declarations of explicit function template specializations
@@ -1332,12 +1335,8 @@
 #elif     defined (_MSC_VER)                          \
       && !defined (_RWSTD_NO_EXPLICIT_INSTANTIATION)  \
       && !defined (_RWSTD_NO_INSTANTIATE)
-   // disable warning C4231: nonstandard extension used :
-   //         'extern' before template explicit instantiation
-#  pragma warning (disable: 4231)
 
 #  define _RWSTD_INSTANTIATE(ign1, type)   (!_RWSTD_NO ## type)
-
 #  define _RWSTD_INSTANTIATE_1(arg)        extern template arg
 #  define _RWSTD_INSTANTIATE_2(a1, a2)     extern template a1, a2
 #  define _RWSTD_INSTANTIATE_3(a1, a2, a3) extern template a1, a2, a3

Modified: stdcxx/branches/4.2.x/include/rw/_ioinsert.h
URL: 
http://svn.apache.org/viewvc/stdcxx/branches/4.2.x/include/rw/_ioinsert.h?rev=637130&r1=637129&r2=637130&view=diff
==============================================================================
--- stdcxx/branches/4.2.x/include/rw/_ioinsert.h (original)
+++ stdcxx/branches/4.2.x/include/rw/_ioinsert.h Fri Mar 14 08:16:33 2008
@@ -106,23 +106,23 @@
 
 #  ifndef _RWSTD_NO_NATIVE_BOOL
 
-_RWSTD_INSTANTIATE_FUN_1 (_RWSTD_EXPORT _STD::ostream&
+_RWSTD_INSTANTIATE_FUN_1 (_RWSTD_TI_EXPORT _STD::ostream&
                           __rw_insert (_STD::ostream&, bool));
 
 #  endif   // _RWSTD_NO_NATIVE_BOOL
 
-_RWSTD_INSTANTIATE_FUN_1 (_RWSTD_EXPORT _STD::ostream&
+_RWSTD_INSTANTIATE_FUN_1 (_RWSTD_TI_EXPORT _STD::ostream&
                           __rw_insert (_STD::ostream&, long));
 
-_RWSTD_INSTANTIATE_FUN_1 (_RWSTD_EXPORT _STD::ostream&
+_RWSTD_INSTANTIATE_FUN_1 (_RWSTD_TI_EXPORT _STD::ostream&
                           __rw_insert (_STD::ostream&, unsigned long));
 
 #  ifdef _RWSTD_LONG_LONG
 
-_RWSTD_INSTANTIATE_FUN_1 (_RWSTD_EXPORT _STD::ostream&
+_RWSTD_INSTANTIATE_FUN_1 (_RWSTD_TI_EXPORT _STD::ostream&
                           __rw_insert (_STD::ostream&, _RWSTD_LONG_LONG));
 
-_RWSTD_INSTANTIATE_FUN_1 (_RWSTD_EXPORT _STD::ostream&
+_RWSTD_INSTANTIATE_FUN_1 (_RWSTD_TI_EXPORT _STD::ostream&
                           __rw_insert (_STD::ostream&,
                                        unsigned _RWSTD_LONG_LONG));
 
@@ -133,12 +133,12 @@
 
 #if _RWSTD_INSTANTIATE (_INSERT_DBL, _CHAR)
 
-_RWSTD_INSTANTIATE_FUN_1 (_RWSTD_EXPORT _STD::ostream&
+_RWSTD_INSTANTIATE_FUN_1 (_RWSTD_TI_EXPORT _STD::ostream&
                           __rw_insert (_STD::ostream&, double));
 
 #  ifndef _RWSTD_NO_LONG_DOUBLE
 
-_RWSTD_INSTANTIATE_FUN_1 (_RWSTD_EXPORT _STD::ostream&
+_RWSTD_INSTANTIATE_FUN_1 (_RWSTD_TI_EXPORT _STD::ostream&
                           __rw_insert (_STD::ostream&, long double));
 
 #  endif   // _RWSTD_NO_LONG_DOUBLE
@@ -148,10 +148,10 @@
 
 #if _RWSTD_INSTANTIATE (_INSERT_PTR, _CHAR)
 
-_RWSTD_INSTANTIATE_FUN_1 (_RWSTD_EXPORT _STD::ostream&
+_RWSTD_INSTANTIATE_FUN_1 (_RWSTD_TI_EXPORT _STD::ostream&
                           __rw_insert (_STD::ostream&, const void*));
 
-_RWSTD_INSTANTIATE_FUN_1 (_RWSTD_EXPORT _STD::ostream&
+_RWSTD_INSTANTIATE_FUN_1 (_RWSTD_TI_EXPORT _STD::ostream&
                           __rw_insert (_STD::ostream&, const char*,
                                        _RWSTD_STREAMSIZE, _RWSTD_STREAMSIZE));
 
@@ -167,18 +167,18 @@
 
 #  endif   // _RWSTD_NO_NATIVE_BOOL
 
-_RWSTD_INSTANTIATE_FUN_1 (_RWSTD_EXPORT _STD::wostream&
+_RWSTD_INSTANTIATE_FUN_1 (_RWSTD_TI_EXPORT _STD::wostream&
                           __rw_insert (_STD::wostream&, long));
 
-_RWSTD_INSTANTIATE_FUN_1 (_RWSTD_EXPORT _STD::wostream&
+_RWSTD_INSTANTIATE_FUN_1 (_RWSTD_TI_EXPORT _STD::wostream&
                           __rw_insert (_STD::wostream&, unsigned long));
 
 #  ifdef _RWSTD_LONG_LONG
 
-_RWSTD_INSTANTIATE_FUN_1 (_RWSTD_EXPORT _STD::wostream&
+_RWSTD_INSTANTIATE_FUN_1 (_RWSTD_TI_EXPORT _STD::wostream&
                           __rw_insert (_STD::wostream&, _RWSTD_LONG_LONG));
 
-_RWSTD_INSTANTIATE_FUN_1 (_RWSTD_EXPORT _STD::wostream&
+_RWSTD_INSTANTIATE_FUN_1 (_RWSTD_TI_EXPORT _STD::wostream&
                           __rw_insert (_STD::wostream&,
                                        unsigned _RWSTD_LONG_LONG));
 
@@ -188,12 +188,12 @@
 
 #if _RWSTD_INSTANTIATE (_INSERT_DBL, _WCHAR_T)
 
-_RWSTD_INSTANTIATE_FUN_1 (_RWSTD_EXPORT _STD::wostream&
+_RWSTD_INSTANTIATE_FUN_1 (_RWSTD_TI_EXPORT _STD::wostream&
                           __rw_insert (_STD::wostream&, double));
 
 #    ifndef _RWSTD_NO_LONG_DOUBLE
 
-_RWSTD_INSTANTIATE_FUN_1 (_RWSTD_EXPORT _STD::wostream&
+_RWSTD_INSTANTIATE_FUN_1 (_RWSTD_TI_EXPORT _STD::wostream&
                           __rw_insert (_STD::wostream&, long double));
 
 #  endif   // _RWSTD_NO_LONG_DOUBLE
@@ -202,14 +202,14 @@
 
 #if _RWSTD_INSTANTIATE (_INSERT_PTR, _WCHAR_T)
 
-_RWSTD_INSTANTIATE_FUN_1 (_RWSTD_EXPORT _STD::wostream&
+_RWSTD_INSTANTIATE_FUN_1 (_RWSTD_TI_EXPORT _STD::wostream&
                       __rw_insert (_STD::wostream&, const void*));
 
-_RWSTD_INSTANTIATE_FUN_1 (_RWSTD_EXPORT _STD::wostream&
+_RWSTD_INSTANTIATE_FUN_1 (_RWSTD_TI_EXPORT _STD::wostream&
                           __rw_insert (_STD::wostream&, const char*,
                                        _RWSTD_STREAMSIZE, _RWSTD_STREAMSIZE));
 
-_RWSTD_INSTANTIATE_FUN_1 (_RWSTD_EXPORT _STD::wostream&
+_RWSTD_INSTANTIATE_FUN_1 (_RWSTD_TI_EXPORT _STD::wostream&
                           __rw_insert (_STD::wostream&, const wchar_t*,
                                        _RWSTD_STREAMSIZE, _RWSTD_STREAMSIZE));
 

Modified: stdcxx/branches/4.2.x/include/rw/_mutex.h
URL: 
http://svn.apache.org/viewvc/stdcxx/branches/4.2.x/include/rw/_mutex.h?rev=637130&r1=637129&r2=637130&view=diff
==============================================================================
--- stdcxx/branches/4.2.x/include/rw/_mutex.h (original)
+++ stdcxx/branches/4.2.x/include/rw/_mutex.h Fri Mar 14 08:16:33 2008
@@ -409,8 +409,8 @@
 // explicitly instantiated to work around a g++ 2.95.2 bug on COFF systems
 // (such as IBM AIX or DEC OSF1) where it "forgets" to do so implicitly for
 // explicitly initialized static data members
-_RWSTD_INSTANTIATE_1 (class _RWSTD_EXPORT __rw_static_mutex<int>);
-_RWSTD_INSTANTIATE_1 (class _RWSTD_EXPORT __rw_static_mutex<size_t>);
+_RWSTD_INSTANTIATE_1 (class _RWSTD_TI_EXPORT __rw_static_mutex<int>);
+_RWSTD_INSTANTIATE_1 (class _RWSTD_TI_EXPORT __rw_static_mutex<size_t>);
 
 #endif   // _RWSTD_INSTANTIATE (_STATIC_MUTEX, _INT)
 

Modified: stdcxx/branches/4.2.x/include/sstream
URL: 
http://svn.apache.org/viewvc/stdcxx/branches/4.2.x/include/sstream?rev=637130&r1=637129&r2=637130&view=diff
==============================================================================
--- stdcxx/branches/4.2.x/include/sstream (original)
+++ stdcxx/branches/4.2.x/include/sstream Fri Mar 14 08:16:33 2008
@@ -23,7 +23,7 @@
  * implied.   See  the License  for  the  specific language  governing
  * permissions and limitations under the License.
  *
- * Copyright 1994-2006 Rogue Wave Software.
+ * Copyright 1994-2008 Rogue Wave Software, Inc.
  * 
  **************************************************************************/
 
@@ -198,7 +198,7 @@
         __last  = this->egptr ();
     }
 
-    return _C_string_type (__first, __last - __first);
+    return _C_string_type (__first, __last);
 }
 
 
@@ -465,13 +465,13 @@
 
 #if _RWSTD_INSTANTIATE (_BASIC_STRINGBUF, _CHAR)
 
-_RWSTD_INSTANTIATE_1 (class _RWSTD_EXPORT basic_stringbuf<char>);
+_RWSTD_INSTANTIATE_1 (class _RWSTD_TI_EXPORT basic_stringbuf<char>);
 
 #endif   // _RWSTD_INSTANTIATE (_BASIC_STRINGBUF, _CHAR)
 
 #if _RWSTD_INSTANTIATE (_BASIC_STRINGBUF, _WCHAR_T)
 
-_RWSTD_INSTANTIATE_1 (class _RWSTD_EXPORT basic_stringbuf<wchar_t>);
+_RWSTD_INSTANTIATE_1 (class _RWSTD_TI_EXPORT basic_stringbuf<wchar_t>);
 
 #endif   // _RWSTD_INSTANTIATE (_BASIC_STRINGBUF, _WCHAR_T)
 

Modified: stdcxx/branches/4.2.x/include/streambuf
URL: 
http://svn.apache.org/viewvc/stdcxx/branches/4.2.x/include/streambuf?rev=637130&r1=637129&r2=637130&view=diff
==============================================================================
--- stdcxx/branches/4.2.x/include/streambuf (original)
+++ stdcxx/branches/4.2.x/include/streambuf Fri Mar 14 08:16:33 2008
@@ -535,13 +535,13 @@
 
 #if _RWSTD_INSTANTIATE (_BASIC_STREAMBUF, _CHAR)
 
-_RWSTD_INSTANTIATE_1 (class _RWSTD_EXPORT basic_streambuf<char>);
+_RWSTD_INSTANTIATE_1 (class _RWSTD_TI_EXPORT basic_streambuf<char>);
 
 #endif   // _RWSTD_INSTANTIATE (_BASIC_STREAMBUF, _CHAR)
 
 #if _RWSTD_INSTANTIATE (_BASIC_STREAMBUF, _WCHAR_T)
 
-_RWSTD_INSTANTIATE_1 (class _RWSTD_EXPORT basic_streambuf<wchar_t>);
+_RWSTD_INSTANTIATE_1 (class _RWSTD_TI_EXPORT basic_streambuf<wchar_t>);
 
 #endif   // _RWSTD_INSTANTIATE (_BASIC_STREAMBUF, _WCHAR_T)
 

Modified: stdcxx/branches/4.2.x/include/string
URL: 
http://svn.apache.org/viewvc/stdcxx/branches/4.2.x/include/string?rev=637130&r1=637129&r2=637130&view=diff
==============================================================================
--- stdcxx/branches/4.2.x/include/string (original)
+++ stdcxx/branches/4.2.x/include/string Fri Mar 14 08:16:33 2008
@@ -1509,14 +1509,12 @@
 }
 
 
-// 21.3.7.9, p3 - declared here, defined inline in <ostream>
-template<class _CharT, class _Traits, class _Allocator>
-inline basic_ostream<_CharT, _Traits>&
-operator<< (basic_ostream<_CharT, _Traits>&,
-            const basic_string<_CharT, _Traits, _Allocator>&);
+}   // namespace std
 
 
-}   // namespace std
+#ifndef _RWSTD_RW_STRINGIO_H_INCLUDED
+#  include <rw/_stringio.h>
+#endif   // _RWSTD_RW_STRINGIO_H_INCLUDED
 
 
 _RWSTD_NAMESPACE (__rw) { 
@@ -1610,7 +1608,7 @@
 
 #if _RWSTD_INSTANTIATE (_BASIC_STRING, _CHAR)
 
-_RWSTD_INSTANTIATE_3 (class _RWSTD_EXPORT
+_RWSTD_INSTANTIATE_3 (class _RWSTD_TI_EXPORT
                       basic_string<char, char_traits<char>,
                                    allocator<char> >);
 
@@ -1618,7 +1616,7 @@
 
 #if _RWSTD_INSTANTIATE (_BASIC_STRING, _WCHAR_T)
 
-_RWSTD_INSTANTIATE_3 (class _RWSTD_EXPORT
+_RWSTD_INSTANTIATE_3 (class _RWSTD_TI_EXPORT
                       basic_string<wchar_t, char_traits<wchar_t>,
                                    allocator<wchar_t> >);
 

Modified: stdcxx/branches/4.2.x/src/export.cpp
URL: 
http://svn.apache.org/viewvc/stdcxx/branches/4.2.x/src/export.cpp?rev=637130&r1=637129&r2=637130&view=diff
==============================================================================
--- stdcxx/branches/4.2.x/src/export.cpp (original)
+++ stdcxx/branches/4.2.x/src/export.cpp Fri Mar 14 08:16:33 2008
@@ -114,6 +114,9 @@
 #include <rw/_basic_ios.h>
 #include <rw/_basic_ios.cc>
 
+#include <rw/_stringio.h>
+#include <rw/_stringio.cc>
+
 #include <rw/_heap.h>
 #include <rw/_heap.cc>
 


Reply via email to