|
20 | 20 | // CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. |
21 | 21 |
|
22 | 22 | // This file was generated with a script. |
23 | | -// Generated 2016-09-22 16:13:14.308519 UTC |
24 | | -// This header was generated with sol v2.14.2 (revision dc000fb) |
| 23 | +// Generated 2016-09-26 08:01:11.472268 UTC |
| 24 | +// This header was generated with sol v2.14.2 (revision 63093ec) |
25 | 25 | // https://github.com/ThePhD/sol2 |
26 | 26 |
|
27 | 27 | #ifndef SOL_SINGLE_INCLUDE_HPP |
@@ -3005,6 +3005,12 @@ namespace sol { |
3005 | 3005 | operator int() const { return index; } |
3006 | 3006 | }; |
3007 | 3007 |
|
| 3008 | + struct raw_index { |
| 3009 | + int index; |
| 3010 | + raw_index(int i) : index(i) {} |
| 3011 | + operator int() const { return index; } |
| 3012 | + }; |
| 3013 | + |
3008 | 3014 | struct absolute_index { |
3009 | 3015 | int index; |
3010 | 3016 | absolute_index(lua_State* L, int idx) : index(lua_absindex(L, idx)) {} |
@@ -3581,6 +3587,8 @@ namespace sol { |
3581 | 3587 | stack_reference() noexcept = default; |
3582 | 3588 | stack_reference(nil_t) noexcept : stack_reference() {}; |
3583 | 3589 | stack_reference(lua_State* L, int i) noexcept : L(L), index(lua_absindex(L, i)) {} |
| 3590 | + stack_reference(lua_State* L, absolute_index i) noexcept : L(L), index(i) {} |
| 3591 | + stack_reference(lua_State* L, raw_index i) noexcept : L(L), index(i) {} |
3584 | 3592 | stack_reference(stack_reference&& o) noexcept = default; |
3585 | 3593 | stack_reference& operator=(stack_reference&&) noexcept = default; |
3586 | 3594 | stack_reference(const stack_reference&) noexcept = default; |
@@ -5354,12 +5362,22 @@ namespace sol { |
5354 | 5362 |
|
5355 | 5363 | template<typename... Args> |
5356 | 5364 | struct getter<std::tuple<Args...>> { |
5357 | | - template <std::size_t... I> |
5358 | | - static decltype(auto) apply(std::index_sequence<I...>, lua_State* L, int index, record& tracking) { |
5359 | | - return std::tuple<decltype(stack::get<Args>(L, index))...>{stack::get<Args>(L, index + tracking.used, tracking)...}; |
| 5365 | + typedef std::tuple<decltype(stack::get<Args>(nullptr, 0))...> R; |
| 5366 | + |
| 5367 | + template <typename... TArgs> |
| 5368 | + static R apply(std::index_sequence<>, lua_State*, int, record&, TArgs&&... args) { |
| 5369 | + // Fuck you too, VC++ |
| 5370 | + return R{std::forward<TArgs>(args)...}; |
| 5371 | + } |
| 5372 | + |
| 5373 | + template <std::size_t I, std::size_t... Ix, typename... TArgs> |
| 5374 | + static R apply(std::index_sequence<I, Ix...>, lua_State* L, int index, record& tracking, TArgs&&... args) { |
| 5375 | + // Fuck you too, VC++ |
| 5376 | + typedef std::tuple_element_t<I, std::tuple<Args...>> T; |
| 5377 | + return apply(std::index_sequence<Ix...>(), L, index, tracking, std::forward<TArgs>(args)..., stack::get<T>(L, index + tracking.used, tracking)); |
5360 | 5378 | } |
5361 | 5379 |
|
5362 | | - static decltype(auto) get(lua_State* L, int index, record& tracking) { |
| 5380 | + static R get(lua_State* L, int index, record& tracking) { |
5363 | 5381 | return apply(std::make_index_sequence<sizeof...(Args)>(), L, index, tracking); |
5364 | 5382 | } |
5365 | 5383 | }; |
|
0 commit comments