From dc2493e7525bb7633f697ef10f72b72b46222249 Mon Sep 17 00:00:00 2001 From: Andy Belle-Isle Date: Fri, 30 Aug 2019 00:45:36 -0400 Subject: Forget what I said, I just need to change git attributes to mark for vendor --- lib/sol2/examples/source/variadic_args_storage.cpp | 43 ++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 lib/sol2/examples/source/variadic_args_storage.cpp (limited to 'lib/sol2/examples/source/variadic_args_storage.cpp') diff --git a/lib/sol2/examples/source/variadic_args_storage.cpp b/lib/sol2/examples/source/variadic_args_storage.cpp new file mode 100644 index 0000000..fb1a94b --- /dev/null +++ b/lib/sol2/examples/source/variadic_args_storage.cpp @@ -0,0 +1,43 @@ +#define SOL_ALL_SAFETIES_ON 1 +#include + +#include +#include + +int main() { + + std::cout << "=== variadic_args serialization/storage ===" << std::endl; + + sol::state lua; + lua.open_libraries(sol::lib::base); + + std::function function_storage; + + auto store_routine = [&function_storage] (sol::function f, sol::variadic_args va) { + function_storage = [f, args = std::vector(va.begin(), va.end())]() { + f(sol::as_args(args)); + }; + }; + + lua.set_function("store_routine", store_routine); + + lua.script(R"( +function a(name) + print(name) +end +store_routine(a, "some name") +)"); + function_storage(); + + lua.script(R"( +function b(number, text) + print(number, "of", text) +end +store_routine(b, 20, "these apples") +)"); + function_storage(); + + std::cout << std::endl; + + return 0; +} -- cgit v1.2.3