From bd3fe0cac583739bc0d7c4b5c8f301bb350abca0 Mon Sep 17 00:00:00 2001 From: Andy Belle-Isle Date: Fri, 30 Aug 2019 00:19:31 -0400 Subject: Renamed lib to deps so github will ignore it for language stats --- deps/sol2/examples/source/basic.cpp | 64 +++++++++++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 deps/sol2/examples/source/basic.cpp (limited to 'deps/sol2/examples/source/basic.cpp') diff --git a/deps/sol2/examples/source/basic.cpp b/deps/sol2/examples/source/basic.cpp new file mode 100644 index 0000000..aefb1e3 --- /dev/null +++ b/deps/sol2/examples/source/basic.cpp @@ -0,0 +1,64 @@ +#define SOL_ALL_SAFETIES_ON 1 +#include + +#include +#include "assert.hpp" + +int main() { + std::cout << "=== basic ===" << std::endl; + // create an empty lua state + sol::state lua; + + // by default, libraries are not opened + // you can open libraries by using open_libraries + // the libraries reside in the sol::lib enum class + lua.open_libraries(sol::lib::base); + // you can open all libraries by passing no arguments + //lua.open_libraries(); + + // call lua code directly + lua.script("print('hello world')"); + + // call lua code, and check to make sure it has loaded and run properly: + auto handler = &sol::script_default_on_error; + lua.script("print('hello again, world')", handler); + + // Use a custom error handler if you need it + // This gets called when the result is bad + auto simple_handler = [](lua_State*, sol::protected_function_result result) { + // You can just pass it through to let the call-site handle it + return result; + }; + // the above lambda is identical to sol::simple_on_error, but it's + // shown here to show you can write whatever you like + + // + { + auto result = lua.script("print('hello hello again, world') \n return 24", simple_handler); + if (result.valid()) { + std::cout << "the third script worked, and a double-hello statement should appear above this one!" << std::endl; + int value = result; + c_assert(value == 24); + } + else { + std::cout << "the third script failed, check the result type for more information!" << std::endl; + } + } + + { + auto result = lua.script("does.not.exist", simple_handler); + if (result.valid()) { + std::cout << "the fourth script worked, which it wasn't supposed to! Panic!" << std::endl; + int value = result; + c_assert(value == 24); + } + else { + sol::error err = result; + std::cout << "the fourth script failed, which was intentional!\t\nError: " << err.what() << std::endl; + } + } + + std::cout << std::endl; + + return 0; +} -- cgit v1.2.3