-Wshadow and -Wconversion are kind've dumb

This commit is contained in:
ThePhD 2016-11-25 20:47:15 -05:00
parent 49a0f71272
commit 289ded358c
17 changed files with 126 additions and 88 deletions

View File

@ -20,8 +20,8 @@
// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
// This file was generated with a script.
// Generated 2016-11-23 07:55:07.806043 UTC
// This header was generated with sol v2.15.1 (revision ed21ba7)
// Generated 2016-11-26 01:46:59.897910 UTC
// This header was generated with sol v2.15.2 (revision 49a0f71)
// https://github.com/ThePhD/sol2
#ifndef SOL_SINGLE_INCLUDE_HPP
@ -1904,19 +1904,24 @@ namespace sol {
# define OPTIONAL_CONSTEXPR_INIT_LIST
# endif
# if defined TR2_OPTIONAL_CLANG_3_5_AND_HIGHTER_ && (defined __cplusplus) && (__cplusplus != 201103L)
# if defined(TR2_OPTIONAL_MSVC_2015_AND_HIGHER___) || (defined TR2_OPTIONAL_CLANG_3_5_AND_HIGHTER_ && (defined __cplusplus) && (__cplusplus != 201103L))
# define OPTIONAL_HAS_MOVE_ACCESSORS 1
# else
# define OPTIONAL_HAS_MOVE_ACCESSORS 0
# endif
# // In C++11 constexpr implies const, so we need to make non-const members also non-constexpr
# if (defined __cplusplus) && (__cplusplus == 201103L)
# if defined(TR2_OPTIONAL_MSVC_2015_AND_HIGHER___) || ((defined __cplusplus) && (__cplusplus == 201103L))
# define OPTIONAL_MUTABLE_CONSTEXPR
# else
# define OPTIONAL_MUTABLE_CONSTEXPR constexpr
# endif
# if defined TR2_OPTIONAL_MSVC_2015_AND_HIGHER___
#pragma warning( push )
#pragma warning( disable : 4814 )
#endif
namespace sol {
// BEGIN workaround for missing is_trivially_destructible
@ -2885,6 +2890,10 @@ namespace std
};
}
# if defined TR2_OPTIONAL_MSVC_2015_AND_HIGHER___
#pragma warning( pop )
#endif
# undef TR2_OPTIONAL_REQUIRES
# undef TR2_OPTIONAL_ASSERTED_EXPRESSION
@ -2917,8 +2926,8 @@ namespace sol {
const char* p;
string_shim(const std::string& r) : string_shim(r.data(), r.size()) {}
string_shim(const char* p) : string_shim(p, std::char_traits<char>::length(p)) {}
string_shim(const char* p, std::size_t s) : s(s), p(p) {}
string_shim(const char* ptr) : string_shim(ptr, std::char_traits<char>::length(ptr)) {}
string_shim(const char* ptr, std::size_t sz) : s(sz), p(ptr) {}
static int compare(const char* lhs_p, std::size_t lhs_sz, const char* rhs_p, std::size_t rhs_sz) {
int result = std::char_traits<char>::compare(lhs_p, rhs_p, lhs_sz < rhs_sz ? lhs_sz : rhs_sz);
@ -3195,14 +3204,14 @@ namespace sol {
struct closure {
lua_CFunction c_function;
std::tuple<Upvalues...> upvalues;
closure(lua_CFunction f, Upvalues... upvalues) : c_function(f), upvalues(std::forward<Upvalues>(upvalues)...) {}
closure(lua_CFunction f, Upvalues... targetupvalues) : c_function(f), upvalues(std::forward<Upvalues>(targetupvalues)...) {}
};
template <>
struct closure<> {
lua_CFunction c_function;
int upvalues;
closure(lua_CFunction f, int upvalues = 0) : c_function(f), upvalues(upvalues) {}
closure(lua_CFunction f, int upvalue_count = 0) : c_function(f), upvalues(upvalue_count) {}
};
typedef closure<> c_closure;
@ -3787,7 +3796,7 @@ namespace sol {
struct push_popper_n {
lua_State* L;
int t;
push_popper_n(lua_State* L, int x) : L(L), t(x) { }
push_popper_n(lua_State* luastate, int x) : L(luastate), t(x) { }
~push_popper_n() { lua_pop(L, t); }
};
template <>
@ -3821,20 +3830,20 @@ namespace sol {
class reference {
private:
lua_State* L = nullptr; // non-owning
lua_State* luastate = nullptr; // non-owning
int ref = LUA_NOREF;
int copy() const noexcept {
if (ref == LUA_NOREF)
return LUA_NOREF;
push();
return luaL_ref(L, LUA_REGISTRYINDEX);
return luaL_ref(lua_state(), LUA_REGISTRYINDEX);
}
protected:
reference(lua_State* L, detail::global_tag) noexcept : L(L) {
lua_pushglobaltable(L);
ref = luaL_ref(L, LUA_REGISTRYINDEX);
reference(lua_State* L, detail::global_tag) noexcept : luastate(L) {
lua_pushglobaltable(lua_state());
ref = luaL_ref(lua_state(), LUA_REGISTRYINDEX);
}
int stack_index() const noexcept {
@ -3846,46 +3855,46 @@ namespace sol {
reference(nil_t) noexcept : reference() {}
reference(const stack_reference& r) noexcept : reference(r.lua_state(), r.stack_index()) {}
reference(stack_reference&& r) noexcept : reference(r.lua_state(), r.stack_index()) {}
reference(lua_State* L, int index = -1) noexcept : L(L) {
lua_pushvalue(L, index);
ref = luaL_ref(L, LUA_REGISTRYINDEX);
reference(lua_State* L, int index = -1) noexcept : luastate(L) {
lua_pushvalue(lua_state(), index);
ref = luaL_ref(lua_state(), LUA_REGISTRYINDEX);
}
virtual ~reference() noexcept {
luaL_unref(L, LUA_REGISTRYINDEX, ref);
luaL_unref(lua_state(), LUA_REGISTRYINDEX, ref);
}
reference(reference&& o) noexcept {
L = o.L;
luastate = o.luastate;
ref = o.ref;
o.L = nullptr;
o.luastate = nullptr;
o.ref = LUA_NOREF;
}
reference& operator=(reference&& o) noexcept {
L = o.L;
luastate = o.luastate;
ref = o.ref;
o.L = nullptr;
o.luastate = nullptr;
o.ref = LUA_NOREF;
return *this;
}
reference(const reference& o) noexcept {
L = o.L;
luastate = o.luastate;
ref = o.copy();
}
reference& operator=(const reference& o) noexcept {
L = o.L;
luastate = o.luastate;
ref = o.copy();
return *this;
}
int push() const noexcept {
lua_rawgeti(L, LUA_REGISTRYINDEX, ref);
lua_rawgeti(lua_state(), LUA_REGISTRYINDEX, ref);
return 1;
}
@ -3907,12 +3916,12 @@ namespace sol {
type get_type() const noexcept {
auto pp = stack::push_pop(*this);
int result = lua_type(L, -1);
int result = lua_type(lua_state(), -1);
return static_cast<type>(result);
}
lua_State* lua_state() const noexcept {
return L;
return luastate;
}
};
@ -4335,7 +4344,7 @@ namespace sol {
template <typename T>
inline auto tagged_get(types<T>, lua_State* L, int index, record& tracking) -> decltype(stack_detail::unchecked_get<T>(L, index, tracking)) {
auto op = check_get<T>(L, index, type_panic, tracking);
return *op;
return *std::move(op);
}
#else
template <typename T>
@ -7077,7 +7086,7 @@ namespace sol {
public:
function_result() = default;
function_result(lua_State* L, int index = -1, int returncount = 0) : L(L), index(index), returncount(returncount) {
function_result(lua_State* Ls, int idx = -1, int retnum = 0) : L(Ls), index(idx), returncount(retnum) {
}
function_result(const function_result&) = default;
@ -7493,7 +7502,7 @@ namespace sol {
struct constructor_match {
T* obj;
constructor_match(T* obj) : obj(obj) {}
constructor_match(T* o) : obj(o) {}
template <typename Fx, std::size_t I, typename... R, typename... Args>
int operator()(types<Fx>, index_value<I>, types<R...> r, types<Args...> a, lua_State* L, int, int start) const {
@ -8319,7 +8328,7 @@ namespace sol {
}
int operator()(lua_State* L) {
auto f = [&](lua_State* L) -> int { return this->call(L); };
auto f = [&](lua_State*) -> int { return this->call(L); };
return detail::trampoline(L, f);
}
};
@ -8340,7 +8349,7 @@ namespace sol {
}
int operator()(lua_State* L) {
auto f = [&](lua_State* L) -> int { return this->call(L); };
auto f = [&](lua_State*) -> int { return this->call(L); };
return detail::trampoline(L, f);
}
};
@ -8370,7 +8379,7 @@ namespace sol {
}
int operator()(lua_State* L) {
auto f = [&](lua_State* L) -> int { return this->call(L); };
auto f = [&](lua_State*) -> int { return this->call(L); };
return detail::trampoline(L, f);
}
};
@ -9035,7 +9044,7 @@ namespace sol {
public:
protected_function_result() = default;
protected_function_result(lua_State* L, int index = -1, int returncount = 0, int popcount = 0, call_status err = call_status::ok) noexcept : L(L), index(index), returncount(returncount), popcount(popcount), err(err) {
protected_function_result(lua_State* Ls, int idx = -1, int retnum = 0, int popped = 0, call_status pferr = call_status::ok) noexcept : L(Ls), index(idx), returncount(retnum), popcount(popped), err(pferr) {
}
protected_function_result(const protected_function_result&) = default;
@ -9368,7 +9377,7 @@ namespace sol {
stack_proxy sp;
va_iterator() : L(nullptr), index((std::numeric_limits<int>::max)()), stacktop((std::numeric_limits<int>::max)()) {}
va_iterator(lua_State* L, int index, int stacktop) : L(L), index(index), stacktop(stacktop), sp(L, index) {}
va_iterator(lua_State* luastate, int idx, int topidx) : L(luastate), index(idx), stacktop(topidx), sp(luastate, idx) {}
reference operator*() {
return stack_proxy(L, index);
@ -9479,7 +9488,7 @@ namespace sol {
typedef std::reverse_iterator<const_iterator> const_reverse_iterator;
variadic_args() = default;
variadic_args(lua_State* L, int index = -1) : L(L), index(lua_absindex(L, index)), stacktop(lua_gettop(L)) {}
variadic_args(lua_State* luastate, int stackindex = -1) : L(luastate), index(lua_absindex(luastate, stackindex)), stacktop(lua_gettop(luastate)) {}
variadic_args(const variadic_args&) = default;
variadic_args& operator=(const variadic_args&) = default;
variadic_args(variadic_args&& o) : L(o.L), index(o.index), stacktop(o.stacktop) {
@ -9705,7 +9714,7 @@ namespace sol {
key_type key;
template<typename T>
proxy(Table table, T&& key) : tbl(table), key(std::forward<T>(key)) {}
proxy(Table table, T&& k) : tbl(table), key(std::forward<T>(k)) {}
template<typename T>
proxy& set(T&& item) {
@ -11618,8 +11627,8 @@ namespace sol {
namespace sol {
namespace detail {
template <std::size_t n>
struct clean { lua_State* L; clean(lua_State* L) : L(L) {} ~clean() { lua_pop(L, static_cast<int>(n)); } };
struct ref_clean { lua_State* L; int& n; ref_clean(lua_State* L, int& n) : L(L), n(n) {} ~ref_clean() { lua_pop(L, static_cast<int>(n)); } };
struct clean { lua_State* L; clean(lua_State* luastate) : L(luastate) {} ~clean() { lua_pop(L, static_cast<int>(n)); } };
struct ref_clean { lua_State* L; int& n; ref_clean(lua_State* luastate, int& n) : L(luastate), n(n) {} ~ref_clean() { lua_pop(L, static_cast<int>(n)); } };
inline int fail_on_newindex(lua_State* L) {
return luaL_error(L, "sol: cannot modify the elements of an enumeration table");
}
@ -12044,6 +12053,10 @@ namespace sol {
static const int narr = static_cast<int>(meta::count_2_for_pack<std::is_integral, Args...>::value);
return create(std::forward<Name>(name), narr, sizeof...(Args) / 2 - narr, std::forward<Args>(args)...);
}
~basic_table_core() {
}
};
} // sol
@ -12102,7 +12115,7 @@ namespace sol {
public:
load_result() = default;
load_result(lua_State* L, int index = -1, int returncount = 0, int popcount = 0, load_status err = load_status::ok) noexcept : L(L), index(index), returncount(returncount), popcount(popcount), err(err) {
load_result(lua_State* Ls, int stackindex = -1, int retnum = 0, int popnum = 0, load_status lerr = load_status::ok) noexcept : L(Ls), index(stackindex), returncount(retnum), popcount(popnum), err(lerr) {
}
load_result(const load_result&) = default;
@ -12249,14 +12262,14 @@ namespace sol {
typedef global_table::iterator iterator;
typedef global_table::const_iterator const_iterator;
state_view(lua_State* L) :
L(L),
reg(L, LUA_REGISTRYINDEX),
global(L, detail::global_) {
state_view(lua_State* Ls) :
L(Ls),
reg(Ls, LUA_REGISTRYINDEX),
global(Ls, detail::global_) {
}
state_view(this_state L) : state_view(L.L){
state_view(this_state Ls) : state_view(Ls.L){
}

10
sol.hpp
View File

@ -33,6 +33,12 @@
#endif
#endif // Unreal Engine 4 Bullshit
#ifdef __GNUC__
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wshadow"
#pragma GCC diagnostic ignored "-Wconversion"
#endif // g++
#include "sol/state.hpp"
#include "sol/object.hpp"
#include "sol/function.hpp"
@ -41,6 +47,10 @@
#include "sol/coroutine.hpp"
#include "sol/variadic_args.hpp"
#ifdef __GNUC__
#pragma GCC diagnostic pop
#endif // g++
#ifdef SOL_INSIDE_UNREAL
#ifdef SOL_INSIDE_UNREAL_REMOVED_CHECK
#define check(expr) { if(UNLIKELY(!(expr))) { FDebug::LogAssertFailedMessage( #expr, __FILE__, __LINE__ ); _DebugBreakAndPromptForRemote(); FDebug::AssertFailed( #expr, __FILE__, __LINE__ ); CA_ASSUME(false); } }}

View File

@ -52,7 +52,7 @@ namespace sol {
struct constructor_match {
T* obj;
constructor_match(T* obj) : obj(obj) {}
constructor_match(T* o) : obj(o) {}
template <typename Fx, std::size_t I, typename... R, typename... Args>
int operator()(types<Fx>, index_value<I>, types<R...> r, types<Args...> a, lua_State* L, int, int start) const {

View File

@ -37,7 +37,7 @@ namespace sol {
public:
function_result() = default;
function_result(lua_State* L, int index = -1, int returncount = 0) : L(L), index(index), returncount(returncount) {
function_result(lua_State* Ls, int idx = -1, int retnum = 0) : L(Ls), index(idx), returncount(retnum) {
}
function_result(const function_result&) = default;

View File

@ -39,7 +39,7 @@ namespace sol {
}
int operator()(lua_State* L) {
auto f = [&](lua_State* L) -> int { return this->call(L); };
auto f = [&](lua_State*) -> int { return this->call(L); };
return detail::trampoline(L, f);
}
};
@ -60,7 +60,7 @@ namespace sol {
}
int operator()(lua_State* L) {
auto f = [&](lua_State* L) -> int { return this->call(L); };
auto f = [&](lua_State*) -> int { return this->call(L); };
return detail::trampoline(L, f);
}
};
@ -90,7 +90,7 @@ namespace sol {
}
int operator()(lua_State* L) {
auto f = [&](lua_State* L) -> int { return this->call(L); };
auto f = [&](lua_State*) -> int { return this->call(L); };
return detail::trampoline(L, f);
}
};

View File

@ -72,7 +72,7 @@ namespace sol {
public:
load_result() = default;
load_result(lua_State* L, int index = -1, int returncount = 0, int popcount = 0, load_status err = load_status::ok) noexcept : L(L), index(index), returncount(returncount), popcount(popcount), err(err) {
load_result(lua_State* Ls, int stackindex = -1, int retnum = 0, int popnum = 0, load_status lerr = load_status::ok) noexcept : L(Ls), index(stackindex), returncount(retnum), popcount(popnum), err(lerr) {
}
load_result(const load_result&) = default;

View File

@ -110,19 +110,24 @@
# define OPTIONAL_CONSTEXPR_INIT_LIST
# endif
# if defined TR2_OPTIONAL_CLANG_3_5_AND_HIGHTER_ && (defined __cplusplus) && (__cplusplus != 201103L)
# if defined(TR2_OPTIONAL_MSVC_2015_AND_HIGHER___) || (defined TR2_OPTIONAL_CLANG_3_5_AND_HIGHTER_ && (defined __cplusplus) && (__cplusplus != 201103L))
# define OPTIONAL_HAS_MOVE_ACCESSORS 1
# else
# define OPTIONAL_HAS_MOVE_ACCESSORS 0
# endif
# // In C++11 constexpr implies const, so we need to make non-const members also non-constexpr
# if (defined __cplusplus) && (__cplusplus == 201103L)
# if defined(TR2_OPTIONAL_MSVC_2015_AND_HIGHER___) || ((defined __cplusplus) && (__cplusplus == 201103L))
# define OPTIONAL_MUTABLE_CONSTEXPR
# else
# define OPTIONAL_MUTABLE_CONSTEXPR constexpr
# endif
# if defined TR2_OPTIONAL_MSVC_2015_AND_HIGHER___
#pragma warning( push )
#pragma warning( disable : 4814 )
#endif
namespace sol {
// BEGIN workaround for missing is_trivially_destructible
@ -1121,6 +1126,11 @@ namespace std
};
}
# if defined TR2_OPTIONAL_MSVC_2015_AND_HIGHER___
#pragma warning( pop )
#endif
# undef TR2_OPTIONAL_REQUIRES
# undef TR2_OPTIONAL_ASSERTED_EXPRESSION

View File

@ -73,7 +73,7 @@ namespace sol {
public:
protected_function_result() = default;
protected_function_result(lua_State* L, int index = -1, int returncount = 0, int popcount = 0, call_status err = call_status::ok) noexcept : L(L), index(index), returncount(returncount), popcount(popcount), err(err) {
protected_function_result(lua_State* Ls, int idx = -1, int retnum = 0, int popped = 0, call_status pferr = call_status::ok) noexcept : L(Ls), index(idx), returncount(retnum), popcount(popped), err(pferr) {
}
protected_function_result(const protected_function_result&) = default;

View File

@ -49,7 +49,7 @@ namespace sol {
key_type key;
template<typename T>
proxy(Table table, T&& key) : tbl(table), key(std::forward<T>(key)) {}
proxy(Table table, T&& k) : tbl(table), key(std::forward<T>(k)) {}
template<typename T>
proxy& set(T&& item) {

View File

@ -31,7 +31,7 @@ namespace sol {
struct push_popper_n {
lua_State* L;
int t;
push_popper_n(lua_State* L, int x) : L(L), t(x) { }
push_popper_n(lua_State* luastate, int x) : L(luastate), t(x) { }
~push_popper_n() { lua_pop(L, t); }
};
template <>
@ -65,20 +65,20 @@ namespace sol {
class reference {
private:
lua_State* L = nullptr; // non-owning
lua_State* luastate = nullptr; // non-owning
int ref = LUA_NOREF;
int copy() const noexcept {
if (ref == LUA_NOREF)
return LUA_NOREF;
push();
return luaL_ref(L, LUA_REGISTRYINDEX);
return luaL_ref(lua_state(), LUA_REGISTRYINDEX);
}
protected:
reference(lua_State* L, detail::global_tag) noexcept : L(L) {
lua_pushglobaltable(L);
ref = luaL_ref(L, LUA_REGISTRYINDEX);
reference(lua_State* L, detail::global_tag) noexcept : luastate(L) {
lua_pushglobaltable(lua_state());
ref = luaL_ref(lua_state(), LUA_REGISTRYINDEX);
}
int stack_index() const noexcept {
@ -90,46 +90,46 @@ namespace sol {
reference(nil_t) noexcept : reference() {}
reference(const stack_reference& r) noexcept : reference(r.lua_state(), r.stack_index()) {}
reference(stack_reference&& r) noexcept : reference(r.lua_state(), r.stack_index()) {}
reference(lua_State* L, int index = -1) noexcept : L(L) {
lua_pushvalue(L, index);
ref = luaL_ref(L, LUA_REGISTRYINDEX);
reference(lua_State* L, int index = -1) noexcept : luastate(L) {
lua_pushvalue(lua_state(), index);
ref = luaL_ref(lua_state(), LUA_REGISTRYINDEX);
}
virtual ~reference() noexcept {
luaL_unref(L, LUA_REGISTRYINDEX, ref);
luaL_unref(lua_state(), LUA_REGISTRYINDEX, ref);
}
reference(reference&& o) noexcept {
L = o.L;
luastate = o.luastate;
ref = o.ref;
o.L = nullptr;
o.luastate = nullptr;
o.ref = LUA_NOREF;
}
reference& operator=(reference&& o) noexcept {
L = o.L;
luastate = o.luastate;
ref = o.ref;
o.L = nullptr;
o.luastate = nullptr;
o.ref = LUA_NOREF;
return *this;
}
reference(const reference& o) noexcept {
L = o.L;
luastate = o.luastate;
ref = o.copy();
}
reference& operator=(const reference& o) noexcept {
L = o.L;
luastate = o.luastate;
ref = o.copy();
return *this;
}
int push() const noexcept {
lua_rawgeti(L, LUA_REGISTRYINDEX, ref);
lua_rawgeti(lua_state(), LUA_REGISTRYINDEX, ref);
return 1;
}
@ -151,12 +151,12 @@ namespace sol {
type get_type() const noexcept {
auto pp = stack::push_pop(*this);
int result = lua_type(L, -1);
int result = lua_type(lua_state(), -1);
return static_cast<type>(result);
}
lua_State* lua_state() const noexcept {
return L;
return luastate;
}
};

View File

@ -258,7 +258,7 @@ namespace sol {
template <typename T>
inline auto tagged_get(types<T>, lua_State* L, int index, record& tracking) -> decltype(stack_detail::unchecked_get<T>(L, index, tracking)) {
auto op = check_get<T>(L, index, type_panic, tracking);
return *op;
return *std::move(op);
}
#else
template <typename T>

View File

@ -108,14 +108,14 @@ namespace sol {
typedef global_table::iterator iterator;
typedef global_table::const_iterator const_iterator;
state_view(lua_State* L) :
L(L),
reg(L, LUA_REGISTRYINDEX),
global(L, detail::global_) {
state_view(lua_State* Ls) :
L(Ls),
reg(Ls, LUA_REGISTRYINDEX),
global(Ls, detail::global_) {
}
state_view(this_state L) : state_view(L.L){
state_view(this_state Ls) : state_view(Ls.L){
}

View File

@ -10,8 +10,8 @@ namespace sol {
const char* p;
string_shim(const std::string& r) : string_shim(r.data(), r.size()) {}
string_shim(const char* p) : string_shim(p, std::char_traits<char>::length(p)) {}
string_shim(const char* p, std::size_t s) : s(s), p(p) {}
string_shim(const char* ptr) : string_shim(ptr, std::char_traits<char>::length(ptr)) {}
string_shim(const char* ptr, std::size_t sz) : s(sz), p(ptr) {}
static int compare(const char* lhs_p, std::size_t lhs_sz, const char* rhs_p, std::size_t rhs_sz) {
int result = std::char_traits<char>::compare(lhs_p, rhs_p, lhs_sz < rhs_sz ? lhs_sz : rhs_sz);

View File

@ -31,8 +31,8 @@
namespace sol {
namespace detail {
template <std::size_t n>
struct clean { lua_State* L; clean(lua_State* L) : L(L) {} ~clean() { lua_pop(L, static_cast<int>(n)); } };
struct ref_clean { lua_State* L; int& n; ref_clean(lua_State* L, int& n) : L(L), n(n) {} ~ref_clean() { lua_pop(L, static_cast<int>(n)); } };
struct clean { lua_State* L; clean(lua_State* luastate) : L(luastate) {} ~clean() { lua_pop(L, static_cast<int>(n)); } };
struct ref_clean { lua_State* L; int& n; ref_clean(lua_State* luastate, int& n) : L(luastate), n(n) {} ~ref_clean() { lua_pop(L, static_cast<int>(n)); } };
inline int fail_on_newindex(lua_State* L) {
return luaL_error(L, "sol: cannot modify the elements of an enumeration table");
}
@ -457,6 +457,10 @@ namespace sol {
static const int narr = static_cast<int>(meta::count_2_for_pack<std::is_integral, Args...>::value);
return create(std::forward<Name>(name), narr, sizeof...(Args) / 2 - narr, std::forward<Args>(args)...);
}
~basic_table_core() {
}
};
} // sol

View File

@ -252,14 +252,14 @@ namespace sol {
struct closure {
lua_CFunction c_function;
std::tuple<Upvalues...> upvalues;
closure(lua_CFunction f, Upvalues... upvalues) : c_function(f), upvalues(std::forward<Upvalues>(upvalues)...) {}
closure(lua_CFunction f, Upvalues... targetupvalues) : c_function(f), upvalues(std::forward<Upvalues>(targetupvalues)...) {}
};
template <>
struct closure<> {
lua_CFunction c_function;
int upvalues;
closure(lua_CFunction f, int upvalues = 0) : c_function(f), upvalues(upvalues) {}
closure(lua_CFunction f, int upvalue_count = 0) : c_function(f), upvalues(upvalue_count) {}
};
typedef closure<> c_closure;

View File

@ -42,7 +42,7 @@ namespace sol {
stack_proxy sp;
va_iterator() : L(nullptr), index((std::numeric_limits<int>::max)()), stacktop((std::numeric_limits<int>::max)()) {}
va_iterator(lua_State* L, int index, int stacktop) : L(L), index(index), stacktop(stacktop), sp(L, index) {}
va_iterator(lua_State* luastate, int idx, int topidx) : L(luastate), index(idx), stacktop(topidx), sp(luastate, idx) {}
reference operator*() {
return stack_proxy(L, index);
@ -153,7 +153,7 @@ namespace sol {
typedef std::reverse_iterator<const_iterator> const_reverse_iterator;
variadic_args() = default;
variadic_args(lua_State* L, int index = -1) : L(L), index(lua_absindex(L, index)), stacktop(lua_gettop(L)) {}
variadic_args(lua_State* luastate, int stackindex = -1) : L(luastate), index(lua_absindex(luastate, stackindex)), stacktop(lua_gettop(luastate)) {}
variadic_args(const variadic_args&) = default;
variadic_args& operator=(const variadic_args&) = default;
variadic_args(variadic_args&& o) : L(o.L), index(o.index), stacktop(o.stacktop) {

View File

@ -144,6 +144,7 @@ tc3 = TestClass03(tc1)
TestClass01& tc1 = lua["tc1"];
TestClass02& tc2 = lua["tc2"];
TestClass03& tc3 = lua["tc3"];
REQUIRE(tc0.Thing() == 123);
REQUIRE(tc1.a == 1);
REQUIRE(tc2.a == 1);
REQUIRE(tc2.b == 123);