BVB Source Codes

mars Show trampoline.hpp Source code

Return Download mars: download trampoline.hpp Source code - Download mars Source code - Type:.hpp
  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_TRAMPOLINE_H
  8. #define BOOST_COROUTINES_DETAIL_TRAMPOLINE_H
  9.  
  10. #include <boost/assert.hpp>
  11. #include <boost/config.hpp>
  12. #include <boost/context/detail/fcontext.hpp>
  13. #include <boost/cstdint.hpp>
  14.  
  15. #include <boost/coroutine/detail/config.hpp>
  16. #include <boost/coroutine/detail/data.hpp>
  17.  
  18. #ifdef BOOST_HAS_ABI_HEADERS
  19. #  include BOOST_ABI_PREFIX
  20. #endif
  21.  
  22. namespace mars_boost {} namespace boost = mars_boost; namespace mars_boost {
  23. namespace coroutines {
  24. namespace detail {
  25.  
  26. template< typename Coro >
  27. void trampoline( context::detail::transfer_t t)
  28. {
  29.     typedef typename Coro::param_type   param_type;
  30.  
  31.     data_t * data = static_cast< data_t * >( t.data);
  32.     data->from->ctx_ = t.fctx;
  33.     param_type * param(
  34.         static_cast< param_type * >( data->data) );
  35.     BOOST_ASSERT( 0 != param);
  36.     BOOST_ASSERT( 0 != param->data);
  37.  
  38.     Coro * coro(
  39.         static_cast< Coro * >( param->coro) );
  40.     BOOST_ASSERT( 0 != coro);
  41.  
  42.     coro->run( param->data);
  43. }
  44.  
  45. template< typename Coro >
  46. void trampoline_void( context::detail::transfer_t t)
  47. {
  48.     typedef typename Coro::param_type   param_type;
  49.  
  50.     data_t * data = static_cast< data_t * >( t.data);
  51.     data->from->ctx_ = t.fctx;
  52.     param_type * param(
  53.         static_cast< param_type * >( data->data) );
  54.     BOOST_ASSERT( 0 != param);
  55.  
  56.     Coro * coro(
  57.         static_cast< Coro * >( param->coro) );
  58.     BOOST_ASSERT( 0 != coro);
  59.    
  60.     coro->run();
  61. }
  62.  
  63. }}}
  64.  
  65. #ifdef BOOST_HAS_ABI_HEADERS
  66. #  include BOOST_ABI_SUFFIX
  67. #endif
  68.  
  69. #endif // BOOST_COROUTINES_DETAIL_TRAMPOLINE_H
  70.  
downloadtrampoline.hpp Source code - Download mars Source code
Related Source Codes/Software:
Hero - Elegant transition library for iOS & tvOS 2017-06-09
deep-photo-styletransfer - Code and data for paper "Deep Photo Style Transfer... 2017-06-09
mastodon - A GNU Social-compatible microblogging server ... 2017-06-09
plyr - A simple HTML5, YouTube and Vimeo player ... 2017-06-08
prepack - Prepack is a partial evaluator for JavaScript. Pre... 2017-06-08
Public-APIs - 2017-06-09
lottie-ios - An iOS library to natively render After Effects ve... 2017-06-09
Awesome-Hacking - A collection of various awesome lists for hackers,... 2017-06-09
algorithms - Minimal examples of data structures and algorithms... 2017-06-10
lectures - Oxford Deep NLP 2017 course 2017-06-10
CRYENGINE - CRYENGINE is a powerful real-time game development... 2017-06-11
postal - 2017-06-11
reactide - Reactide is the first dedicated IDE for React web ... 2017-06-11
rkt - rkt is a pod-native container engine for Linux. It... 2017-06-11
uWebSockets - Tiny WebSockets https://for... 2017-06-11
realworld - TodoMVC for the RealWorld - Exemplary fullstack Me... 2017-06-11
goreplay - GoReplay is an open-source tool for capturing and ... 2017-06-10
pyenv - Simple Python version management 2017-06-10
redux-saga - An alternative side effect model for Redux apps ... 2017-06-10
angular-starter - 2017-06-10

 Back to top