mirror of
https://github.com/ThePhD/sol2.git
synced 2024-03-22 13:10:44 +08:00
update single
This commit is contained in:
parent
6d879f571a
commit
50f749640c
|
@ -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 2017-09-22 22:53:40.988986 UTC
|
// Generated 2017-09-24 00:26:27.067649 UTC
|
||||||
// This header was generated with sol v2.18.3 (revision 290a671)
|
// This header was generated with sol v2.18.3 (revision 6d879f5)
|
||||||
// https://github.com/ThePhD/sol2
|
// https://github.com/ThePhD/sol2
|
||||||
|
|
||||||
#ifndef SOL_SINGLE_INCLUDE_HPP
|
#ifndef SOL_SINGLE_INCLUDE_HPP
|
||||||
|
@ -6553,6 +6553,9 @@ namespace sol {
|
||||||
|
|
||||||
namespace stack {
|
namespace stack {
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
|
struct extensible {};
|
||||||
|
|
||||||
template <typename T, bool global = false, bool raw = false, typename = void>
|
template <typename T, bool global = false, bool raw = false, typename = void>
|
||||||
struct field_getter;
|
struct field_getter;
|
||||||
template <typename T, bool global = false, bool raw = false, typename = void>
|
template <typename T, bool global = false, bool raw = false, typename = void>
|
||||||
|
@ -6562,12 +6565,16 @@ namespace sol {
|
||||||
template <typename T, typename = void>
|
template <typename T, typename = void>
|
||||||
struct getter;
|
struct getter;
|
||||||
template <typename T, typename = void>
|
template <typename T, typename = void>
|
||||||
|
struct userdata_getter;
|
||||||
|
template <typename T, typename = void>
|
||||||
struct popper;
|
struct popper;
|
||||||
template <typename T, typename = void>
|
template <typename T, typename = void>
|
||||||
struct pusher;
|
struct pusher;
|
||||||
template <typename T, type = lua_type_of<T>::value, typename = void>
|
template <typename T, type = lua_type_of<T>::value, typename = void>
|
||||||
struct checker;
|
struct checker;
|
||||||
template <typename T, typename = void>
|
template <typename T, typename = void>
|
||||||
|
struct userdata_checker;
|
||||||
|
template <typename T, typename = void>
|
||||||
struct check_getter;
|
struct check_getter;
|
||||||
|
|
||||||
struct probe {
|
struct probe {
|
||||||
|
@ -7075,6 +7082,14 @@ namespace stack {
|
||||||
};
|
};
|
||||||
} // namespace stack_detail
|
} // namespace stack_detail
|
||||||
|
|
||||||
|
template <typename T, typename>
|
||||||
|
struct userdata_checker {
|
||||||
|
template <typename Handler>
|
||||||
|
static bool check(lua_State*, int, type, Handler&&, record&) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
template <typename T, type expected, typename>
|
template <typename T, type expected, typename>
|
||||||
struct checker {
|
struct checker {
|
||||||
template <typename Handler>
|
template <typename Handler>
|
||||||
|
@ -7410,7 +7425,14 @@ namespace stack {
|
||||||
template <typename T, typename C>
|
template <typename T, typename C>
|
||||||
struct checker<detail::as_value_tag<T>, type::userdata, C> {
|
struct checker<detail::as_value_tag<T>, type::userdata, C> {
|
||||||
template <typename U, typename Handler>
|
template <typename U, typename Handler>
|
||||||
static bool check(types<U>, lua_State* L, type indextype, int index, Handler&& handler, record& tracking) {
|
static bool check(types<U>, lua_State* L, int index, type indextype, Handler&& handler, record& tracking) {
|
||||||
|
#ifdef SOL_ENABLE_INTEROP
|
||||||
|
userdata_checker<extensible<T>> uc;
|
||||||
|
(void)uc;
|
||||||
|
if (uc.check(L, index, indextype, handler, tracking)) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
#endif // interop extensibility
|
||||||
tracking.use(1);
|
tracking.use(1);
|
||||||
if (indextype != type::userdata) {
|
if (indextype != type::userdata) {
|
||||||
handler(L, index, type::userdata, indextype, "value is not a valid userdata");
|
handler(L, index, type::userdata, indextype, "value is not a valid userdata");
|
||||||
|
@ -7456,7 +7478,7 @@ namespace stack {
|
||||||
template <typename Handler>
|
template <typename Handler>
|
||||||
static bool check(lua_State* L, int index, Handler&& handler, record& tracking) {
|
static bool check(lua_State* L, int index, Handler&& handler, record& tracking) {
|
||||||
const type indextype = type_of(L, index);
|
const type indextype = type_of(L, index);
|
||||||
return checker<detail::as_value_tag<T>, type::userdata, C>{}.check(types<T>(), L, indextype, index, std::forward<Handler>(handler), tracking);
|
return checker<detail::as_value_tag<T>, type::userdata, C>{}.check(types<T>(), L, index, indextype, std::forward<Handler>(handler), tracking);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -7618,6 +7640,13 @@ namespace sol {
|
||||||
namespace sol {
|
namespace sol {
|
||||||
namespace stack {
|
namespace stack {
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
|
struct userdata_getter<T> {
|
||||||
|
static std::pair<bool, T*> get(lua_State*, int, void*, record&) {
|
||||||
|
return { false, nullptr };
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
template <typename T, typename>
|
template <typename T, typename>
|
||||||
struct getter {
|
struct getter {
|
||||||
static T& get(lua_State* L, int index, record& tracking) {
|
static T& get(lua_State* L, int index, record& tracking) {
|
||||||
|
@ -8202,7 +8231,16 @@ namespace stack {
|
||||||
struct getter<detail::as_value_tag<T>> {
|
struct getter<detail::as_value_tag<T>> {
|
||||||
static T* get_no_lua_nil(lua_State* L, int index, record& tracking) {
|
static T* get_no_lua_nil(lua_State* L, int index, record& tracking) {
|
||||||
tracking.use(1);
|
tracking.use(1);
|
||||||
void** pudata = static_cast<void**>(lua_touserdata(L, index));
|
void* rawdata = lua_touserdata(L, index);
|
||||||
|
#ifdef SOL_ENABLE_INTEROP
|
||||||
|
userdata_getter<extensible<T>> ug;
|
||||||
|
(void)ug;
|
||||||
|
auto ugr = ug.get(L, index, rawdata, tracking);
|
||||||
|
if (ugr.first) {
|
||||||
|
return ugr.second;
|
||||||
|
}
|
||||||
|
#endif // interop extensibility
|
||||||
|
void** pudata = static_cast<void**>(rawdata);
|
||||||
void* udata = *pudata;
|
void* udata = *pudata;
|
||||||
return get_no_lua_nil_from(L, udata, index, tracking);
|
return get_no_lua_nil_from(L, udata, index, tracking);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user