diff options
Diffstat (limited to 'deps/sol2/examples/source/coroutine_state.cpp')
-rw-r--r-- | deps/sol2/examples/source/coroutine_state.cpp | 50 |
1 files changed, 0 insertions, 50 deletions
diff --git a/deps/sol2/examples/source/coroutine_state.cpp b/deps/sol2/examples/source/coroutine_state.cpp deleted file mode 100644 index bcece88..0000000 --- a/deps/sol2/examples/source/coroutine_state.cpp +++ /dev/null @@ -1,50 +0,0 @@ -#define SOL_ALL_SAFETIES_ON 1 -#include <sol/sol.hpp> - -#include "assert.hpp" -#include <iostream> - -int main(int, char*[]) { - std::cout << "=== coroutine state transfer ===" << std::endl; - - sol::state lua; - lua.open_libraries(); - sol::function transferred_into; - lua["f"] = [&lua, &transferred_into](sol::object t, sol::this_state this_L) { - std::cout << "state of main : " << (void*)lua.lua_state() << std::endl; - std::cout << "state of function : " << (void*)this_L.lua_state() << std::endl; - // pass original lua_State* (or sol::state/sol::state_view) - // transfers ownership from the state of "t", - // to the "lua" sol::state - transferred_into = sol::function(lua, t); - }; - - lua.script(R"( - i = 0 - function test() - co = coroutine.create( - function() - local g = function() i = i + 1 end - f(g) - g = nil - collectgarbage() - end - ) - coroutine.resume(co) - co = nil - collectgarbage() - end - )"); - - // give it a try - lua.safe_script("test()"); - // should call 'g' from main thread, increment i by 1 - transferred_into(); - // check - int i = lua["i"]; - c_assert(i == 1); - - std::cout << std::endl; - - return 0; -} |