BVB Source Codes

mars Show coroutine_context.cpp Source code

Return Download mars: download coroutine_context.cpp Source code - Download mars Source code - Type:.cpp
  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. #include "boost/coroutine/detail/coroutine_context.hpp"
  8.  
  9. #include "boost/coroutine/detail/data.hpp"
  10.  
  11. #ifdef BOOST_HAS_ABI_HEADERS
  12. #  include BOOST_ABI_PREFIX
  13. #endif
  14.  
  15. #if defined(_MSC_VER)
  16. # pragma warning(push)
  17. # pragma warning(disable:4355)
  18. #endif
  19.  
  20. #if defined(BOOST_USE_SEGMENTED_STACKS)
  21. extern "C" {
  22.  
  23. void __splitstack_getcontext( void * [BOOST_CONTEXT_SEGMENTS]);
  24.  
  25. void __splitstack_setcontext( void * [BOOST_CONTEXT_SEGMENTS]);
  26.  
  27. }
  28. #endif
  29.  
  30. namespace mars_boost {} namespace boost = mars_boost; namespace mars_boost {
  31. namespace coroutines {
  32. namespace detail {
  33.  
  34. coroutine_context::coroutine_context() :
  35.     palloc_(),
  36.     ctx_( 0)
  37. {}
  38.  
  39. coroutine_context::coroutine_context( ctx_fn fn, preallocated const& palloc) :
  40.     palloc_( palloc),
  41.     ctx_( context::detail::make_fcontext( palloc_.sp, palloc_.size, fn) )
  42. {}
  43.  
  44. coroutine_context::coroutine_context( coroutine_context const& other) :
  45.     palloc_( other.palloc_),
  46.     ctx_( other.ctx_)
  47. {}
  48.  
  49. coroutine_context &
  50. coroutine_context::operator=( coroutine_context const& other)
  51. {
  52.     if ( this == & other) return * this;
  53.  
  54.     palloc_ = other.palloc_;
  55.     ctx_ = other.ctx_;
  56.  
  57.     return * this;
  58. }
  59.  
  60. void *
  61. coroutine_context::jump( coroutine_context & other, void * param)
  62. {
  63. #if defined(BOOST_USE_SEGMENTED_STACKS)
  64.     __splitstack_getcontext( palloc_.sctx.segments_ctx);
  65.     __splitstack_setcontext( other.palloc_.sctx.segments_ctx);
  66. #endif
  67.     data_t data = { this, param };
  68.     context::detail::transfer_t t = context::detail::jump_fcontext( other.ctx_, & data);
  69.     data_t * ret = static_cast< data_t * >( t.data);
  70.     ret->from->ctx_ = t.fctx;
  71.     return ret->data;
  72. }
  73.  
  74. }}}
  75.  
  76. #if defined(_MSC_VER)
  77. # pragma warning(pop)
  78. #endif
  79.  
  80. #ifdef BOOST_HAS_ABI_HEADERS
  81. #  include BOOST_ABI_SUFFIX
  82. #endif
  83.  
downloadcoroutine_context.cpp 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