OpenMiner  0.0.1a
Voxel game engine
Functions
sol::call_detail::overload_detail Namespace Reference

Functions

template<std::size_t... M, typename Match , typename... Args>
int overload_match_arity (types<>, std::index_sequence<>, std::index_sequence< M... >, Match &&, lua_State *L, int, int, Args &&...)
 
template<typename Fx , typename... Fxs, std::size_t I, std::size_t... In, std::size_t... M, typename Match , typename... Args>
int overload_match_arity (types< Fx, Fxs... >, std::index_sequence< I, In... >, std::index_sequence< M... >, Match &&matchfx, lua_State *L, int fxarity, int start, Args &&... args)
 
template<std::size_t... M, typename Match , typename... Args>
int overload_match_arity_single (types<>, std::index_sequence<>, std::index_sequence< M... >, Match &&matchfx, lua_State *L, int fxarity, int start, Args &&... args)
 
template<typename Fx , std::size_t I, std::size_t... M, typename Match , typename... Args>
int overload_match_arity_single (types< Fx >, std::index_sequence< I >, std::index_sequence< M... >, Match &&matchfx, lua_State *L, int fxarity, int start, Args &&... args)
 
template<typename Fx , typename Fx1 , typename... Fxs, std::size_t I, std::size_t I1, std::size_t... In, std::size_t... M, typename Match , typename... Args>
int overload_match_arity_single (types< Fx, Fx1, Fxs... >, std::index_sequence< I, I1, In... >, std::index_sequence< M... >, Match &&matchfx, lua_State *L, int fxarity, int start, Args &&... args)
 

Function Documentation

§ overload_match_arity() [1/2]

template<std::size_t... M, typename Match , typename... Args>
int sol::call_detail::overload_detail::overload_match_arity ( types<>  ,
std::index_sequence<>  ,
std::index_sequence< M... >  ,
Match &&  ,
lua_State *  L,
int  ,
int  ,
Args &&  ... 
)
inline
13131  {
13132  return luaL_error(L, "sol: no matching function call takes this number of arguments and the specified types");
13133  }

§ overload_match_arity() [2/2]

template<typename Fx , typename... Fxs, std::size_t I, std::size_t... In, std::size_t... M, typename Match , typename... Args>
int sol::call_detail::overload_detail::overload_match_arity ( types< Fx, Fxs... >  ,
std::index_sequence< I, In... >  ,
std::index_sequence< M... >  ,
Match &&  matchfx,
lua_State *  L,
int  fxarity,
int  start,
Args &&...  args 
)
inline
13136  {
13137  typedef lua_bind_traits<meta::unwrap_unqualified_t<Fx>> traits;
13138  typedef meta::tuple_types<typename traits::return_type> return_types;
13139  typedef typename traits::free_args_list args_list;
13140  // compile-time eliminate any functions that we know ahead of time are of improper arity
13141  if (!traits::runtime_variadics_t::value && meta::find_in_pack_v<index_value<traits::free_arity>, index_value<M>...>::value) {
13142  return overload_match_arity(types<Fxs...>(), std::index_sequence<In...>(), std::index_sequence<M...>(), std::forward<Match>(matchfx), L, fxarity, start, std::forward<Args>(args)...);
13143  }
13144  if (!traits::runtime_variadics_t::value && traits::free_arity != fxarity) {
13145  return overload_match_arity(types<Fxs...>(), std::index_sequence<In...>(), std::index_sequence<traits::free_arity, M...>(), std::forward<Match>(matchfx), L, fxarity, start, std::forward<Args>(args)...);
13146  }
13147  stack::record tracking{};
13148  if (!stack::stack_detail::check_types<true>{}.check(args_list(), L, start, no_panic, tracking)) {
13149  return overload_match_arity(types<Fxs...>(), std::index_sequence<In...>(), std::index_sequence<M...>(), std::forward<Match>(matchfx), L, fxarity, start, std::forward<Args>(args)...);
13150  }
13151  return matchfx(types<Fx>(), index_value<I>(), return_types(), args_list(), L, fxarity, start, std::forward<Args>(args)...);
13152  }
int overload_match_arity(Match &&matchfx, lua_State *L, int fxarity, int start, Args &&... args)
Definition: sol.hpp:13195
int no_panic(lua_State *, int, type, type, const char *=nullptr) noexcept
Definition: sol.hpp:6402

§ overload_match_arity_single() [1/3]

template<std::size_t... M, typename Match , typename... Args>
int sol::call_detail::overload_detail::overload_match_arity_single ( types<>  ,
std::index_sequence<>  ,
std::index_sequence< M... >  ,
Match &&  matchfx,
lua_State *  L,
int  fxarity,
int  start,
Args &&...  args 
)
inline
13155  {
13156  return overload_match_arity(types<>(), std::index_sequence<>(), std::index_sequence<M...>(), std::forward<Match>(matchfx), L, fxarity, start, std::forward<Args>(args)...);
13157  }
int overload_match_arity(Match &&matchfx, lua_State *L, int fxarity, int start, Args &&... args)
Definition: sol.hpp:13195

§ overload_match_arity_single() [2/3]

template<typename Fx , std::size_t I, std::size_t... M, typename Match , typename... Args>
int sol::call_detail::overload_detail::overload_match_arity_single ( types< Fx >  ,
std::index_sequence< I >  ,
std::index_sequence< M... >  ,
Match &&  matchfx,
lua_State *  L,
int  fxarity,
int  start,
Args &&...  args 
)
inline
13160  {
13161  typedef lua_bind_traits<meta::unwrap_unqualified_t<Fx>> traits;
13162  typedef meta::tuple_types<typename traits::return_type> return_types;
13163  typedef typename traits::free_args_list args_list;
13164  // compile-time eliminate any functions that we know ahead of time are of improper arity
13165  if (!traits::runtime_variadics_t::value && meta::find_in_pack_v<index_value<traits::free_arity>, index_value<M>...>::value) {
13166  return overload_match_arity(types<>(), std::index_sequence<>(), std::index_sequence<M...>(), std::forward<Match>(matchfx), L, fxarity, start, std::forward<Args>(args)...);
13167  }
13168  if (!traits::runtime_variadics_t::value && traits::free_arity != fxarity) {
13169  return overload_match_arity(types<>(), std::index_sequence<>(), std::index_sequence<traits::free_arity, M...>(), std::forward<Match>(matchfx), L, fxarity, start, std::forward<Args>(args)...);
13170  }
13171  return matchfx(types<Fx>(), index_value<I>(), return_types(), args_list(), L, fxarity, start, std::forward<Args>(args)...);
13172  }
int overload_match_arity(Match &&matchfx, lua_State *L, int fxarity, int start, Args &&... args)
Definition: sol.hpp:13195

§ overload_match_arity_single() [3/3]

template<typename Fx , typename Fx1 , typename... Fxs, std::size_t I, std::size_t I1, std::size_t... In, std::size_t... M, typename Match , typename... Args>
int sol::call_detail::overload_detail::overload_match_arity_single ( types< Fx, Fx1, Fxs... >  ,
std::index_sequence< I, I1, In... >  ,
std::index_sequence< M... >  ,
Match &&  matchfx,
lua_State *  L,
int  fxarity,
int  start,
Args &&...  args 
)
inline
13175  {
13176  typedef lua_bind_traits<meta::unwrap_unqualified_t<Fx>> traits;
13177  typedef meta::tuple_types<typename traits::return_type> return_types;
13178  typedef typename traits::free_args_list args_list;
13179  // compile-time eliminate any functions that we know ahead of time are of improper arity
13180  if (!traits::runtime_variadics_t::value && meta::find_in_pack_v<index_value<traits::free_arity>, index_value<M>...>::value) {
13181  return overload_match_arity(types<Fx1, Fxs...>(), std::index_sequence<I1, In...>(), std::index_sequence<M...>(), std::forward<Match>(matchfx), L, fxarity, start, std::forward<Args>(args)...);
13182  }
13183  if (!traits::runtime_variadics_t::value && traits::free_arity != fxarity) {
13184  return overload_match_arity(types<Fx1, Fxs...>(), std::index_sequence<I1, In...>(), std::index_sequence<traits::free_arity, M...>(), std::forward<Match>(matchfx), L, fxarity, start, std::forward<Args>(args)...);
13185  }
13186  stack::record tracking{};
13187  if (!stack::stack_detail::check_types<true>{}.check(args_list(), L, start, no_panic, tracking)) {
13188  return overload_match_arity(types<Fx1, Fxs...>(), std::index_sequence<I1, In...>(), std::index_sequence<M...>(), std::forward<Match>(matchfx), L, fxarity, start, std::forward<Args>(args)...);
13189  }
13190  return matchfx(types<Fx>(), index_value<I>(), return_types(), args_list(), L, fxarity, start, std::forward<Args>(args)...);
13191  }
int overload_match_arity(Match &&matchfx, lua_State *L, int fxarity, int start, Args &&... args)
Definition: sol.hpp:13195
int no_panic(lua_State *, int, type, type, const char *=nullptr) noexcept
Definition: sol.hpp:6402