1 2 // Copyright Oliver Kowalke 2009. 3 // Distributed under the Boost Software License, Version 1.0. 4 // (See accompanying file LICENSE_1_0.txt or copy at 5 // http://www.boost.org/LICENSE_1_0.txt) 6 7 #ifndef BOOST_COROUTINES_DETAIL_PUSH_COROUTINE_SYNTHESIZED_H 8 #define BOOST_COROUTINES_DETAIL_PUSH_COROUTINE_SYNTHESIZED_H 9 10 #include <boost/config.hpp> 11 12 #include <boost/coroutine/detail/config.hpp> 13 #include <boost/coroutine/detail/coroutine_context.hpp> 14 #include <boost/coroutine/detail/push_coroutine_impl.hpp> 15 16 #ifdef BOOST_HAS_ABI_HEADERS 17 # include BOOST_ABI_PREFIX 18 #endif 19 20 namespace boost { 21 namespace coroutines { 22 namespace detail { 23 24 template< typename R > 25 class push_coroutine_synthesized : public push_coroutine_impl< R > 26 { 27 private: 28 typedef push_coroutine_impl< R > impl_t; 29 30 public: push_coroutine_synthesized(coroutine_context * caller,coroutine_context * callee,bool unwind)31 push_coroutine_synthesized( coroutine_context * caller, 32 coroutine_context * callee, 33 bool unwind) : 34 impl_t( caller, callee, unwind) 35 {} 36 destroy()37 void destroy() {} 38 }; 39 40 template< typename R > 41 class push_coroutine_synthesized< R & > : public push_coroutine_impl< R & > 42 { 43 private: 44 typedef push_coroutine_impl< R & > impl_t; 45 46 public: push_coroutine_synthesized(coroutine_context * caller,coroutine_context * callee,bool unwind)47 push_coroutine_synthesized( coroutine_context * caller, 48 coroutine_context * callee, 49 bool unwind) : 50 impl_t( caller, callee, unwind) 51 {} 52 destroy()53 void destroy() {} 54 }; 55 56 template<> 57 class push_coroutine_synthesized< void > : public push_coroutine_impl< void > 58 { 59 private: 60 typedef push_coroutine_impl< void > impl_t; 61 62 public: push_coroutine_synthesized(coroutine_context * caller,coroutine_context * callee,bool unwind)63 push_coroutine_synthesized( coroutine_context * caller, 64 coroutine_context * callee, 65 bool unwind) : 66 impl_t( caller, callee, unwind) 67 {} 68 destroy()69 inline void destroy() {} 70 }; 71 72 }}} 73 74 #ifdef BOOST_HAS_ABI_HEADERS 75 # include BOOST_ABI_SUFFIX 76 #endif 77 78 #endif // BOOST_COROUTINES_DETAIL_PUSH_COROUTINE_SYNTHESIZED_H 79