mirror of
https://github.com/ThePhD/sol2.git
synced 2024-03-22 13:10:44 +08:00
mmm double trampolining is not good
add new ways to shoot myself in the foot with CMake
This commit is contained in:
parent
1f27149239
commit
36972a994b
|
@ -144,9 +144,17 @@ else()
|
||||||
message(FATAL_ERROR "Cannot deduce the proper Lua version from ${LUA_VERSION}")
|
message(FATAL_ERROR "Cannot deduce the proper Lua version from ${LUA_VERSION}")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
if (BUILD_LUA_AS_CXX)
|
||||||
|
set(LUA_VANILLA_LANGUAGE CXX)
|
||||||
|
set(LUA_VANILLA_LANGUAGE_STANDARD 98)
|
||||||
|
else()
|
||||||
|
set(LUA_VANILLA_LANGUAGE C)
|
||||||
|
set(LUA_VANILLA_LANGUAGE_STANDARD 99)
|
||||||
|
endif()
|
||||||
|
|
||||||
FIND_PACKAGE_MESSAGE(LUABUILD
|
FIND_PACKAGE_MESSAGE(LUABUILD
|
||||||
"Selecting PUC-RIO Lua ${LUA_VANILLA_VERSION} from '${LUA_VERSION}' and building a ${LUA_BUILD_LIBRARY_TYPE} library..."
|
"Selecting PUC-RIO Lua ${LUA_VANILLA_VERSION} from '${LUA_VERSION}' and building a ${LUA_BUILD_LIBRARY_TYPE} library with ${LUA_VANILLA_LANGUAGE} linkage..."
|
||||||
"[${LUA_VANILLA_VERSION}][${LUA_VERSION}][${LUA_BUILD_LIBRARY_TYPE}]")
|
"[${LUA_VANILLA_VERSION}][${LUA_VERSION}][${LUA_BUILD_LIBRARY_TYPE}][${LUA_VANILLA_LANGUAGE}]")
|
||||||
|
|
||||||
# Get Hashes to use for download
|
# Get Hashes to use for download
|
||||||
set(LUA_VANILLA_SHA1 ${LUA_VANILLA_SHA1_${LUA_VANILLA_VERSION}})
|
set(LUA_VANILLA_SHA1 ${LUA_VANILLA_SHA1_${LUA_VANILLA_VERSION}})
|
||||||
|
@ -322,15 +330,17 @@ set(luacompiler "luac-${LUA_VANILLA_VERSION}")
|
||||||
add_library(${liblua} ${LUA_BUILD_LIBRARY_TYPE} "${LUA_VANILLA_LIB_SOURCES}")
|
add_library(${liblua} ${LUA_BUILD_LIBRARY_TYPE} "${LUA_VANILLA_LIB_SOURCES}")
|
||||||
set_target_properties(${liblua}
|
set_target_properties(${liblua}
|
||||||
PROPERTIES
|
PROPERTIES
|
||||||
LANGUAGE C
|
LANGUAGE ${LUA_VANILLA_LANGUAGE}
|
||||||
LINKER_LANGUAGE C
|
LINKER_LANGUAGE ${LUA_VANILLA_LANGUAGE}
|
||||||
C_STANDARD 99
|
${LUA_VANILLA_LANGUAGE}_STANDARD ${LUA_VANILLA_LANGUAGE_STANDARD}
|
||||||
C_EXTENSIONS TRUE
|
${LUA_VANILLA_LANGUAGE}_EXTENSIONS TRUE
|
||||||
POSITION_INDEPENDENT_CODE TRUE
|
POSITION_INDEPENDENT_CODE TRUE
|
||||||
OUTPUT_NAME ${LUA_BUILD_LIBNAME}
|
OUTPUT_NAME ${LUA_BUILD_LIBNAME}
|
||||||
RUNTIME_OUTPUT_NAME ${LUA_BUILD_LIBNAME}
|
RUNTIME_OUTPUT_NAME ${LUA_BUILD_LIBNAME}
|
||||||
LIBRARY_OUTPUT_NAME ${LUA_BUILD_LIBNAME}
|
LIBRARY_OUTPUT_NAME ${LUA_BUILD_LIBNAME}
|
||||||
ARCHIVE_OUTPUT_NAME ${LUA_BUILD_LIBNAME})
|
ARCHIVE_OUTPUT_NAME ${LUA_BUILD_LIBNAME})
|
||||||
|
set_source_files_properties(${LUA_VANILLA_LIB_SOURCES}
|
||||||
|
PROPERTIES LANGUAGE ${LUA_VANILLA_LANGUAGE})
|
||||||
target_include_directories(${liblua}
|
target_include_directories(${liblua}
|
||||||
PUBLIC "${LUA_VANILLA_INCLUDE_DIRS}")
|
PUBLIC "${LUA_VANILLA_INCLUDE_DIRS}")
|
||||||
target_compile_definitions(${liblua}
|
target_compile_definitions(${liblua}
|
||||||
|
@ -361,50 +371,55 @@ endif()
|
||||||
|
|
||||||
# we don't really need this section...
|
# we don't really need this section...
|
||||||
# Lua Interpreter
|
# Lua Interpreter
|
||||||
add_executable(${luainterpreter} ${LUA_VANILLA_LUA_SOURCES})
|
if (LUA_BUILD_LUA_INTERPRETER)
|
||||||
set_target_properties(${luainterpreter}
|
add_executable(${luainterpreter} ${LUA_VANILLA_LUA_SOURCES})
|
||||||
PROPERTIES
|
set_target_properties(${luainterpreter}
|
||||||
LANGUAGE C
|
PROPERTIES
|
||||||
LINKER_LANGUAGE C
|
LANGUAGE ${LUA_VANILLA_LANGUAGE}
|
||||||
C_STANDARD 99
|
LINKER_LANGUAGE ${LUA_VANILLA_LANGUAGE}
|
||||||
C_EXTENSIONS TRUE
|
${LUA_VANILLA_LANGUAGE}_STANDARD ${LUA_VANILLA_LANGUAGE_STANDARD}
|
||||||
OUTPUT_NAME lua-${LUA_VANILLA_VERSION})
|
${LUA_VANILLA_LANGUAGE}_EXTENSIONS TRUE
|
||||||
target_include_directories(${luainterpreter}
|
OUTPUT_NAME lua-${LUA_VANILLA_VERSION})
|
||||||
PRIVATE "${LUA_VANILLA_INCLUDE_DIRS}")
|
set_source_files_properties(${LUA_VANILLA_LUA_SOURCES}
|
||||||
target_compile_definitions(${luainterpreter}
|
PROPERTIES LANGUAGE ${LUA_VANILLA_LANGUAGE})
|
||||||
PUBLIC LUA_COMPAT_ALL ${LUA_VANILLA_DLL_DEFINE}
|
target_include_directories(${luainterpreter}
|
||||||
PRIVATE LUA_COMPAT_ALL ${LUA_VANILLA_DLL_DEFINE})
|
PRIVATE "${LUA_VANILLA_INCLUDE_DIRS}")
|
||||||
if (MSVC)
|
|
||||||
target_compile_options(${luainterpreter}
|
|
||||||
PRIVATE /W1)
|
|
||||||
else()
|
|
||||||
target_compile_options(${luainterpreter}
|
|
||||||
PRIVATE -w)
|
|
||||||
endif()
|
|
||||||
if (WIN32)
|
|
||||||
#target_compile_definitions(${luainterpreter}
|
|
||||||
# PRIVATE LUA_USE_WINDOWS)
|
|
||||||
else()
|
|
||||||
target_compile_definitions(${luainterpreter}
|
target_compile_definitions(${luainterpreter}
|
||||||
PRIVATE LUA_USE_LINUX)
|
PUBLIC LUA_COMPAT_ALL ${LUA_VANILLA_DLL_DEFINE}
|
||||||
endif()
|
PRIVATE LUA_COMPAT_ALL ${LUA_VANILLA_DLL_DEFINE})
|
||||||
target_link_libraries(${luainterpreter} PRIVATE ${liblua})
|
if (MSVC)
|
||||||
if (CMAKE_DL_LIBS)
|
target_compile_options(${luainterpreter}
|
||||||
target_link_libraries(${luainterpreter} PRIVATE ${CMAKE_DL_LIBS})
|
PRIVATE /W1)
|
||||||
endif()
|
else()
|
||||||
if (UNIX)
|
target_compile_options(${luainterpreter}
|
||||||
target_link_libraries(${luainterpreter} PRIVATE m readline)
|
PRIVATE -w)
|
||||||
|
endif()
|
||||||
|
if (WIN32)
|
||||||
|
#target_compile_definitions(${luainterpreter}
|
||||||
|
# PRIVATE LUA_USE_WINDOWS)
|
||||||
|
else()
|
||||||
|
target_compile_definitions(${luainterpreter}
|
||||||
|
PRIVATE LUA_USE_LINUX)
|
||||||
|
endif()
|
||||||
|
target_link_libraries(${luainterpreter} PRIVATE ${liblua})
|
||||||
|
if (CMAKE_DL_LIBS)
|
||||||
|
target_link_libraries(${luainterpreter} PRIVATE ${CMAKE_DL_LIBS})
|
||||||
|
endif()
|
||||||
|
if (UNIX)
|
||||||
|
target_link_libraries(${luainterpreter} PRIVATE m readline)
|
||||||
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# LuaC Compiler
|
# LuaC Compiler
|
||||||
if (LUA_BUILD_LUA_COMPILER)
|
if (LUA_BUILD_LUA_COMPILER)
|
||||||
|
add_executable(${luainterpreter} ${LUA_VANILLA_LUA_SOURCES})
|
||||||
set_target_properties(${luacompiler}
|
set_target_properties(${luacompiler}
|
||||||
PROPERTIES
|
PROPERTIES
|
||||||
LANGUAGE C
|
LANGUAGE ${LUA_VANILLA_LANGUAGE}
|
||||||
LINKER_LANGUAGE C
|
LINKER_LANGUAGE ${LUA_VANILLA_LANGUAGE}
|
||||||
C_STANDARD 99
|
|
||||||
C_EXTENSIONS TRUE
|
|
||||||
OUTPUT_NAME luac-${LUA_VANILLA_VERSION})
|
OUTPUT_NAME luac-${LUA_VANILLA_VERSION})
|
||||||
|
set_source_files_properties(${LUA_VANILLA_LIB_SOURCES}
|
||||||
|
PROPERTIES LANGUAGE ${LUA_VANILLA_LANGUAGE})
|
||||||
target_include_directories(${luacompiler}
|
target_include_directories(${luacompiler}
|
||||||
PRIVATE "${LUA_VANILLA_INCLUDE_DIRS}")
|
PRIVATE "${LUA_VANILLA_INCLUDE_DIRS}")
|
||||||
target_compile_definitions(${luacompiler}
|
target_compile_definitions(${luacompiler}
|
||||||
|
|
|
@ -30,7 +30,7 @@
|
||||||
#include <lua.h>
|
#include <lua.h>
|
||||||
#include <lualib.h>
|
#include <lualib.h>
|
||||||
#include <lauxlib.h>
|
#include <lauxlib.h>
|
||||||
#if defined(SOL_USING_CXX_LUAJIT) && SOL_USING_CXX_LUAJIT
|
#if (defined(SOL_USING_CXX_LUAJIT) && SOL_USING_CXX_LUAJIT) || (defined(LUAJIT_VERSION) && LUAJIT_VERSION)
|
||||||
#include <luajit.h>
|
#include <luajit.h>
|
||||||
#endif // C++ LuaJIT ... whatever that means
|
#endif // C++ LuaJIT ... whatever that means
|
||||||
#if (!defined(SOL_EXCEPTIONS_SAFE_PROPAGATION) || !(SOL_EXCEPTIONS_SAFE_PROPAGATION)) && (!defined(SOL_EXCEPTIONS_ALWAYS_UNSAFE) || !(SOL_EXCEPTIONS_ALWAYS_UNSAFE))
|
#if (!defined(SOL_EXCEPTIONS_SAFE_PROPAGATION) || !(SOL_EXCEPTIONS_SAFE_PROPAGATION)) && (!defined(SOL_EXCEPTIONS_ALWAYS_UNSAFE) || !(SOL_EXCEPTIONS_ALWAYS_UNSAFE))
|
||||||
|
|
|
@ -70,9 +70,11 @@ namespace sol {
|
||||||
template <bool is_yielding, typename Fx, typename... Args>
|
template <bool is_yielding, typename Fx, typename... Args>
|
||||||
void select(lua_State* L, Fx&& fx, Args&&... args);
|
void select(lua_State* L, Fx&& fx, Args&&... args);
|
||||||
|
|
||||||
template <bool is_yielding, typename Fx, typename... Args>
|
template <bool is_yielding, bool no_trampoline, typename Fx, typename... Args>
|
||||||
void select_set_fx(lua_State* L, Args&&... args) {
|
void select_set_fx(lua_State* L, Args&&... args) {
|
||||||
lua_CFunction freefunc = detail::static_trampoline<function_detail::call<meta::unqualified_t<Fx>, 2, is_yielding>>;
|
lua_CFunction freefunc = no_trampoline ?
|
||||||
|
detail::static_trampoline<function_detail::call<meta::unqualified_t<Fx>, 2, is_yielding>>
|
||||||
|
: function_detail::call<meta::unqualified_t<Fx>, 2, is_yielding>;
|
||||||
|
|
||||||
int upvalues = 0;
|
int upvalues = 0;
|
||||||
upvalues += stack::push(L, nullptr);
|
upvalues += stack::push(L, nullptr);
|
||||||
|
@ -90,8 +92,8 @@ namespace sol {
|
||||||
select<is_yielding>(L, std::move(fxptr), std::forward<Args>(args)...);
|
select<is_yielding>(L, std::move(fxptr), std::forward<Args>(args)...);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
using F = function_detail::functor_function<dFx, is_yielding, true>;
|
using F = function_detail::functor_function<dFx, false, true>;
|
||||||
select_set_fx<false, F>(L, std::forward<Fx>(fx), std::forward<Args>(args)...);
|
select_set_fx<is_yielding, false, F>(L, std::forward<Fx>(fx), std::forward<Args>(args)...);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -140,14 +142,14 @@ namespace sol {
|
||||||
else {
|
else {
|
||||||
using clean_fx = std::remove_pointer_t<std::decay_t<Fx>>;
|
using clean_fx = std::remove_pointer_t<std::decay_t<Fx>>;
|
||||||
using F = function_detail::member_variable<Tu, clean_fx, is_yielding>;
|
using F = function_detail::member_variable<Tu, clean_fx, is_yielding>;
|
||||||
select_set_fx<false, F>(L, std::forward<Fx>(fx), std::forward<Args>(args)...);
|
select_set_fx<false, false, F>(L, std::forward<Fx>(fx), std::forward<Args>(args)...);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
using C = typename meta::bind_traits<uFx>::object_type;
|
using C = typename meta::bind_traits<uFx>::object_type;
|
||||||
using clean_fx = std::remove_pointer_t<std::decay_t<Fx>>;
|
using clean_fx = std::remove_pointer_t<std::decay_t<Fx>>;
|
||||||
using F = function_detail::member_variable<C, clean_fx, is_yielding>;
|
using F = function_detail::member_variable<C, clean_fx, is_yielding>;
|
||||||
select_set_fx<false, F>(L, std::forward<Fx>(fx), std::forward<Args>(args)...);
|
select_set_fx<false, false, F>(L, std::forward<Fx>(fx), std::forward<Args>(args)...);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -179,7 +181,7 @@ namespace sol {
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
using F = function_detail::member_function<Tu, dFx, is_yielding>;
|
using F = function_detail::member_function<Tu, dFx, is_yielding>;
|
||||||
select_set_fx<false, F>(L, std::forward<Fx>(fx), std::forward<T>(obj), std::forward<Args>(args)...);
|
select_set_fx<false, false, F>(L, std::forward<Fx>(fx), std::forward<T>(obj), std::forward<Args>(args)...);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -384,13 +386,13 @@ namespace sol {
|
||||||
struct unqualified_pusher<overload_set<Functions...>> {
|
struct unqualified_pusher<overload_set<Functions...>> {
|
||||||
static int push(lua_State* L, overload_set<Functions...>&& set) {
|
static int push(lua_State* L, overload_set<Functions...>&& set) {
|
||||||
using F = function_detail::overloaded_function<0, Functions...>;
|
using F = function_detail::overloaded_function<0, Functions...>;
|
||||||
function_detail::select_set_fx<false, F>(L, std::move(set.functions));
|
function_detail::select_set_fx<false, false, F>(L, std::move(set.functions));
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int push(lua_State* L, const overload_set<Functions...>& set) {
|
static int push(lua_State* L, const overload_set<Functions...>& set) {
|
||||||
using F = function_detail::overloaded_function<0, Functions...>;
|
using F = function_detail::overloaded_function<0, Functions...>;
|
||||||
function_detail::select_set_fx<false, F>(L, set.functions);
|
function_detail::select_set_fx<false, false, F>(L, set.functions);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
@ -455,25 +457,25 @@ namespace sol {
|
||||||
struct unqualified_pusher<factory_wrapper<Functions...>> {
|
struct unqualified_pusher<factory_wrapper<Functions...>> {
|
||||||
static int push(lua_State* L, const factory_wrapper<Functions...>& fw) {
|
static int push(lua_State* L, const factory_wrapper<Functions...>& fw) {
|
||||||
using F = function_detail::overloaded_function<0, Functions...>;
|
using F = function_detail::overloaded_function<0, Functions...>;
|
||||||
function_detail::select_set_fx<false, F>(L, fw.functions);
|
function_detail::select_set_fx<false, false, F>(L, fw.functions);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int push(lua_State* L, factory_wrapper<Functions...>&& fw) {
|
static int push(lua_State* L, factory_wrapper<Functions...>&& fw) {
|
||||||
using F = function_detail::overloaded_function<0, Functions...>;
|
using F = function_detail::overloaded_function<0, Functions...>;
|
||||||
function_detail::select_set_fx<false, F>(L, std::move(fw.functions));
|
function_detail::select_set_fx<false, false, F>(L, std::move(fw.functions));
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int push(lua_State* L, const factory_wrapper<Functions...>& fw, function_detail::call_indicator) {
|
static int push(lua_State* L, const factory_wrapper<Functions...>& fw, function_detail::call_indicator) {
|
||||||
using F = function_detail::overloaded_function<1, Functions...>;
|
using F = function_detail::overloaded_function<1, Functions...>;
|
||||||
function_detail::select_set_fx<false, F>(L, fw.functions);
|
function_detail::select_set_fx<false, false, F>(L, fw.functions);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int push(lua_State* L, factory_wrapper<Functions...>&& fw, function_detail::call_indicator) {
|
static int push(lua_State* L, factory_wrapper<Functions...>&& fw, function_detail::call_indicator) {
|
||||||
using F = function_detail::overloaded_function<1, Functions...>;
|
using F = function_detail::overloaded_function<1, Functions...>;
|
||||||
function_detail::select_set_fx<false, F>(L, std::move(fw.functions));
|
function_detail::select_set_fx<false, false, F>(L, std::move(fw.functions));
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
|
@ -20,8 +20,8 @@
|
||||||
// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||||
|
|
||||||
// This file was generated with a script.
|
// This file was generated with a script.
|
||||||
// Generated 2019-12-02 20:54:28.461558 UTC
|
// Generated 2019-12-23 14:09:10.625316 UTC
|
||||||
// This header was generated with sol v3.2.0 (revision 38d9792)
|
// This header was generated with sol v3.2.0 (revision 1f27149)
|
||||||
// https://github.com/ThePhD/sol2
|
// https://github.com/ThePhD/sol2
|
||||||
|
|
||||||
#ifndef SOL_SINGLE_INCLUDE_FORWARD_HPP
|
#ifndef SOL_SINGLE_INCLUDE_FORWARD_HPP
|
||||||
|
|
|
@ -20,8 +20,8 @@
|
||||||
// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||||
|
|
||||||
// This file was generated with a script.
|
// This file was generated with a script.
|
||||||
// Generated 2019-12-02 20:54:28.195238 UTC
|
// Generated 2019-12-23 14:09:10.057090 UTC
|
||||||
// This header was generated with sol v3.2.0 (revision 38d9792)
|
// This header was generated with sol v3.2.0 (revision 1f27149)
|
||||||
// https://github.com/ThePhD/sol2
|
// https://github.com/ThePhD/sol2
|
||||||
|
|
||||||
#ifndef SOL_SINGLE_INCLUDE_HPP
|
#ifndef SOL_SINGLE_INCLUDE_HPP
|
||||||
|
@ -2118,7 +2118,7 @@ namespace sol {
|
||||||
#include <lua.h>
|
#include <lua.h>
|
||||||
#include <lualib.h>
|
#include <lualib.h>
|
||||||
#include <lauxlib.h>
|
#include <lauxlib.h>
|
||||||
#if defined(SOL_USING_CXX_LUAJIT) && SOL_USING_CXX_LUAJIT
|
#if (defined(SOL_USING_CXX_LUAJIT) && SOL_USING_CXX_LUAJIT) || (defined(LUAJIT_VERSION) && LUAJIT_VERSION)
|
||||||
#include <luajit.h>
|
#include <luajit.h>
|
||||||
#endif // C++ LuaJIT ... whatever that means
|
#endif // C++ LuaJIT ... whatever that means
|
||||||
#if (!defined(SOL_EXCEPTIONS_SAFE_PROPAGATION) || !(SOL_EXCEPTIONS_SAFE_PROPAGATION)) && (!defined(SOL_EXCEPTIONS_ALWAYS_UNSAFE) || !(SOL_EXCEPTIONS_ALWAYS_UNSAFE))
|
#if (!defined(SOL_EXCEPTIONS_SAFE_PROPAGATION) || !(SOL_EXCEPTIONS_SAFE_PROPAGATION)) && (!defined(SOL_EXCEPTIONS_ALWAYS_UNSAFE) || !(SOL_EXCEPTIONS_ALWAYS_UNSAFE))
|
||||||
|
@ -17743,9 +17743,11 @@ namespace sol {
|
||||||
template <bool is_yielding, typename Fx, typename... Args>
|
template <bool is_yielding, typename Fx, typename... Args>
|
||||||
void select(lua_State* L, Fx&& fx, Args&&... args);
|
void select(lua_State* L, Fx&& fx, Args&&... args);
|
||||||
|
|
||||||
template <bool is_yielding, typename Fx, typename... Args>
|
template <bool is_yielding, bool no_trampoline, typename Fx, typename... Args>
|
||||||
void select_set_fx(lua_State* L, Args&&... args) {
|
void select_set_fx(lua_State* L, Args&&... args) {
|
||||||
lua_CFunction freefunc = detail::static_trampoline<function_detail::call<meta::unqualified_t<Fx>, 2, is_yielding>>;
|
lua_CFunction freefunc = no_trampoline ?
|
||||||
|
detail::static_trampoline<function_detail::call<meta::unqualified_t<Fx>, 2, is_yielding>>
|
||||||
|
: function_detail::call<meta::unqualified_t<Fx>, 2, is_yielding>;
|
||||||
|
|
||||||
int upvalues = 0;
|
int upvalues = 0;
|
||||||
upvalues += stack::push(L, nullptr);
|
upvalues += stack::push(L, nullptr);
|
||||||
|
@ -17763,8 +17765,8 @@ namespace sol {
|
||||||
select<is_yielding>(L, std::move(fxptr), std::forward<Args>(args)...);
|
select<is_yielding>(L, std::move(fxptr), std::forward<Args>(args)...);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
using F = function_detail::functor_function<dFx, is_yielding, true>;
|
using F = function_detail::functor_function<dFx, false, true>;
|
||||||
select_set_fx<false, F>(L, std::forward<Fx>(fx), std::forward<Args>(args)...);
|
select_set_fx<is_yielding, false, F>(L, std::forward<Fx>(fx), std::forward<Args>(args)...);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -17813,14 +17815,14 @@ namespace sol {
|
||||||
else {
|
else {
|
||||||
using clean_fx = std::remove_pointer_t<std::decay_t<Fx>>;
|
using clean_fx = std::remove_pointer_t<std::decay_t<Fx>>;
|
||||||
using F = function_detail::member_variable<Tu, clean_fx, is_yielding>;
|
using F = function_detail::member_variable<Tu, clean_fx, is_yielding>;
|
||||||
select_set_fx<false, F>(L, std::forward<Fx>(fx), std::forward<Args>(args)...);
|
select_set_fx<false, false, F>(L, std::forward<Fx>(fx), std::forward<Args>(args)...);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
using C = typename meta::bind_traits<uFx>::object_type;
|
using C = typename meta::bind_traits<uFx>::object_type;
|
||||||
using clean_fx = std::remove_pointer_t<std::decay_t<Fx>>;
|
using clean_fx = std::remove_pointer_t<std::decay_t<Fx>>;
|
||||||
using F = function_detail::member_variable<C, clean_fx, is_yielding>;
|
using F = function_detail::member_variable<C, clean_fx, is_yielding>;
|
||||||
select_set_fx<false, F>(L, std::forward<Fx>(fx), std::forward<Args>(args)...);
|
select_set_fx<false, false, F>(L, std::forward<Fx>(fx), std::forward<Args>(args)...);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -17852,7 +17854,7 @@ namespace sol {
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
using F = function_detail::member_function<Tu, dFx, is_yielding>;
|
using F = function_detail::member_function<Tu, dFx, is_yielding>;
|
||||||
select_set_fx<false, F>(L, std::forward<Fx>(fx), std::forward<T>(obj), std::forward<Args>(args)...);
|
select_set_fx<false, false, F>(L, std::forward<Fx>(fx), std::forward<T>(obj), std::forward<Args>(args)...);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -18057,13 +18059,13 @@ namespace sol {
|
||||||
struct unqualified_pusher<overload_set<Functions...>> {
|
struct unqualified_pusher<overload_set<Functions...>> {
|
||||||
static int push(lua_State* L, overload_set<Functions...>&& set) {
|
static int push(lua_State* L, overload_set<Functions...>&& set) {
|
||||||
using F = function_detail::overloaded_function<0, Functions...>;
|
using F = function_detail::overloaded_function<0, Functions...>;
|
||||||
function_detail::select_set_fx<false, F>(L, std::move(set.functions));
|
function_detail::select_set_fx<false, false, F>(L, std::move(set.functions));
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int push(lua_State* L, const overload_set<Functions...>& set) {
|
static int push(lua_State* L, const overload_set<Functions...>& set) {
|
||||||
using F = function_detail::overloaded_function<0, Functions...>;
|
using F = function_detail::overloaded_function<0, Functions...>;
|
||||||
function_detail::select_set_fx<false, F>(L, set.functions);
|
function_detail::select_set_fx<false, false, F>(L, set.functions);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
@ -18128,25 +18130,25 @@ namespace sol {
|
||||||
struct unqualified_pusher<factory_wrapper<Functions...>> {
|
struct unqualified_pusher<factory_wrapper<Functions...>> {
|
||||||
static int push(lua_State* L, const factory_wrapper<Functions...>& fw) {
|
static int push(lua_State* L, const factory_wrapper<Functions...>& fw) {
|
||||||
using F = function_detail::overloaded_function<0, Functions...>;
|
using F = function_detail::overloaded_function<0, Functions...>;
|
||||||
function_detail::select_set_fx<false, F>(L, fw.functions);
|
function_detail::select_set_fx<false, false, F>(L, fw.functions);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int push(lua_State* L, factory_wrapper<Functions...>&& fw) {
|
static int push(lua_State* L, factory_wrapper<Functions...>&& fw) {
|
||||||
using F = function_detail::overloaded_function<0, Functions...>;
|
using F = function_detail::overloaded_function<0, Functions...>;
|
||||||
function_detail::select_set_fx<false, F>(L, std::move(fw.functions));
|
function_detail::select_set_fx<false, false, F>(L, std::move(fw.functions));
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int push(lua_State* L, const factory_wrapper<Functions...>& fw, function_detail::call_indicator) {
|
static int push(lua_State* L, const factory_wrapper<Functions...>& fw, function_detail::call_indicator) {
|
||||||
using F = function_detail::overloaded_function<1, Functions...>;
|
using F = function_detail::overloaded_function<1, Functions...>;
|
||||||
function_detail::select_set_fx<false, F>(L, fw.functions);
|
function_detail::select_set_fx<false, false, F>(L, fw.functions);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int push(lua_State* L, factory_wrapper<Functions...>&& fw, function_detail::call_indicator) {
|
static int push(lua_State* L, factory_wrapper<Functions...>&& fw, function_detail::call_indicator) {
|
||||||
using F = function_detail::overloaded_function<1, Functions...>;
|
using F = function_detail::overloaded_function<1, Functions...>;
|
||||||
function_detail::select_set_fx<false, F>(L, std::move(fw.functions));
|
function_detail::select_set_fx<false, false, F>(L, std::move(fw.functions));
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in New Issue
Block a user