mirror of
https://github.com/boostorg/context.git
synced 2026-01-30 19:52:17 +00:00
update examples
This commit is contained in:
55
example/execution_context/parameter.cpp
Normal file
55
example/execution_context/parameter.cpp
Normal file
@@ -0,0 +1,55 @@
|
||||
|
||||
// Copyright Oliver Kowalke 2014.
|
||||
// Distributed under the Boost Software License, Version 1.0.
|
||||
// (See accompanying file LICENSE_1_0.txt or copy at
|
||||
// http://www.boost.org/LICENSE_1_0.txt)
|
||||
|
||||
#include <cstdlib>
|
||||
#include <exception>
|
||||
#include <iostream>
|
||||
#include <string>
|
||||
|
||||
#include <boost/context/all.hpp>
|
||||
#include <boost/lexical_cast.hpp>
|
||||
|
||||
class X{
|
||||
private:
|
||||
int * inp_;
|
||||
std::string outp_;
|
||||
std::exception_ptr excptr_;
|
||||
boost::context::execution_context caller_;
|
||||
boost::context::execution_context callee_;
|
||||
|
||||
public:
|
||||
X():
|
||||
inp_( nullptr),
|
||||
outp_(),
|
||||
excptr_(),
|
||||
caller_(boost::context::execution_context::current()),
|
||||
callee_(boost::context::fixedsize_stack(),
|
||||
[=](){
|
||||
try {
|
||||
int i = * inp_;
|
||||
outp_ = boost::lexical_cast<std::string>(i);
|
||||
caller_.resume();
|
||||
} catch (...) {
|
||||
excptr_=std::current_exception();
|
||||
}
|
||||
})
|
||||
{}
|
||||
|
||||
std::string operator()(int i){
|
||||
inp_ = & i;
|
||||
callee_.resume();
|
||||
if(excptr_){
|
||||
std::rethrow_exception(excptr_);
|
||||
}
|
||||
return outp_;
|
||||
}
|
||||
};
|
||||
|
||||
int main() {
|
||||
X x;
|
||||
std::cout<<x(7)<<std::endl;
|
||||
std::cout << "done" << std::endl;
|
||||
}
|
||||
Reference in New Issue
Block a user