diff options
Diffstat (limited to '3rdparty/sol2/examples/any_return.cpp')
-rw-r--r-- | 3rdparty/sol2/examples/any_return.cpp | 46 |
1 files changed, 0 insertions, 46 deletions
diff --git a/3rdparty/sol2/examples/any_return.cpp b/3rdparty/sol2/examples/any_return.cpp deleted file mode 100644 index f286071b8d8..00000000000 --- a/3rdparty/sol2/examples/any_return.cpp +++ /dev/null @@ -1,46 +0,0 @@ -#include <sol.hpp> - -#include <iostream> -#include <cassert> - -// Uses some of the fancier bits of sol2, including the "transparent argument", -// sol::this_state, which gets the current state and does not increment -// function arguments -sol::object fancy_func(sol::object a, sol::object b, sol::this_state s) { - sol::state_view lua(s); - if (a.is<int>() && b.is<int>()) { - return sol::object(lua, sol::in_place, a.as<int>() + b.as<int>()); - } - else if (a.is<bool>()) { - bool do_triple = a.as<bool>(); - return sol::object(lua, sol::in_place<double>, b.as<double>() * (do_triple ? 3 : 1)); - } - // Can also use make_object - return sol::make_object(lua, sol::nil); -} - -int main() { - sol::state lua; - - lua["f"] = fancy_func; - - int result = lua["f"](1, 2); - // result == 3 - assert(result == 3); - double result2 = lua["f"](false, 2.5); - // result2 == 2.5 - assert(result2 == 2.5); - - // call in Lua, get result - // notice we only need 2 arguments here, not 3 (sol::this_state is transparent) - lua.script("result3 = f(true, 5.5)"); - double result3 = lua["result3"]; - // result3 == 16.5 - assert(result3 == 16.5); - - std::cout << "=== any_return example ===" << std::endl; - std::cout << "result : " << result << std::endl; - std::cout << "result2: " << result2 << std::endl; - std::cout << "result3: " << result3 << std::endl; - std::cout << std::endl; -}
\ No newline at end of file |