File indexing completed on 2025-01-18 09:30:31
0001
0002
0003
0004
0005
0006
0007 #ifndef BOOST_COROUTINES_DETAIL_PARAMETERS_H
0008 #define BOOST_COROUTINES_DETAIL_PARAMETERS_H
0009
0010 #include <boost/assert.hpp>
0011 #include <boost/config.hpp>
0012
0013 #include <boost/coroutine/detail/flags.hpp>
0014
0015 #ifdef BOOST_HAS_ABI_HEADERS
0016 # include BOOST_ABI_PREFIX
0017 #endif
0018
0019 namespace boost {
0020 namespace coroutines {
0021 namespace detail {
0022
0023 template< typename Data >
0024 struct parameters
0025 {
0026 Data * data;
0027 bool do_unwind;
0028 void * coro;
0029
0030 parameters() :
0031 data( 0), do_unwind( false), coro( 0)
0032 {}
0033
0034 explicit parameters( void * coro_) :
0035 data( 0), do_unwind( false), coro( coro_)
0036 { BOOST_ASSERT( 0 != coro); }
0037
0038 explicit parameters( Data * data_, void * coro_) :
0039 data( data_), do_unwind( false), coro( coro_)
0040 {
0041 BOOST_ASSERT( 0 != data);
0042 BOOST_ASSERT( 0 != coro);
0043 }
0044
0045 explicit parameters( unwind_t::flag_t) :
0046 data( 0), do_unwind( true)
0047 {}
0048 };
0049
0050 template< typename Data >
0051 struct parameters< Data & >
0052 {
0053 Data * data;
0054 bool do_unwind;
0055 void * coro;
0056
0057 parameters() :
0058 data( 0), do_unwind( false), coro( 0)
0059 {}
0060
0061 explicit parameters( void * coro_) :
0062 data( 0), do_unwind( false), coro( coro_)
0063 { BOOST_ASSERT( 0 != coro); }
0064
0065 explicit parameters( Data * data_, void * coro_) :
0066 data( data_), do_unwind( false), coro( coro_)
0067 {
0068 BOOST_ASSERT( 0 != data);
0069 BOOST_ASSERT( 0 != coro);
0070 }
0071
0072 explicit parameters( unwind_t::flag_t) :
0073 data( 0), do_unwind( true), coro( 0)
0074 {}
0075 };
0076
0077 template<>
0078 struct parameters< void >
0079 {
0080 bool do_unwind;
0081 void * coro;
0082
0083 parameters() :
0084 do_unwind( false), coro(0)
0085 {}
0086
0087 parameters( void * coro_) :
0088 do_unwind( false), coro( coro_)
0089 { BOOST_ASSERT( 0 != coro); }
0090
0091 explicit parameters( unwind_t::flag_t) :
0092 do_unwind( true), coro( 0)
0093 {}
0094 };
0095
0096 }}}
0097
0098 #ifdef BOOST_HAS_ABI_HEADERS
0099 # include BOOST_ABI_SUFFIX
0100 #endif
0101
0102 #endif