aboutsummaryrefslogtreecommitdiffstats
path: root/deps/sol2/examples/source/multi_results.cpp
diff options
context:
space:
mode:
authorAndy Belle-Isle <drumsetmonkey@gmail.com>2019-08-30 00:45:36 -0400
committerAndy Belle-Isle <drumsetmonkey@gmail.com>2019-08-30 00:45:36 -0400
commitdc2493e7525bb7633f697ef10f72b72b46222249 (patch)
tree9816755219e65d3f47fdce81c78f3736a7ddb8ab /deps/sol2/examples/source/multi_results.cpp
parent9d2b31797d0cfd130802b69261df2cd402e39b49 (diff)
Forget what I said, I just need to change git attributes to mark for vendor
Diffstat (limited to 'deps/sol2/examples/source/multi_results.cpp')
-rw-r--r--deps/sol2/examples/source/multi_results.cpp81
1 files changed, 0 insertions, 81 deletions
diff --git a/deps/sol2/examples/source/multi_results.cpp b/deps/sol2/examples/source/multi_results.cpp
deleted file mode 100644
index 6487f72..0000000
--- a/deps/sol2/examples/source/multi_results.cpp
+++ /dev/null
@@ -1,81 +0,0 @@
-#define SOL_ALL_SAFETIES_ON 1
-#include <sol/sol.hpp>
-
-#include <tuple>
-#include "assert.hpp"
-#include <iostream>
-
-int main() {
- std::cout << "=== multi results ===" << std::endl;
-
- sol::state lua;
- lua.open_libraries(sol::lib::base);
-
- // multi-return functions are supported using
- // std::tuple as the transfer type,
- // sol::as_returns for containers,
- // and sol::variadic_results for more special things
- lua.set_function("multi_tuple", [] {
- return std::make_tuple(10, "goodbye");
- });
- lua.script("print('calling multi_tuple')");
- lua.script("print(multi_tuple())");
- lua.script("x, y = multi_tuple()");
- lua.script("assert(x == 10 and y == 'goodbye')");
-
- auto multi = lua.get<sol::function>("multi_tuple");
- int first;
- std::string second;
- // tie the values
- sol::tie(first, second) = multi();
-
- // use the values
- c_assert(first == 10);
- c_assert(second == "goodbye");
-
- // sol::as_returns
- // works with any iterable,
- // but we show off std::vector here
- lua.set_function("multi_containers", [] (bool add_extra) {
- std::vector<int> values{55, 66};
- if (add_extra) {
- values.push_back(77);
- }
- return sol::as_returns(std::move(values));
- });
- lua.script("print('calling multi_containers')");
- lua.script("print(multi_containers(false))");
- lua.script("a, b, c = multi_containers(true)");
- int a = lua["a"];
- int b = lua["b"];
- int c = lua["c"];
-
- c_assert(a == 55);
- c_assert(b == 66);
- c_assert(c == 77);
-
- // sol::variadic_results
- // you can push objects of different types
- // note that sol::this_state is a transparent
- // argument: you don't need to pass
- // that state through Lua
- lua.set_function("multi_vars", [](int a, bool b, sol::this_state L) {
- sol::variadic_results values;
- values.push_back({ L, sol::in_place_type<int>, a });
- values.push_back({ L, sol::in_place_type<bool>, b });
- values.push_back({ L, sol::in_place, "awoo" });
- return values;
- });
- lua.script("print('calling multi_vars')");
- lua.script("print(multi_vars(2, false))");
- lua.script("t, u, v = multi_vars(42, true)");
- int t = lua["t"];
- bool u = lua["u"];
- std::string v = lua["v"];
-
- c_assert(t == 42);
- c_assert(u);
- c_assert(v == "awoo");
-
- return 0;
-} \ No newline at end of file