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_PULL_COROUTINE_SYNTHESIZED_H 8 #define BOOST_COROUTINES_DETAIL_PULL_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/pull_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 pull_coroutine_synthesized : public pull_coroutine_impl< R > 26 { 27 private: 28 typedef pull_coroutine_impl< R > impl_t; 29 30 public: pull_coroutine_synthesized(coroutine_context * caller,coroutine_context * callee,bool unwind,R * result)31 pull_coroutine_synthesized( coroutine_context * caller, 32 coroutine_context * callee, 33 bool unwind, 34 R * result) : 35 impl_t( caller, callee, unwind, result) 36 {} 37 destroy()38 void destroy() {} 39 }; 40 41 template< typename R > 42 class pull_coroutine_synthesized< R & > : public pull_coroutine_impl< R & > 43 { 44 private: 45 typedef pull_coroutine_impl< R & > impl_t; 46 47 public: pull_coroutine_synthesized(coroutine_context * caller,coroutine_context * callee,bool unwind,R * result)48 pull_coroutine_synthesized( coroutine_context * caller, 49 coroutine_context * callee, 50 bool unwind, 51 R * result) : 52 impl_t( caller, callee, unwind, result) 53 {} 54 destroy()55 void destroy() {} 56 }; 57 58 template<> 59 class pull_coroutine_synthesized< void > : public pull_coroutine_impl< void > 60 { 61 private: 62 typedef pull_coroutine_impl< void > impl_t; 63 64 public: pull_coroutine_synthesized(coroutine_context * caller,coroutine_context * callee,bool unwind)65 pull_coroutine_synthesized( coroutine_context * caller, 66 coroutine_context * callee, 67 bool unwind) : 68 impl_t( caller, callee, unwind) 69 {} 70 destroy()71 inline void destroy() {} 72 }; 73 74 }}} 75 76 #ifdef BOOST_HAS_ABI_HEADERS 77 # include BOOST_ABI_SUFFIX 78 #endif 79 80 #endif // BOOST_COROUTINES_DETAIL_PULL_COROUTINE_SYNTHESIZED_H 81