diff options
author | Tobias Markmann <tm@ayena.de> | 2014-10-19 20:22:58 (GMT) |
---|---|---|
committer | Tobias Markmann <tm@ayena.de> | 2014-10-20 13:49:33 (GMT) |
commit | 6b22dfcf59474dd016a0355a3102a1dd3692d92c (patch) | |
tree | 2b1fd33be433a91e81fee84fdc2bf1b52575d934 /3rdParty/Boost/src/boost/format/feed_args.hpp | |
parent | 38b0cb785fea8eae5e48fae56440695fdfd10ee1 (diff) | |
download | swift-6b22dfcf59474dd016a0355a3102a1dd3692d92c.zip swift-6b22dfcf59474dd016a0355a3102a1dd3692d92c.tar.bz2 |
Update Boost in 3rdParty to version 1.56.0.
This updates Boost in our 3rdParty directory to version 1.56.0.
Updated our update.sh script to stop on error.
Changed error reporting in SwiftTools/CrashReporter.cpp to SWIFT_LOG due to
missing include of <iostream> with newer Boost.
Change-Id: I4b35c77de951333979a524097f35f5f83d325edc
Diffstat (limited to '3rdParty/Boost/src/boost/format/feed_args.hpp')
-rw-r--r-- | 3rdParty/Boost/src/boost/format/feed_args.hpp | 48 |
1 files changed, 43 insertions, 5 deletions
diff --git a/3rdParty/Boost/src/boost/format/feed_args.hpp b/3rdParty/Boost/src/boost/format/feed_args.hpp index 53243dc..dcfd955 100644 --- a/3rdParty/Boost/src/boost/format/feed_args.hpp +++ b/3rdParty/Boost/src/boost/format/feed_args.hpp @@ -70,9 +70,8 @@ namespace detail { } // -mk_str(..) -#if BOOST_WORKAROUND( BOOST_MSVC, <= 1300) || \ - BOOST_WORKAROUND(__DECCXX_VER, BOOST_TESTED_AT(60590042)) -// MSVC needs to be tricked to disambiguate this simple overload.. +#if BOOST_WORKAROUND(__DECCXX_VER, BOOST_TESTED_AT(60590042)) +// __DECCXX needs to be tricked to disambiguate this simple overload.. // the trick is in "boost/format/msvc_disambiguater.hpp" template< class Ch, class Tr, class T> inline @@ -115,7 +114,40 @@ namespace detail { os << x ; } #endif -#endif // -msvc workaround +#endif // -__DECCXX workaround + + template< class Ch, class Tr, class T> + void call_put_head(BOOST_IO_STD basic_ostream<Ch, Tr> & os, const void* x) { + put_head(os, *(typename ::boost::remove_reference<T>::type*)x); + } + + template< class Ch, class Tr, class T> + void call_put_last(BOOST_IO_STD basic_ostream<Ch, Tr> & os, const void* x) { + put_last(os, *(T*)x); + } + + template< class Ch, class Tr> + struct put_holder { + template<class T> + put_holder(T& t) + : arg(&t), + put_head(&call_put_head<Ch, Tr, T>), + put_last(&call_put_last<Ch, Tr, T>) + {} + const void* arg; + void (*put_head)(BOOST_IO_STD basic_ostream<Ch, Tr> & os, const void* x); + void (*put_last)(BOOST_IO_STD basic_ostream<Ch, Tr> & os, const void* x); + }; + + template< class Ch, class Tr> inline + void put_head( BOOST_IO_STD basic_ostream<Ch, Tr> & os, const put_holder<Ch, Tr>& t) { + t.put_head(os, t.arg); + } + + template< class Ch, class Tr> inline + void put_last( BOOST_IO_STD basic_ostream<Ch, Tr> & os, const put_holder<Ch, Tr>& t) { + t.put_last(os, t.arg); + } template< class Ch, class Tr, class Alloc, class T> @@ -258,7 +290,7 @@ namespace detail { template<class Ch, class Tr, class Alloc, class T> basic_format<Ch, Tr, Alloc>& - feed (basic_format<Ch,Tr, Alloc>& self, T x) { + feed_impl (basic_format<Ch,Tr, Alloc>& self, T x) { if(self.dumped_) self.clear(); distribute<Ch, Tr, Alloc, T> (self, x); ++self.cur_arg_; @@ -268,6 +300,12 @@ namespace detail { } return self; } + + template<class Ch, class Tr, class Alloc, class T> inline + basic_format<Ch, Tr, Alloc>& + feed (basic_format<Ch,Tr, Alloc>& self, T x) { + return feed_impl<Ch, Tr, Alloc, const put_holder<Ch, Tr>&>(self, put_holder<Ch, Tr>(x)); + } } // namespace detail } // namespace io |