aboutsummaryrefslogtreecommitdiffstats
path: root/deps/sol2/examples/interop/luwra
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/interop/luwra
parent9d2b31797d0cfd130802b69261df2cd402e39b49 (diff)
Forget what I said, I just need to change git attributes to mark for vendor
Diffstat (limited to 'deps/sol2/examples/interop/luwra')
-rw-r--r--deps/sol2/examples/interop/luwra/CMakeLists.txt68
-rw-r--r--deps/sol2/examples/interop/luwra/source/luwra.cpp110
2 files changed, 0 insertions, 178 deletions
diff --git a/deps/sol2/examples/interop/luwra/CMakeLists.txt b/deps/sol2/examples/interop/luwra/CMakeLists.txt
deleted file mode 100644
index 2753812..0000000
--- a/deps/sol2/examples/interop/luwra/CMakeLists.txt
+++ /dev/null
@@ -1,68 +0,0 @@
-# # # # sol3
-# The MIT License (MIT)
-#
-# Copyright (c) 2013-2019 Rapptz, ThePhD, and contributors
-#
-# Permission is hereby granted, free of charge, to any person obtaining a copy of
-# this software and associated documentation files (the "Software"), to deal in
-# the Software without restriction, including without limitation the rights to
-# use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
-# the Software, and to permit persons to whom the Software is furnished to do so,
-# subject to the following conditions:
-#
-# The above copyright notice and this permission notice shall be included in all
-# copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
-# FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
-# COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
-# IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-# CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-# # # sol3 interop Examples - luwra
-
-find_package(LuwraBuild)
-
-function (make_luwra_interop_example target_library example_suffix)
- set(example_name luwra_interop_example)
- set(example_name "${example_name}${example_suffix}")
-
- add_executable(${example_name} source/luwra.cpp)
- target_link_libraries(${example_name}
- PRIVATE ${LUA_LIBRARIES} ${LUWRA_LIBRARIES}
- ${target_library} sol2::assert)
-
- if (MSVC)
- target_compile_options(${example_name}
- PRIVATE /std:c++latest /EHsc "$<$<CONFIG:Debug>:/MDd>"
- "$<$<CONFIG:Release>:/MD>"
- "$<$<CONFIG:RelWithDebInfo>:/MD>"
- "$<$<CONFIG:MinSizeRel>:/MD>")
- target_compile_definitions(${example_name}
- PRIVATE /W1 UNICODE _UNICODE
- _CRT_SECURE_NO_WARNINGS _CRT_SECURE_NO_DEPRECATE)
- else()
- target_compile_options(${example_name}
- PRIVATE -std=c++1z -w
- -Wno-unknown-warning -Wno-unknown-warning-option)
- endif()
-
- if (CMAKE_DL_LIBS)
- target_link_libraries(${example_name} PRIVATE ${CMAKE_DL_LIBS})
- endif()
-
- if (SOL2_TESTS_INTEROP_EXAMPLES)
- add_test(NAME ${example_name} COMMAND ${example_name})
- endif()
-endfunction()
-
-if (SOL2_INTEROP_EXAMPLES)
- make_luwra_interop_example(sol2::sol2 "")
-endif()
-if (SOL2_INTEROP_EXAMPLES_SINGLE)
- make_luwra_interop_example(sol2::sol2_single ".single")
-endif()
-if (SOL2_INTEROP_EXAMPLES_SINGLE_GENERATED)
- make_luwra_interop_example(sol2::sol2_single_generated ".single.generated")
-endif() \ No newline at end of file
diff --git a/deps/sol2/examples/interop/luwra/source/luwra.cpp b/deps/sol2/examples/interop/luwra/source/luwra.cpp
deleted file mode 100644
index 2a12f6c..0000000
--- a/deps/sol2/examples/interop/luwra/source/luwra.cpp
+++ /dev/null
@@ -1,110 +0,0 @@
-#define SOL_ALL_SAFETIES_ON 1
-#define SOL_ENABLE_INTEROP 1 // MUST be defined to use interop features
-#include <sol/sol.hpp>
-
-#include <luwra.hpp>
-
-#include <iostream>
-#include <assert.hpp>
-
-// luwra,
-// another C++ wrapper library:
-// https://github.com/vapourismo/luwra
-
-struct ABC {
- ABC()
- : v_(0) {
- }
- ABC(int value)
- : v_(value) {
- }
- int value() const {
- return v_;
- }
- void setValue(int v) {
- v_ = v;
- }
- void overload1() {
- std::cout << "call overload1" << std::endl;
- }
- void overload2(int) {
- std::cout << "call overload2" << std::endl;
- }
-
-private:
- int v_;
-};
-
-template <typename T, typename Handler>
-inline bool sol_lua_interop_check(sol::types<T>, lua_State* L, int relindex, sol::type index_type, Handler&& handler, sol::stack::record& tracking) {
- // just marking unused parameters for no compiler warnings
- (void)index_type;
- (void)handler;
- // using 1 element
- tracking.use(1);
- int index = lua_absindex(L, relindex);
- if (lua_getmetatable(L, index) == 1) {
- luaL_getmetatable(L, luwra::internal::UserTypeReg<T>::name.c_str());
- bool is_correct_type = lua_rawequal(L, -2, -1) == 1;
- lua_pop(L, 2);
- return is_correct_type;
- }
- return false;
-}
-
-template <typename T>
-inline std::pair<bool, T*> sol_lua_interop_get(sol::types<T> t, lua_State* L, int relindex, void* unadjusted_pointer, sol::stack::record& tracking) {
- // you may not need to specialize this method every time:
- // some libraries are compatible with sol3's layout
- int index = lua_absindex(L, relindex);
- if (!sol_lua_interop_check(t, L, index, sol::type::userdata, sol::no_panic, tracking)) {
- return { false, nullptr };
- }
- return { true, static_cast<T*>(unadjusted_pointer) };
-}
-
-void register_sol_stuff(lua_State* L) {
- // grab raw state and put into state_view
- // state_view is cheap to construct
- sol::state_view lua(L);
- // bind and set up your things: everything is entirely self-contained
- lua["f"] = sol::overload(
- [](ABC& from_luwra) {
- std::cout << "calling 1-argument version with luwra-created ABC { " << from_luwra.value() << " }" << std::endl;
- c_assert(from_luwra.value() == 24);
- },
- [](ABC& from_luwra, int second_arg) {
- std::cout << "calling 2-argument version with luwra-created ABC { " << from_luwra.value() << " } and integer argument of " << second_arg << std::endl;
- c_assert(from_luwra.value() == 24);
- c_assert(second_arg == 5);
- });
-}
-
-void check_with_sol(lua_State* L) {
- sol::state_view lua(L);
- ABC& obj = lua["obj"];
- (void)obj;
- c_assert(obj.value() == 24);
-}
-
-int main(int, char* []) {
-
- std::cout << "=== interop example (luwra) ===" << std::endl;
- std::cout << "code modified from luwra's documentation examples: https://github.com/vapourismo/luwra" << std::endl;
-
- luwra::StateWrapper state;
-
- state.registerUserType<ABC(int)>("ABC", { LUWRA_MEMBER(ABC, value), LUWRA_MEMBER(ABC, setValue) }, {});
-
- register_sol_stuff(state);
-
- state.runString(R"(
-obj = ABC(24)
-f(obj) -- call 1 argument version
-f(obj, 5) -- call 2 argument version
-)");
-
- check_with_sol(state);
-
- return 0;
-} \ No newline at end of file