OpenMiner  0.0.1a
Voxel game engine
Public Types | Public Member Functions | Public Attributes | List of all members
sol::function_detail::member_variable< T, Function, is_yielding > Struct Template Reference

#include <sol.hpp>

Public Types

typedef std::remove_pointer_t< std::decay_t< Function > > function_type
 
typedef meta::bind_traits< function_type >::return_type return_type
 
typedef meta::bind_traits< function_type >::args_list args_lists
 
typedef std::add_lvalue_reference_t< meta::unwrapped_t< std::remove_reference_t< decltype(detail::deref(member))> > > M
 

Public Member Functions

template<typename... Args>
 member_variable (function_type v, Args &&... args)
 
int call (lua_State *L)
 
int operator() (lua_State *L)
 

Public Attributes

function_type var
 
T member
 

Member Typedef Documentation

§ args_lists

template<typename T , typename Function , bool is_yielding>
typedef meta::bind_traits<function_type>::args_list sol::function_detail::member_variable< T, Function, is_yielding >::args_lists

§ function_type

template<typename T , typename Function , bool is_yielding>
typedef std::remove_pointer_t<std::decay_t<Function> > sol::function_detail::member_variable< T, Function, is_yielding >::function_type

§ M

template<typename T , typename Function , bool is_yielding>
typedef std::add_lvalue_reference_t<meta::unwrapped_t<std::remove_reference_t<decltype(detail::deref(member))> > > sol::function_detail::member_variable< T, Function, is_yielding >::M

§ return_type

template<typename T , typename Function , bool is_yielding>
typedef meta::bind_traits<function_type>::return_type sol::function_detail::member_variable< T, Function, is_yielding >::return_type

Constructor & Destructor Documentation

§ member_variable()

template<typename T , typename Function , bool is_yielding>
template<typename... Args>
sol::function_detail::member_variable< T, Function, is_yielding >::member_variable ( function_type  v,
Args &&...  args 
)
inline
14210  : var(std::move(v)), member(std::forward<Args>(args)...) {
14211  }
function_type var
Definition: sol.hpp:14204
T member
Definition: sol.hpp:14205

Member Function Documentation

§ call()

template<typename T , typename Function , bool is_yielding>
int sol::function_detail::member_variable< T, Function, is_yielding >::call ( lua_State *  L)
inline
14213  {
14214  int nr;
14215  {
14217  switch (lua_gettop(L)) {
14218  case 0:
14219  nr = call_detail::call_wrapped<T, true, false, -1>(L, var, mem);
14220  break;
14221  case 1:
14222  nr = call_detail::call_wrapped<T, false, false, -1>(L, var, mem);
14223  break;
14224  default:
14225  nr = luaL_error(L, "sol: incorrect number of arguments to member variable function");
14226  break;
14227  }
14228  }
14229  if (is_yielding) {
14230  return lua_yield(L, nr);
14231  }
14232  else {
14233  return nr;
14234  }
14235  }
auto deref(T &&item) -> decltype(std::forward< T >(item))
Definition: sol.hpp:1842
std::add_lvalue_reference_t< meta::unwrapped_t< std::remove_reference_t< decltype(detail::deref(member))> > > M
Definition: sol.hpp:14206
function_type var
Definition: sol.hpp:14204
T member
Definition: sol.hpp:14205
auto unwrap(T &&item) -> decltype(std::forward< T >(item))
Definition: sol.hpp:1832
int call_wrapped(lua_State *L, Fx &&fx, Args &&... args)
Definition: sol.hpp:13729

§ operator()()

template<typename T , typename Function , bool is_yielding>
int sol::function_detail::member_variable< T, Function, is_yielding >::operator() ( lua_State *  L)
inline
14237  {
14238  auto f = [&](lua_State*) -> int { return this->call(L); };
14239  return detail::trampoline(L, f);
14240  }
int trampoline(lua_State *L, Fx &&f, Args &&... args)
Definition: sol.hpp:5946
int call(lua_State *L)
Definition: sol.hpp:14213

Member Data Documentation

§ member

template<typename T , typename Function , bool is_yielding>
T sol::function_detail::member_variable< T, Function, is_yielding >::member

§ var

template<typename T , typename Function , bool is_yielding>
function_type sol::function_detail::member_variable< T, Function, is_yielding >::var

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