[prev in list] [next in list] [prev in thread] [next in thread]
List: boost-commit
Subject: [Boost-commit] svn:boost r83642 - trunk/boost
From: antoshkka () gmail ! com
Date: 2013-03-30 7:20:23
Message-ID: 20130330072023.DF0212F811F () wowbagger ! osl ! iu ! edu
[Download RAW message or body]
Author: apolukhin
Date: 2013-03-30 03:20:22 EDT (Sat, 30 Mar 2013)
New Revision: 83642
URL: http://svn.boost.org/trac/boost/changeset/83642
Log:
Fix streams and buffers usage (refs #8267 and refs #7704). Now conversions the use \
STL streams shall work faster Text files modified:
trunk/boost/lexical_cast.hpp | 20 +++++++++-----------
1 files changed, 9 insertions(+), 11 deletions(-)
Modified: trunk/boost/lexical_cast.hpp
==============================================================================
--- trunk/boost/lexical_cast.hpp (original)
+++ trunk/boost/lexical_cast.hpp 2013-03-30 03:20:22 EDT (Sat, 30 Mar 2013)
@@ -1526,13 +1526,12 @@
#if defined(BOOST_NO_STRINGSTREAM)
typedef std::ostrstream out_stream_t;
- typedef parser_buf<std::strstreambuf, char> unlocked_but_t;
#elif defined(BOOST_NO_STD_LOCALE)
typedef std::ostringstream out_stream_t;
- typedef parser_buf<std::stringbuf, char> unlocked_but_t;
+ typedef parser_buf<std::streambuf, char> buffer_t;
#else
typedef std::basic_ostringstream<CharT, Traits> \
out_stream_t;
- typedef parser_buf<std::basic_stringbuf<CharT, Traits>, CharT> \
unlocked_but_t; + typedef parser_buf<std::basic_streambuf<CharT, Traits>, \
CharT> buffer_t; #endif
typedef BOOST_DEDUCED_TYPENAME boost::mpl::if_c<
RequiresStringbuffer,
@@ -1615,8 +1614,9 @@
BOOST_STATIC_ASSERT((boost::is_same<char, CharT>::value));
#endif
bool const result = !(out_stream << input).fail();
- const unlocked_but_t* const p
- = static_cast<unlocked_but_t*>(out_stream.rdbuf()) ;
+ const buffer_t* const p = static_cast<buffer_t*>(
+ static_cast<std::basic_streambuf<CharT, \
Traits>*>(out_stream.rdbuf()) + );
start = p->pbase();
finish = p->pptr();
return result;
@@ -1984,15 +1984,13 @@
std::istrstream stream(start, finish - start);
#else
+ buffer_t buf;
+ buf.setbuf(start, finish - start);
#if defined(BOOST_NO_STD_LOCALE)
- std::istringstream stream;
+ std::istream stream(&buf);
#else
- std::basic_istringstream<CharT, Traits> stream;
+ std::basic_istream<CharT, Traits> stream(&buf);
#endif // BOOST_NO_STD_LOCALE
-
- unlocked_but_t buf;
- buf.setbuf(start, finish - start);
- dynamic_cast<std::basic_ios<CharT, Traits>&>(stream).rdbuf(&buf);
#endif // BOOST_NO_STRINGSTREAM
stream.unsetf(std::ios::skipws);
_______________________________________________
Boost-commit mailing list
Boost-commit@lists.boost.org
http://lists.boost.org/mailman/listinfo.cgi/boost-commit
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic