Compare commits

..

25 Commits

Author SHA1 Message Date
671495a8ce Branch for 2nd try at V2 removal
[SVN r77497]
2012-03-23 12:04:44 +00:00
f904cd5d69 Revert [67111] (addition of boost/detail/iomanip.hpp) and all the commits that depend on it. ([68137], [68140], [68141], [68154], and [68165]).
[SVN r68168]
2011-01-15 08:11:51 +00:00
2b30eb2225 Replacing the use of <iomanip> with <boost/detail/iomanip.hpp> across Boost.
On Linux, GNU's libstdc++, which is the default stdlib for icc and clang,
cannot parse the <iomanip> header in version 4.5+ (which thankfully neither
compiler advises the use of yet), as it's original C++98-friendly
implementation has been replaced with a gnu++0x implementation.
<boost/detail/iomanip.hpp> is a portable implementation of <iomanip>, providing
boost::detail::setfill, boost::detail::setbase, boost::detail::setw,
boost::detail::setprecision, boost::detail::setiosflags and
boost::detail::resetiosflags. 



[SVN r68140]
2011-01-14 02:35:58 +00:00
9fbc9b4cc6 Handle width correctly. Fixes #5046.
[SVN r67751]
2011-01-07 15:22:13 +00:00
9d64187c34 Add an element-wise swap for Boost.Tuple. Fixes #1324
[SVN r62686]
2010-06-09 19:30:35 +00:00
7b6203747a Use an inline function instead of a static object for boost::tuples::ignore, avoiding problems with the ODR and Borland precompiled headers. Fixes #2656
[SVN r62684]
2010-06-09 19:00:56 +00:00
1b07c1a2d4 Reimplement boost::tuples::element and boost::tuples::get to make better use of memoization. Fixes #2130
[SVN r62683]
2010-06-09 18:28:16 +00:00
052b3db77f Make reading a tuple work with std::noskipws. Fixes #1920
[SVN r62678]
2010-06-09 17:45:24 +00:00
d908a5d566 rm cmake from trunk. I'm not entirely sure this is necessary to satisfy the inspect script, but I'm not taking any chances, and it is easy to put back
[SVN r56942]
2009-10-17 02:07:38 +00:00
a75a686fae Copyrights on CMakeLists.txt to keep them from clogging up the inspect
reports.  This is essentially the same commit as r55095 on the release
branch.



[SVN r55159]
2009-07-26 00:49:56 +00:00
b7c2e00b64 Fix typos/markup problems in tuple docs. Fixes #
[SVN r53218]
2009-05-23 18:59:02 +00:00
e89ea11d63 Avoid ambiguites between std and boost components in C++0x mode. Fixes #3026
[SVN r53212]
2009-05-23 16:49:33 +00:00
08277fd057 Allow printing an empty tuple
[SVN r53211]
2009-05-23 16:39:13 +00:00
70e04d2965 Fix html.
[SVN r51881]
2009-03-21 15:35:35 +00:00
451415ebce fixed tuples::length not having a specialization for const tuple<> and const null_type
[SVN r51862]
2009-03-20 01:21:42 +00:00
e9dc95ae93 Supress gcc warning. Fixes #2388
[SVN r51449]
2009-02-26 02:35:44 +00:00
1d1970d81d Updating dependency information for modularized libraries.
[SVN r49628]
2008-11-07 17:05:27 +00:00
4e452cb734 Updating CMake files to latest trunk. Added dependency information for regression tests and a few new macros for internal use.
[SVN r49627]
2008-11-07 17:02:56 +00:00
776be602e5 Continuing merge of CMake build system files into trunk with the encouragement of Doug Gregor
[SVN r49510]
2008-11-01 13:15:41 +00:00
a30a7f9604 With his kind permission, change Jaakko "Järvi" to "Jarvi"
[SVN r46808]
2008-06-28 13:45:21 +00:00
62d366fa68 Link to people pages on the website, as they've been removed from the download.
[SVN r43209]
2008-02-10 14:56:22 +00:00
d08c9bfab1 Update to V2
[SVN r38530]
2007-08-08 19:42:04 +00:00
19b8004830 Fixed a typo.
[SVN r36896]
2007-02-06 00:23:26 +00:00
0af5b76442 Merge fixed links from RC_1_34_0.
[SVN r36660]
2007-01-07 23:50:56 +00:00
defe1c94d6 Add copyright, license
[SVN r35905]
2006-11-07 19:11:57 +00:00
2 changed files with 45 additions and 0 deletions

