diff options
author | Andy <drumsetmonkey@gmail.com> | 2019-08-29 13:07:45 -0400 |
---|---|---|
committer | Andy <drumsetmonkey@gmail.com> | 2019-08-29 13:07:45 -0400 |
commit | 4ac4b280abf2ffa28caa5a532353115a3033444f (patch) | |
tree | 2a13d658bb454360b2faf401244bb0321d3460d4 /lib/sol2/examples/source/calling_lua_functions.cpp | |
parent | e9758416b18b27a65337c28d9641afc0ee89b34b (diff) | |
parent | 7a46fa2dd3dad3f038bf8e7339bc67abca428ae6 (diff) |
Started creating scripting library/namespace and added sol2 for interfacing
Diffstat (limited to 'lib/sol2/examples/source/calling_lua_functions.cpp')
-rw-r--r-- | lib/sol2/examples/source/calling_lua_functions.cpp | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/lib/sol2/examples/source/calling_lua_functions.cpp b/lib/sol2/examples/source/calling_lua_functions.cpp new file mode 100644 index 0000000..6668038 --- /dev/null +++ b/lib/sol2/examples/source/calling_lua_functions.cpp @@ -0,0 +1,49 @@ +#define SOL_ALL_SAFETIES_ON 1 +#include <sol/sol.hpp> + +#include <iostream> + +int func_1(int value) { + return 20 + value; +} + +std::string func_2(std::string text) { + return "received: " + text; +} + +sol::variadic_results fallback(sol::this_state ts, sol::variadic_args args) { + sol::variadic_results r; + if (args.size() == 2) { + r.push_back({ ts, sol::in_place, args.get<int>(0) + args.get<int>(1) }); + } + else { + r.push_back({ ts, sol::in_place, 52 }); + } + return r; +} + +int main(int, char*[]) { + std::cout << "=== calling lua functions ===" << std::endl; + + sol::state lua; + lua.open_libraries(); + + sol::table mLuaPackets = lua.create_named_table("mLuaPackets"); + mLuaPackets[1] = lua.create_table_with("timestamp", 0LL); + mLuaPackets[2] = lua.create_table_with("timestamp", 3LL); + mLuaPackets[3] = lua.create_table_with("timestamp", 1LL); + + lua.script("print('--- pre sort ---')"); + lua.script("for i=1,#mLuaPackets do print(i, mLuaPackets[i].timestamp) end"); + + lua["table"]["sort"](mLuaPackets, sol::as_function([](sol::table l, sol::table r) { + std::uint64_t tl = l["timestamp"]; + std::uint64_t tr = r["timestamp"]; + return tl < tr; + })); + + lua.script("print('--- post sort ---')"); + lua.script("for i=1,#mLuaPackets do print(i, mLuaPackets[i].timestamp) end"); + + return 0; +}
\ No newline at end of file |