Ejemplo n.º 1
0
		void suspend()
		{
			current_impl() = nullptr;
			BOOST_ASSERT(!mutex_.try_lock());
			BOOST_ASSERT(original_context_);
			original_context_ = std::get<0>(original_context_(nullptr));
		}
Ejemplo n.º 2
0
 NodePtr NodeIterator::current()
 {
     if (m_current)
         return m_current;
     std::string s;
     current_impl(s);
     if (s.empty())
         return 0;
     m_current = m_parent->child(s);
     return m_current;
 }
Ejemplo n.º 3
0
		static sync& current()
		{
			BOOST_ASSERT(current_impl());
			return *current_impl();
		}
Ejemplo n.º 4
0
		void resume()
		{
			std::lock_guard<std::mutex> lock(mutex_);
			current_impl() = this;
			context_ = std::get<0>(context_(this));
		}