View File

@ -29,6 +29,8 @@
#include <ostream>
#endif
#include <sstream>
#include "boost/tuple/tuple.hpp"
// This is ugly: one should be using twoargument isspace since whitspace can
@ -244,6 +246,22 @@ print(std::ostream& o, const cons<T1, T2>& t) {
}
template<class T>
inline bool handle_width(std::ostream& o, const T& t) {
std::streamsize width = o.width();
if(width == 0) return false;
std::ostringstream ss;
ss.copyfmt(o);
ss.tie(0);
ss.width(0);
ss << t;
o << ss.str();
return true;
}
#else
@ -280,6 +298,23 @@ print(std::basic_ostream<CharType, CharTrait>& o, const cons<T1, T2>& t) {
return print(o, t.tail);
}
template<class CharT, class Traits, class T>
inline bool handle_width(std::basic_ostream<CharT, Traits>& o, const T& t) {
std::streamsize width = o.width();
if(width == 0) return false;
std::basic_ostringstream<CharT, Traits> ss;
ss.copyfmt(o);
ss.tie(0);
ss.width(0);
ss << t;
o << ss.str();
return true;
}
#endif // BOOST_NO_TEMPLATED_STREAMS
} // namespace detail
@ -288,6 +323,7 @@ print(std::basic_ostream<CharType, CharTrait>& o, const cons<T1, T2>& t) {
inline std::ostream& operator<<(std::ostream& o, const null_type& t) {
if (!o.good() ) return o;
if (detail::handle_width(o, t)) return o;
const char l =
detail::format_info::get_manipulator(o, detail::format_info::open);
@ -303,6 +339,7 @@ inline std::ostream& operator<<(std::ostream& o, const null_type& t) {
template<class T1, class T2>
inline std::ostream& operator<<(std::ostream& o, const cons<T1, T2>& t) {
if (!o.good() ) return o;
if (detail::handle_width(o, t)) return o;
const char l =
detail::format_info::get_manipulator(o, detail::format_info::open);
@ -325,6 +362,7 @@ inline std::basic_ostream<CharType, CharTrait>&
operator<<(std::basic_ostream<CharType, CharTrait>& o,
const null_type& t) {
if (!o.good() ) return o;
if (detail::handle_width(o, t)) return o;
const CharType l =
detail::format_info::get_manipulator(o, detail::format_info::open);
@ -342,6 +380,7 @@ inline std::basic_ostream<CharType, CharTrait>&
operator<<(std::basic_ostream<CharType, CharTrait>& o,
const cons<T1, T2>& t) {
if (!o.good() ) return o;
if (detail::handle_width(o, t)) return o;
const CharType l =
detail::format_info::get_manipulator(o, detail::format_info::open);

View File

@ -20,6 +20,7 @@
#include <iterator>
#include <algorithm>
#include <string>
#include <iomanip>
#if defined BOOST_NO_STRINGSTREAM
#include <strstream>
@ -77,6 +78,11 @@ int test_main(int argc, char * argv[] ) {
os3 << set_close(']');
os3 << make_tuple();
BOOST_CHECK (os3.str() == std::string("()[]") );
// check width
useThisOStringStream os4;
os4 << std::setw(10) << make_tuple(1, 2, 3);
BOOST_CHECK (os4.str() == std::string(" (1 2 3)") );
std::ofstream tmp("temp.tmp");