/
usr
/
include
/
boost
/
iostreams
/
detail
/
/usr/include/boost/iostreams/detail
mkdir
upload
Name
Size
Mode
Actions
adapter/
-
0755
rm
broken_overload_resolution/
-
0755
rm
config/
-
0755
rm
streambuf/
-
0755
rm
absolute_path.hpp
1598
0644
edit
dl
rm
access_control.hpp
2908
0644
edit
dl
rm
add_facet.hpp
1572
0644
edit
dl
rm
bool_trait_def.hpp
1964
0644
edit
dl
rm
buffer.hpp
7488
0644
edit
dl
rm
call_traits.hpp
981
0644
edit
dl
rm
char_traits.hpp
2542
0644
edit
dl
rm
codecvt_helper.hpp
7277
0644
edit
dl
rm
codecvt_holder.hpp
1970
0644
edit
dl
rm
counted_array.hpp
2350
0644
edit
dl
rm
current_directory.hpp
2312
0644
edit
dl
rm
default_arg.hpp
700
0644
edit
dl
rm
dispatch.hpp
1604
0644
edit
dl
rm
double_object.hpp
3920
0644
edit
dl
rm
enable_if_stream.hpp
1233
0644
edit
dl
rm
error.hpp
1534
0644
edit
dl
rm
execute.hpp
4526
0644
edit
dl
rm
file_handle.hpp
1033
0644
edit
dl
rm
forward.hpp
5219
0644
edit
dl
rm
fstream.hpp
1262
0644
edit
dl
rm
functional.hpp
5783
0644
edit
dl
rm
ios.hpp
2060
0644
edit
dl
rm
iostream.hpp
1288
0644
edit
dl
rm
is_dereferenceable.hpp
2424
0644
edit
dl
rm
is_iterator_range.hpp
1103
0644
edit
dl
rm
newline.hpp
869
0644
edit
dl
rm
optional.hpp
3289
0644
edit
dl
rm
param_type.hpp
873
0644
edit
dl
rm
path.hpp
5994
0644
edit
dl
rm
push.hpp
7416
0644
edit
dl
rm
push_params.hpp
767
0644
edit
dl
rm
resolve.hpp
8453
0644
edit
dl
rm
restrict_impl.hpp
16898
0644
edit
dl
rm
select.hpp
3095
0644
edit
dl
rm
select_by_size.hpp
5662
0644
edit
dl
rm
streambuf.hpp
1205
0644
edit
dl
rm
system_failure.hpp
2661
0644
edit
dl
rm
template_params.hpp
967
0644
edit
dl
rm
translate_int_type.hpp
2025
0644
edit
dl
rm
wrap_unwrap.hpp
3328
0644
edit
dl
rm
Edit:
/usr/include/boost/iostreams/detail/execute.hpp
(4526B)
/* * Distributed under the Boost Software License, Version 1.0.(See accompanying * file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt.) * * See http://www.boost.org/libs/iostreams for documentation. * File: boost/iostreams/detail/execute.hpp * Date: Thu Dec 06 13:21:54 MST 2007 * Copyright: 2007-2008 CodeRage, LLC * Author: Jonathan Turkanis * Contact: turkanis at coderage dot com * Defines the overloaded function template * boost::iostreams::detail::execute_all() and the function template * boost::iostreams::detail::execute_foreach(). * * execute_all() invokes a primary operation and performs a sequence of cleanup * operations, returning the result of the primary operation if no exceptions * are thrown. If one of the operations throws an exception, performs the * remaining operations and rethrows the initial exception. * * execute_foreach() is a variant of std::foreach which invokes a function * object for each item in a sequence, catching all execptions and rethrowing * the first caught exception after the function object has been invoked on each * item. */ #ifndef BOOST_IOSTREAMS_DETAIL_EXECUTE_HPP_INCLUDED #define BOOST_IOSTREAMS_DETAIL_EXECUTE_HPP_INCLUDED #if defined(_MSC_VER) # pragma once #endif #include <boost/config.hpp> #include <boost/detail/workaround.hpp> #include <boost/iostreams/detail/config/limits.hpp> // MAX_EXECUTE_ARITY #include <boost/preprocessor/arithmetic/dec.hpp> #include <boost/preprocessor/cat.hpp> #include <boost/preprocessor/iteration/local.hpp> #include <boost/preprocessor/repetition/enum_params.hpp> #include <boost/preprocessor/repetition/enum_binary_params.hpp> #include <boost/preprocessor/punctuation/comma_if.hpp> #include <boost/utility/result_of.hpp> namespace boost { namespace iostreams { namespace detail { // Helper for class template execute_traits. template<typename Result> struct execute_traits_impl { typedef Result result_type; template<typename Op> static Result execute(Op op) { return op(); } }; // Specialization for void return. For simplicity, execute() returns int // for operations returning void. This could be avoided with additional work. template<> struct execute_traits_impl<void> { typedef int result_type; template<typename Op> static int execute(Op op) { op(); return 0; } }; // Deduces the result type of Op and allows uniform treatment of operations // returning void and non-void. template< typename Op, typename Result = // VC6.5 workaround. #if !defined(BOOST_NO_RESULT_OF) && \ !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x592)) typename boost::result_of<Op()>::type #else BOOST_DEDUCED_TYPENAME Op::result_type #endif > struct execute_traits : execute_traits_impl<Result> { }; // Implementation with no cleanup operations. template<typename Op> typename execute_traits<Op>::result_type execute_all(Op op) { return execute_traits<Op>::execute(op); } // Implementation with one or more cleanup operations #define BOOST_PP_LOCAL_MACRO(n) \ template<typename Op, BOOST_PP_ENUM_PARAMS(n, typename C)> \ typename execute_traits<Op>::result_type \ execute_all(Op op, BOOST_PP_ENUM_BINARY_PARAMS(n, C, c)) \ { \ typename execute_traits<Op>::result_type r; \ try { \ r = boost::iostreams::detail::execute_all( \ op BOOST_PP_COMMA_IF(BOOST_PP_DEC(n)) \ BOOST_PP_ENUM_PARAMS(BOOST_PP_DEC(n), c) \ ); \ } catch (...) { \ try { \ BOOST_PP_CAT(c, BOOST_PP_DEC(n))(); \ } catch (...) { } \ throw; \ } \ BOOST_PP_CAT(c, BOOST_PP_DEC(n))(); \ return r; \ } \ /**/ #define BOOST_PP_LOCAL_LIMITS (1, BOOST_IOSTREAMS_MAX_EXECUTE_ARITY) #include BOOST_PP_LOCAL_ITERATE() #undef BOOST_PP_LOCAL_MACRO template<class InIt, class Op> Op execute_foreach(InIt first, InIt last, Op op) { if (first == last) return op; try { op(*first); } catch (...) { try { ++first; boost::iostreams::detail::execute_foreach(first, last, op); } catch (...) { } throw; } ++first; return boost::iostreams::detail::execute_foreach(first, last, op); } } } } // End namespaces detail, iostreams, boost. #endif // #ifndef BOOST_IOSTREAMS_DETAIL_EXECUTE_HPP_INCLUDED
Save
cmd:
run