OpenMiner  0.0.1a
Voxel game engine
Public Member Functions | Private Member Functions | Private Attributes | List of all members
sol::usertype< T > Class Template Reference

#include <sol.hpp>

Inheritance diagram for sol::usertype< T >:
sol::simple_usertype< T >

Public Member Functions

template<typename... Args>
 usertype (Args &&... args)
 
template<typename... Args, typename... CArgs>
 usertype (constructors< CArgs... > constructorlist, Args &&... args)
 
template<typename... Args, typename... Fxs>
 usertype (constructor_wrapper< Fxs... > constructorlist, Args &&... args)
 
template<typename... Args>
 usertype (simple_tag, lua_State *L, Args &&... args)
 
usertype_detail::registrarregistrar_data ()
 
int push (lua_State *L)
 

Private Member Functions

template<typename... Args>
 usertype (detail::verified_tag, Args &&... args)
 
template<typename... Args>
 usertype (detail::add_destructor_tag, Args &&... args)
 
template<typename... Args>
 usertype (detail::check_destructor_tag, Args &&... args)
 

Private Attributes

std::unique_ptr< usertype_detail::registrarmetatableregister
 

Constructor & Destructor Documentation

§ usertype() [1/7]

template<typename T>
template<typename... Args>
sol::usertype< T >::usertype ( detail::verified_tag  ,
Args &&...  args 
)
inlineprivate
19814  : metatableregister(std::make_unique<usertype_metatable<T, std::make_index_sequence<sizeof...(Args) / 2>, Args...>>(std::forward<Args>(args)...)) {
19815  static_assert(detail::has_destructor<Args...>::value, "this type does not have an explicit destructor declared; please pass a custom destructor function wrapped in sol::destruct, especially if the type does not have an accessible (private) destructor");
19816  }
std::unique_ptr< usertype_detail::registrar > metatableregister
Definition: sol.hpp:19810

§ usertype() [2/7]

template<typename T>
template<typename... Args>
sol::usertype< T >::usertype ( detail::add_destructor_tag  ,
Args &&...  args 
)
inlineprivate
19820  : usertype(detail::verified, std::forward<Args>(args)..., "__gc", default_destructor) {
19821  }
usertype(detail::verified_tag, Args &&... args)
Definition: sol.hpp:19813
const destructor_wrapper< void > default_destructor
Definition: sol.hpp:4544
struct sol::detail::verified_tag verified

§ usertype() [3/7]

template<typename T>
template<typename... Args>
sol::usertype< T >::usertype ( detail::check_destructor_tag  ,
Args &&...  args 
)
inlineprivate
19825  : usertype(meta::condition<meta::all<std::is_destructible<T>, meta::neg<detail::has_destructor<Args...>>>, detail::add_destructor_tag, detail::verified_tag>(), std::forward<Args>(args)...) {
19826  }
usertype(detail::verified_tag, Args &&... args)
Definition: sol.hpp:19813
boolean<!T::value > neg
Definition: sol.hpp:1293
std::conditional_t< Condition::value, Then, Else > condition
Definition: sol.hpp:1296

§ usertype() [4/7]

template<typename T>
template<typename... Args>
sol::usertype< T >::usertype ( Args &&...  args)
inline
19831  : usertype(meta::condition<meta::all<std::is_default_constructible<T>, meta::neg<detail::has_constructor<Args...>>>, decltype(default_constructor), detail::check_destructor_tag>(), std::forward<Args>(args)...) {
19832  }
usertype(detail::verified_tag, Args &&... args)
Definition: sol.hpp:19813
boolean<!T::value > neg
Definition: sol.hpp:1293
std::conditional_t< Condition::value, Then, Else > condition
Definition: sol.hpp:1296
const auto default_constructor
Definition: sol.hpp:4497

§ usertype() [5/7]

template<typename T>
template<typename... Args, typename... CArgs>
sol::usertype< T >::usertype ( constructors< CArgs... >  constructorlist,
Args &&...  args 
)
inline
19836  : usertype(detail::check_destructor_tag(), std::forward<Args>(args)..., "new", constructorlist) {
19837  }
usertype(detail::verified_tag, Args &&... args)
Definition: sol.hpp:19813

§ usertype() [6/7]

template<typename T>
template<typename... Args, typename... Fxs>
sol::usertype< T >::usertype ( constructor_wrapper< Fxs... >  constructorlist,
Args &&...  args 
)
inline
19841  : usertype(detail::check_destructor_tag(), std::forward<Args>(args)..., "new", constructorlist) {
19842  }
usertype(detail::verified_tag, Args &&... args)
Definition: sol.hpp:19813

§ usertype() [7/7]

template<typename T>
template<typename... Args>
sol::usertype< T >::usertype ( simple_tag  ,
lua_State *  L,
Args &&...  args 
)
inline
19846  : metatableregister(std::make_unique<simple_usertype_metatable<T>>(L, std::forward<Args>(args)...)) {
19847  }
std::unique_ptr< usertype_detail::registrar > metatableregister
Definition: sol.hpp:19810

Member Function Documentation

§ push()

template<typename T>
int sol::usertype< T >::push ( lua_State *  L)
inline
19853  {
19854  int r = metatableregister->push_um(L);
19855  metatableregister = nullptr;
19856  return r;
19857  }
std::unique_ptr< usertype_detail::registrar > metatableregister
Definition: sol.hpp:19810

§ registrar_data()

template<typename T>
usertype_detail::registrar* sol::usertype< T >::registrar_data ( )
inline
19849  {
19850  return metatableregister.get();
19851  }
std::unique_ptr< usertype_detail::registrar > metatableregister
Definition: sol.hpp:19810

Member Data Documentation

§ metatableregister

template<typename T>
std::unique_ptr<usertype_detail::registrar> sol::usertype< T >::metatableregister
private

The documentation for this class was generated from the following file: