OpenMiner  0.0.1a
Voxel game engine
Functions
sol::filter_detail Namespace Reference

Functions

template<int I, int... In>
void handle_filter (static_stack_dependencies< I, In... >, lua_State *L, int &)
 
template<int... In>
void handle_filter (returns_self_with< In... >, lua_State *L, int &pushed)
 
void handle_filter (const stack_dependencies &sdeps, lua_State *L, int &)
 
template<typename P , meta::disable< std::is_base_of< detail::filter_base_tag, meta::unqualified_t< P >>> = meta::enabler>
void handle_filter (P &&p, lua_State *L, int &pushed)
 

Function Documentation

§ handle_filter() [1/4]

template<int I, int... In>
void sol::filter_detail::handle_filter ( static_stack_dependencies< I, In... >  ,
lua_State *  L,
int &   
)
inline
13042  {
13043  if (sizeof...(In) == 0) {
13044  return;
13045  }
13046  absolute_index ai(L, I);
13047  if (type_of(L, ai) != type::userdata) {
13048  return;
13049  }
13050  lua_createtable(L, static_cast<int>(sizeof...(In)), 0);
13051  stack_reference deps(L, -1);
13052  auto per_dep = [&L, &deps](int i) {
13053  lua_pushvalue(L, i);
13054  luaL_ref(L, deps.stack_index());
13055  };
13056  (void)per_dep;
13057  (void)detail::swallow{ int(), (per_dep(In), int())... };
13058  lua_setuservalue(L, ai);
13059  }
std::initializer_list< int > swallow
Definition: sol.hpp:462
basic_userdata< reference > userdata
Definition: sol.hpp:351
type type_of()
Definition: sol.hpp:5770

§ handle_filter() [2/4]

template<int... In>
void sol::filter_detail::handle_filter ( returns_self_with< In... >  ,
lua_State *  L,
int &  pushed 
)
inline
13062  {
13063  pushed = stack::push(L, raw_index(1));
13064  handle_filter(static_stack_dependencies<-1, In...>(), L, pushed);
13065  }
void handle_filter(P &&p, lua_State *L, int &pushed)
Definition: sol.hpp:13082
int push(lua_State *L, Arg &&arg, Args &&... args)
Definition: sol.hpp:7776

§ handle_filter() [3/4]

void sol::filter_detail::handle_filter ( const stack_dependencies sdeps,
lua_State *  L,
int &   
)
inline
13067  {
13068  absolute_index ai(L, sdeps.target);
13069  if (type_of(L, ai) != type::userdata) {
13070  return;
13071  }
13072  lua_createtable(L, static_cast<int>(sdeps.size()), 0);
13073  stack_reference deps(L, -1);
13074  for (std::size_t i = 0; i < sdeps.size(); ++i) {
13075  lua_pushvalue(L, sdeps.stack_indices[i]);
13076  luaL_ref(L, deps.stack_index());
13077  }
13078  lua_setuservalue(L, ai);
13079  }
basic_userdata< reference > userdata
Definition: sol.hpp:351
type type_of()
Definition: sol.hpp:5770

§ handle_filter() [4/4]

template<typename P , meta::disable< std::is_base_of< detail::filter_base_tag, meta::unqualified_t< P >>> = meta::enabler>
void sol::filter_detail::handle_filter ( P &&  p,
lua_State *  L,
int &  pushed 
)
inline
13082  {
13083  pushed = std::forward<P>(p)(L, pushed);
13084  }