From 81980575cb833f4430fb2292a8df09663f78366e Mon Sep 17 00:00:00 2001 From: Jonathan Turkanis Date: Fri, 4 Feb 2005 21:09:58 +0000 Subject: [PATCH] removed scope_guard [SVN r27106] --- include/boost/iostreams/copy.hpp | 47 ++++++++++++-------------------- 1 file changed, 17 insertions(+), 30 deletions(-) diff --git a/include/boost/iostreams/copy.hpp b/include/boost/iostreams/copy.hpp index 081d37d..3475a70 100755 --- a/include/boost/iostreams/copy.hpp +++ b/include/boost/iostreams/copy.hpp @@ -21,14 +21,12 @@ #include // copy. #include // failure. #include // pair. -#include // used w/ scope_guard. -#include // used w/ scope_guard. #include #include #include -#include -#include -#include +#include +#include +#include #include #include #include // read, write, close. @@ -113,31 +111,20 @@ std::streamsize copy_impl( Source& src, Sink& snk, return total; } -#include // CW workaround. - template - std::streamsize copy_impl(Source src, Sink snk, std::streamsize buffer_size) - { - using namespace std; - typedef BOOST_IOSTREAMS_CHAR_TYPE(Source) src_char; - typedef BOOST_IOSTREAMS_CHAR_TYPE(Source) snk_char; - BOOST_STATIC_ASSERT((is_same::value)); - ios::openmode m = ios::in | ios::out; - #if !BOOST_WORKAROUND(__BORLANDC__, < 0x600) - void (*close_src)(Source&, ios::openmode) = iostreams::close; - void (*close_snk)(Sink&, ios::openmode) = iostreams::close; - BOOST_SAFE_GUARD(boost::bind(close_src, ref(src), m)); - BOOST_SCOPE_GUARD(boost::bind(close_snk, ref(snk), m)); - #endif - streamsize result = - copy_impl( src, snk, buffer_size, - is_direct(), is_direct() ); - #if BOOST_WORKAROUND(__BORLANDC__, < 0x600) - iostreams::close(src, m); - iostreams::close(snk, m); - #endif - return result; - } -#include +template +std::streamsize copy_impl(Source src, Sink snk, std::streamsize buffer_size) +{ + using namespace std; + typedef BOOST_IOSTREAMS_CHAR_TYPE(Source) src_char; + typedef BOOST_IOSTREAMS_CHAR_TYPE(Source) snk_char; + BOOST_STATIC_ASSERT((is_same::value)); + external_closer close_source(src, ios::in | ios::out); + external_closer close_sink(snk, ios::in | ios::out); + streamsize result = + copy_impl( src, snk, buffer_size, + is_direct(), is_direct() ); + return result; +} } // End namespace detail.