OpenMiner  0.0.1a
Voxel game engine
Public Types | Public Member Functions | Public Attributes | List of all members
sol::stack::stack_detail::undefined_metatable< T > Struct Template Reference

#include <sol.hpp>

Public Types

typedef meta::all< meta::neg< std::is_pointer< T > >, std::is_destructible< T > > is_destructible
 
typedef std::remove_pointer_t< TP
 

Public Member Functions

 undefined_metatable (lua_State *l, const char *k)
 
void operator() () const
 

Public Attributes

lua_State * L
 
const char * key
 

Member Typedef Documentation

§ is_destructible

template<typename T>
typedef meta::all<meta::neg<std::is_pointer<T> >, std::is_destructible<T> > sol::stack::stack_detail::undefined_metatable< T >::is_destructible

§ P

template<typename T>
typedef std::remove_pointer_t<T> sol::stack::stack_detail::undefined_metatable< T >::P

Constructor & Destructor Documentation

§ undefined_metatable()

template<typename T>
sol::stack::stack_detail::undefined_metatable< T >::undefined_metatable ( lua_State *  l,
const char *  k 
)
inline
18341  : L(l), key(k) {
18342  }
const char * key
Definition: sol.hpp:18338
lua_State * L
Definition: sol.hpp:18337

Member Function Documentation

§ operator()()

template<typename T>
void sol::stack::stack_detail::undefined_metatable< T >::operator() ( ) const
inline
18344  {
18345  if (luaL_newmetatable(L, key) == 1) {
18346  luaL_Reg l[32]{};
18347  int index = 0;
18348  auto fx = [](meta_function) { return true; };
18349  usertype_detail::insert_default_registrations<P>(l, index, fx);
18350  usertype_detail::make_destructor<T>(l, index);
18351  luaL_setfuncs(L, l, 0);
18352 
18353  // __type table
18354  lua_createtable(L, 0, 2);
18355  const std::string& name = detail::demangle<T>();
18356  lua_pushlstring(L, name.c_str(), name.size());
18357  lua_setfield(L, -2, "name");
18358  lua_CFunction is_func = &usertype_detail::is_check<T>;
18359  lua_pushcclosure(L, is_func, 0);
18360  lua_setfield(L, -2, "is");
18361  lua_setfield(L, -2, to_string(meta_function::type).c_str());
18362  }
18363  lua_setmetatable(L, -2);
18364  }
const char * key
Definition: sol.hpp:18338
const std::string & to_string(call_status c)
Definition: sol.hpp:5190
lua_State * L
Definition: sol.hpp:18337
meta_function
Definition: sol.hpp:5277

Member Data Documentation

§ key

template<typename T>
const char* sol::stack::stack_detail::undefined_metatable< T >::key

§ L

template<typename T>
lua_State* sol::stack::stack_detail::undefined_metatable< T >::L

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