OpenMiner  0.0.1a
Voxel game engine
Public Types | Public Member Functions | Static Public Member Functions | Protected Member Functions | Private Types | Private Member Functions | Friends | List of all members
sol::basic_table_core< top_level, base_type > Class Template Reference

#include <sol.hpp>

Inheritance diagram for sol::basic_table_core< top_level, base_type >:
sol::basic_object_base< base_type > sol::basic_environment< base_type > sol::basic_userdata< base_type >

Public Types

typedef basic_table_iterator< base_type > iterator
 
typedef iterator const_iterator
 

Public Member Functions

 basic_table_core () noexcept=default
 
 basic_table_core (const basic_table_core &)=default
 
 basic_table_core (basic_table_core &&)=default
 
basic_table_coreoperator= (const basic_table_core &)=default
 
basic_table_coreoperator= (basic_table_core &&)=default
 
 basic_table_core (const stack_reference &r)
 
 basic_table_core (stack_reference &&r)
 
template<typename T , meta::enable_any< is_lua_reference< meta::unqualified_t< T >>> = meta::enabler>
 basic_table_core (lua_State *L, T &&r)
 
 basic_table_core (lua_State *L, const new_table &nt)
 
 basic_table_core (lua_State *L, int index=-1)
 
 basic_table_core (lua_State *L, ref_index index)
 
template<typename T , meta::enable< meta::neg< meta::any_same< meta::unqualified_t< T >, basic_table_core >>, meta::neg< std::is_same< base_type, stack_reference >>, meta::neg< std::is_same< lua_nil_t, meta::unqualified_t< T >>>, is_lua_reference< meta::unqualified_t< T >>> = meta::enabler>
 basic_table_core (T &&r) noexcept
 
 basic_table_core (lua_nil_t r) noexcept
 
iterator begin () const
 
iterator end () const
 
const_iterator cbegin () const
 
const_iterator cend () const
 
template<typename... Ret, typename... Keys>
decltype(auto) get (Keys &&... keys) const
 
template<typename T , typename Key >
decltype(auto) get_or (Key &&key, T &&otherwise) const
 
template<typename T , typename Key , typename D >
decltype(auto) get_or (Key &&key, D &&otherwise) const
 
template<typename T , typename... Keys>
decltype(auto) traverse_get (Keys &&... keys) const
 
template<typename... Keys>
basic_table_coretraverse_set (Keys &&... keys)
 
template<typename... Args>
basic_table_coreset (Args &&... args)
 
template<typename... Ret, typename... Keys>
decltype(auto) raw_get (Keys &&... keys) const
 
template<typename T , typename Key >
decltype(auto) raw_get_or (Key &&key, T &&otherwise) const
 
template<typename T , typename Key , typename D >
decltype(auto) raw_get_or (Key &&key, D &&otherwise) const
 
template<typename T , typename... Keys>
decltype(auto) traverse_raw_get (Keys &&... keys) const
 
template<typename... Keys>
basic_table_coretraverse_raw_set (Keys &&... keys)
 
template<typename... Args>
basic_table_coreraw_set (Args &&... args)
 
template<typename T >
basic_table_coreset_usertype (usertype< T > &user)
 
template<typename Key , typename T >
basic_table_coreset_usertype (Key &&key, usertype< T > &user)
 
template<typename Class , typename... Args>
basic_table_corenew_usertype (const std::string &name, Args &&... args)
 
template<typename Class , typename CTor0 , typename... CTor, typename... Args>
basic_table_corenew_usertype (const std::string &name, Args &&... args)
 
template<typename Class , typename... CArgs, typename... Args>
basic_table_corenew_usertype (const std::string &name, constructors< CArgs... > ctor, Args &&... args)
 
template<typename Class , typename... Args>
basic_table_corenew_simple_usertype (const std::string &name, Args &&... args)
 
template<typename Class , typename CTor0 , typename... CTor, typename... Args>
basic_table_corenew_simple_usertype (const std::string &name, Args &&... args)
 
template<typename Class , typename... CArgs, typename... Args>
basic_table_corenew_simple_usertype (const std::string &name, constructors< CArgs... > ctor, Args &&... args)
 
template<typename Class , typename... Args>
simple_usertype< Class > create_simple_usertype (Args &&... args)
 
template<typename Class , typename CTor0 , typename... CTor, typename... Args>
simple_usertype< Class > create_simple_usertype (Args &&... args)
 
template<typename Class , typename... CArgs, typename... Args>
simple_usertype< Class > create_simple_usertype (constructors< CArgs... > ctor, Args &&... args)
 
template<bool read_only = true, typename... Args>
table new_enum (const string_view &name, Args &&... args)
 
template<typename T , bool read_only = true>
table new_enum (const string_view &name, std::initializer_list< std::pair< string_view, T >> items)
 
template<typename Fx >
void for_each (Fx &&fx) const
 
size_t size () const
 
bool empty () const
 
template<typename T >
proxy< basic_table_core &, Toperator[] (T &&key) &
 
template<typename T >
proxy< const basic_table_core &, Toperator[] (T &&key) const &
 
template<typename T >
proxy< basic_table_core, Toperator[] (T &&key) &&
 
template<typename Sig , typename Key , typename... Args>
basic_table_coreset_function (Key &&key, Args &&... args)
 
template<typename Key , typename... Args>
basic_table_coreset_function (Key &&key, Args &&... args)
 
template<typename... Args>
basic_table_coreadd (Args &&... args)
 
table create (int narr=0, int nrec=0)
 
template<typename Key , typename Value , typename... Args>
table create (int narr, int nrec, Key &&key, Value &&value, Args &&... args)
 
template<typename Name >
table create (Name &&name, int narr=0, int nrec=0)
 
template<typename Name , typename Key , typename Value , typename... Args>
table create (Name &&name, int narr, int nrec, Key &&key, Value &&value, Args &&... args)
 
template<typename... Args>
table create_with (Args &&... args)
 
template<typename Name , typename... Args>
table create_named (Name &&name, Args &&... args)
 
- Public Member Functions inherited from sol::basic_object_base< base_type >
 basic_object_base () noexcept=default
 
 basic_object_base (const basic_object_base &)=default
 
 basic_object_base (basic_object_base &&)=default
 
 basic_object_base (T &&arg, Args &&... args)
 
basic_object_baseoperator= (const basic_object_base &)=default
 
basic_object_baseoperator= (basic_object_base &&)=default
 
decltype(auto) as () const
 
bool is () const
 

Static Public Member Functions

static table create (lua_State *L, int narr=0, int nrec=0)
 
template<typename Key , typename Value , typename... Args>
static table create (lua_State *L, int narr, int nrec, Key &&key, Value &&value, Args &&... args)
 
template<typename... Args>
static table create_with (lua_State *L, Args &&... args)
 

Protected Member Functions

 basic_table_core (detail::no_safety_tag, lua_nil_t n)
 
 basic_table_core (detail::no_safety_tag, lua_State *L, int index)
 
 basic_table_core (detail::no_safety_tag, lua_State *L, ref_index index)
 
template<typename T , meta::enable< meta::neg< meta::any_same< meta::unqualified_t< T >, basic_table_core >>, meta::neg< std::is_same< base_type, stack_reference >>, meta::neg< std::is_same< lua_nil_t, meta::unqualified_t< T >>>, is_lua_reference< meta::unqualified_t< T >>> = meta::enabler>
 basic_table_core (detail::no_safety_tag, T &&r) noexcept
 
template<typename T , meta::enable< is_lua_reference< meta::unqualified_t< T >>> = meta::enabler>
 basic_table_core (detail::no_safety_tag, lua_State *L, T &&r) noexcept
 

Private Types

typedef basic_object_base< base_type > base_t
 
template<typename... Args>
using is_global = meta::all< meta::boolean< top_level >, meta::is_c_str< Args >... >
 

Private Member Functions

template<typename Fx >
void for_each (std::true_type, Fx &&fx) const
 
template<typename Fx >
void for_each (std::false_type, Fx &&fx) const
 
template<bool raw, typename Ret0 , typename Ret1 , typename... Ret, std::size_t... I, typename Keys >
auto tuple_get (types< Ret0, Ret1, Ret... >, std::index_sequence< 0, 1, I... >, Keys &&keys) const -> decltype(stack::pop< std::tuple< Ret0, Ret1, Ret... >>(nullptr))
 
template<bool raw, typename Ret , std::size_t I, typename Keys >
decltype(auto) tuple_get (types< Ret >, std::index_sequence< I >, Keys &&keys) const
 
template<bool raw, typename Pairs , std::size_t... I>
void tuple_set (std::index_sequence< I... >, Pairs &&pairs)
 
template<bool global, bool raw, typename T , typename Key >
decltype(auto) traverse_get_deep (Key &&key) const
 
template<bool global, bool raw, typename T , typename Key , typename... Keys>
decltype(auto) traverse_get_deep (Key &&key, Keys &&... keys) const
 
template<bool global, bool raw, typename T , std::size_t I, typename Key >
decltype(auto) traverse_get_deep_optional (int &popcount, Key &&key) const
 
template<bool global, bool raw, typename T , std::size_t I, typename Key , typename... Keys>
decltype(auto) traverse_get_deep_optional (int &popcount, Key &&key, Keys &&... keys) const
 
template<bool global, bool raw, typename T , typename... Keys>
decltype(auto) traverse_get_optional (std::false_type, Keys &&... keys) const
 
template<bool global, bool raw, typename T , typename... Keys>
decltype(auto) traverse_get_optional (std::true_type, Keys &&... keys) const
 
template<bool global, bool raw, typename Key , typename Value >
void traverse_set_deep (Key &&key, Value &&value) const
 
template<bool global, bool raw, typename Key , typename... Keys>
void traverse_set_deep (Key &&key, Keys &&... keys) const
 
 basic_table_core (lua_State *L, detail::global_tag t) noexcept
 
template<typename R , typename... Args, typename Fx , typename Key , typename = std::result_of_t<Fx(Args...)>>
void set_fx (types< R(Args...)>, Key &&key, Fx &&fx)
 
template<typename Fx , typename Key , meta::enable< meta::is_specialization_of< meta::unqualified_t< Fx >, overload_set >> = meta::enabler>
void set_fx (types<>, Key &&key, Fx &&fx)
 
template<typename Fx , typename Key , typename... Args, meta::disable< meta::is_specialization_of< meta::unqualified_t< Fx >, overload_set >> = meta::enabler>
void set_fx (types<>, Key &&key, Fx &&fx, Args &&... args)
 
template<typename... Sig, typename... Args, typename Key >
void set_resolved_function (Key &&key, Args &&... args)
 

Friends

class state
 
class state_view
 

Member Typedef Documentation

§ base_t

template<bool top_level, typename base_type>
typedef basic_object_base<base_type> sol::basic_table_core< top_level, base_type >::base_t
private

§ const_iterator

template<bool top_level, typename base_type>
typedef iterator sol::basic_table_core< top_level, base_type >::const_iterator

§ is_global

template<bool top_level, typename base_type>
template<typename... Args>
using sol::basic_table_core< top_level, base_type >::is_global = meta::all<meta::boolean<top_level>, meta::is_c_str<Args>...>
private

§ iterator

template<bool top_level, typename base_type>
typedef basic_table_iterator<base_type> sol::basic_table_core< top_level, base_type >::iterator

Constructor & Destructor Documentation

§ basic_table_core() [1/17]

template<bool top_level, typename base_type>
sol::basic_table_core< top_level, base_type >::basic_table_core ( lua_State *  L,
detail::global_tag  t 
)
inlineprivatenoexcept
20129  : base_t(L, t) {
20130  }
basic_object_base< base_type > base_t
Definition: sol.hpp:20016

§ basic_table_core() [2/17]

template<bool top_level, typename base_type>
sol::basic_table_core< top_level, base_type >::basic_table_core ( detail::no_safety_tag  ,
lua_nil_t  n 
)
inlineprotected
20134  : base_t(n) {
20135  }
basic_object_base< base_type > base_t
Definition: sol.hpp:20016

§ basic_table_core() [3/17]

template<bool top_level, typename base_type>
sol::basic_table_core< top_level, base_type >::basic_table_core ( detail::no_safety_tag  ,
lua_State *  L,
int  index 
)
inlineprotected
20137  : base_t(L, index) {
20138  }
basic_object_base< base_type > base_t
Definition: sol.hpp:20016

§ basic_table_core() [4/17]

template<bool top_level, typename base_type>
sol::basic_table_core< top_level, base_type >::basic_table_core ( detail::no_safety_tag  ,
lua_State *  L,
ref_index  index 
)
inlineprotected
20140  : base_t(L, index) {
20141  }
basic_object_base< base_type > base_t
Definition: sol.hpp:20016

§ basic_table_core() [5/17]

template<bool top_level, typename base_type>
template<typename T , meta::enable< meta::neg< meta::any_same< meta::unqualified_t< T >, basic_table_core >>, meta::neg< std::is_same< base_type, stack_reference >>, meta::neg< std::is_same< lua_nil_t, meta::unqualified_t< T >>>, is_lua_reference< meta::unqualified_t< T >>> = meta::enabler>
sol::basic_table_core< top_level, base_type >::basic_table_core ( detail::no_safety_tag  ,
T &&  r 
)
inlineprotectednoexcept
20144  : base_t(std::forward<T>(r)) {
20145  }
basic_object_base< base_type > base_t
Definition: sol.hpp:20016

§ basic_table_core() [6/17]

template<bool top_level, typename base_type>
template<typename T , meta::enable< is_lua_reference< meta::unqualified_t< T >>> = meta::enabler>
sol::basic_table_core< top_level, base_type >::basic_table_core ( detail::no_safety_tag  ,
lua_State *  L,
T &&  r 
)
inlineprotectednoexcept
20148  : base_t(L, std::forward<T>(r)) {
20149  }
basic_object_base< base_type > base_t
Definition: sol.hpp:20016

§ basic_table_core() [7/17]

template<bool top_level, typename base_type>
sol::basic_table_core< top_level, base_type >::basic_table_core ( )
defaultnoexcept

§ basic_table_core() [8/17]

template<bool top_level, typename base_type>
sol::basic_table_core< top_level, base_type >::basic_table_core ( const basic_table_core< top_level, base_type > &  )
default

§ basic_table_core() [9/17]

template<bool top_level, typename base_type>
sol::basic_table_core< top_level, base_type >::basic_table_core ( basic_table_core< top_level, base_type > &&  )
default

§ basic_table_core() [10/17]

template<bool top_level, typename base_type>
sol::basic_table_core< top_level, base_type >::basic_table_core ( const stack_reference r)
inline
20163  : basic_table_core(r.lua_state(), r.stack_index()) {
20164  }
basic_table_core() noexcept=default

§ basic_table_core() [11/17]

template<bool top_level, typename base_type>
sol::basic_table_core< top_level, base_type >::basic_table_core ( stack_reference &&  r)
inline
20166  : basic_table_core(r.lua_state(), r.stack_index()) {
20167  }
basic_table_core() noexcept=default

§ basic_table_core() [12/17]

template<bool top_level, typename base_type>
template<typename T , meta::enable_any< is_lua_reference< meta::unqualified_t< T >>> = meta::enabler>
sol::basic_table_core< top_level, base_type >::basic_table_core ( lua_State *  L,
T &&  r 
)
inline
20170  : base_t(L, std::forward<T>(r)) {
20171 #if defined(SOL_SAFE_REFERENCES) && SOL_SAFE_REFERENCES
20172  auto pp = stack::push_pop(*this);
20173  constructor_handler handler{};
20174  stack::check<basic_table_core>(lua_state(), -1, handler);
20175 #endif // Safety
20176  }
basic_object_base< base_type > base_t
Definition: sol.hpp:20016
push_popper< top_level, T > push_pop(T &&x)
Definition: sol.hpp:6661

§ basic_table_core() [13/17]

template<bool top_level, typename base_type>
sol::basic_table_core< top_level, base_type >::basic_table_core ( lua_State *  L,
const new_table nt 
)
inline
20178  : base_t(L, -stack::push(L, nt)) {
20179  if (!is_stack_based<meta::unqualified_t<base_type>>::value) {
20180  lua_pop(L, 1);
20181  }
20182  }
int push(lua_State *L, T &&t, Args &&... args)
Definition: sol.hpp:7770
basic_object_base< base_type > base_t
Definition: sol.hpp:20016

§ basic_table_core() [14/17]

template<bool top_level, typename base_type>
sol::basic_table_core< top_level, base_type >::basic_table_core ( lua_State *  L,
int  index = -1 
)
inline
20185 #if defined(SOL_SAFE_REFERENCES) && SOL_SAFE_REFERENCES
20186  constructor_handler handler{};
20187  stack::check<basic_table_core>(L, index, handler);
20188 #endif // Safety
20189  }
basic_table_core() noexcept=default
struct sol::detail::no_safety_tag no_safety

§ basic_table_core() [15/17]

template<bool top_level, typename base_type>
sol::basic_table_core< top_level, base_type >::basic_table_core ( lua_State *  L,
ref_index  index 
)
inline
20192 #if defined(SOL_SAFE_REFERENCES) && SOL_SAFE_REFERENCES
20193  auto pp = stack::push_pop(*this);
20194  constructor_handler handler{};
20195  stack::check<basic_table_core>(lua_state(), -1, handler);
20196 #endif // Safety
20197  }
basic_table_core() noexcept=default
struct sol::detail::no_safety_tag no_safety
push_popper< top_level, T > push_pop(T &&x)
Definition: sol.hpp:6661

§ basic_table_core() [16/17]

template<bool top_level, typename base_type>
template<typename T , meta::enable< meta::neg< meta::any_same< meta::unqualified_t< T >, basic_table_core >>, meta::neg< std::is_same< base_type, stack_reference >>, meta::neg< std::is_same< lua_nil_t, meta::unqualified_t< T >>>, is_lua_reference< meta::unqualified_t< T >>> = meta::enabler>
sol::basic_table_core< top_level, base_type >::basic_table_core ( T &&  r)
inlinenoexcept
20200  : basic_table_core(detail::no_safety, std::forward<T>(r)) {
20201 #if defined(SOL_SAFE_REFERENCES) && SOL_SAFE_REFERENCES
20202  if (!is_table<meta::unqualified_t<T>>::value) {
20203  auto pp = stack::push_pop(*this);
20204  constructor_handler handler{};
20205  stack::check<basic_table_core>(base_t::lua_state(), -1, handler);
20206  }
20207 #endif // Safety
20208  }
basic_table_core() noexcept=default
struct sol::detail::no_safety_tag no_safety
push_popper< top_level, T > push_pop(T &&x)
Definition: sol.hpp:6661

§ basic_table_core() [17/17]

template<bool top_level, typename base_type>
sol::basic_table_core< top_level, base_type >::basic_table_core ( lua_nil_t  r)
inlinenoexcept
20211  }
basic_table_core() noexcept=default
struct sol::detail::no_safety_tag no_safety

Member Function Documentation

§ add()

template<bool top_level, typename base_type>
template<typename... Args>
basic_table_core& sol::basic_table_core< top_level, base_type >::add ( Args &&...  args)
inline
20468  {
20469  auto pp = stack::push_pop(*this);
20470  (void)detail::swallow{ 0,
20471  (stack::set_ref(base_t::lua_state(), std::forward<Args>(args)), 0)... };
20472  return *this;
20473  }
std::initializer_list< int > swallow
Definition: sol.hpp:462
int set_ref(lua_State *L, T &&arg, int tableindex=-2)
Definition: sol.hpp:11806
push_popper< top_level, T > push_pop(T &&x)
Definition: sol.hpp:6661

§ begin()

template<bool top_level, typename base_type>
iterator sol::basic_table_core< top_level, base_type >::begin ( ) const
inline
20213  {
20214  return iterator(*this);
20215  }
basic_table_iterator< base_type > iterator
Definition: sol.hpp:20152

§ cbegin()

template<bool top_level, typename base_type>
const_iterator sol::basic_table_core< top_level, base_type >::cbegin ( ) const
inline
20221  {
20222  return begin();
20223  }
iterator begin() const
Definition: sol.hpp:20213

§ cend()

template<bool top_level, typename base_type>
const_iterator sol::basic_table_core< top_level, base_type >::cend ( ) const
inline
20225  {
20226  return end();
20227  }
iterator end() const
Definition: sol.hpp:20217

§ create() [1/6]

template<bool top_level, typename base_type>
static table sol::basic_table_core< top_level, base_type >::create ( lua_State *  L,
int  narr = 0,
int  nrec = 0 
)
inlinestatic
20497  {
20498  lua_createtable(L, narr, nrec);
20499  table result(L);
20500  lua_pop(L, 1);
20501  return result;
20502  }

§ create() [2/6]

template<bool top_level, typename base_type>
template<typename Key , typename Value , typename... Args>
static table sol::basic_table_core< top_level, base_type >::create ( lua_State *  L,
int  narr,
int  nrec,
Key &&  key,
Value &&  value,
Args &&...  args 
)
inlinestatic
20505  {
20506  lua_createtable(L, narr, nrec);
20507  table result(L);
20508  result.set(std::forward<Key>(key), std::forward<Value>(value), std::forward<Args>(args)...);
20509  lua_pop(L, 1);
20510  return result;
20511  }

§ create() [3/6]

template<bool top_level, typename base_type>
table sol::basic_table_core< top_level, base_type >::create ( int  narr = 0,
int  nrec = 0 
)
inline
20520  {
20521  return create(base_t::lua_state(), narr, nrec);
20522  }
static table create(lua_State *L, int narr=0, int nrec=0)
Definition: sol.hpp:20497

§ create() [4/6]

template<bool top_level, typename base_type>
template<typename Key , typename Value , typename... Args>
table sol::basic_table_core< top_level, base_type >::create ( int  narr,
int  nrec,
Key &&  key,
Value &&  value,
Args &&...  args 
)
inline
20525  {
20526  return create(base_t::lua_state(), narr, nrec, std::forward<Key>(key), std::forward<Value>(value), std::forward<Args>(args)...);
20527  }
static table create(lua_State *L, int narr=0, int nrec=0)
Definition: sol.hpp:20497

§ create() [5/6]

template<bool top_level, typename base_type>
template<typename Name >
table sol::basic_table_core< top_level, base_type >::create ( Name &&  name,
int  narr = 0,
int  nrec = 0 
)
inline
20530  {
20531  table x = create(base_t::lua_state(), narr, nrec);
20532  this->set(std::forward<Name>(name), x);
20533  return x;
20534  }
static table create(lua_State *L, int narr=0, int nrec=0)
Definition: sol.hpp:20497

§ create() [6/6]

template<bool top_level, typename base_type>
template<typename Name , typename Key , typename Value , typename... Args>
table sol::basic_table_core< top_level, base_type >::create ( Name &&  name,
int  narr,
int  nrec,
Key &&  key,
Value &&  value,
Args &&...  args 
)
inline
20537  {
20538  table x = create(base_t::lua_state(), narr, nrec, std::forward<Key>(key), std::forward<Value>(value), std::forward<Args>(args)...);
20539  this->set(std::forward<Name>(name), x);
20540  return x;
20541  }
static table create(lua_State *L, int narr=0, int nrec=0)
Definition: sol.hpp:20497

§ create_named()

template<bool top_level, typename base_type>
template<typename Name , typename... Args>
table sol::basic_table_core< top_level, base_type >::create_named ( Name &&  name,
Args &&...  args 
)
inline
20549  {
20550  static const int narr = static_cast<int>(meta::count_2_for_pack<std::is_integral, Args...>::value);
20551  return create(std::forward<Name>(name), narr, (sizeof...(Args) / 2) - narr, std::forward<Args>(args)...);
20552  }
static table create(lua_State *L, int narr=0, int nrec=0)
Definition: sol.hpp:20497

§ create_simple_usertype() [1/3]

template<bool top_level, typename base_type>
template<typename Class , typename... Args>
simple_usertype<Class> sol::basic_table_core< top_level, base_type >::create_simple_usertype ( Args &&...  args)
inline
20372  {
20373  simple_usertype<Class> utype(base_t::lua_state(), std::forward<Args>(args)...);
20374  return utype;
20375  }

§ create_simple_usertype() [2/3]

template<bool top_level, typename base_type>
template<typename Class , typename CTor0 , typename... CTor, typename... Args>
simple_usertype<Class> sol::basic_table_core< top_level, base_type >::create_simple_usertype ( Args &&...  args)
inline
20378  {
20379  constructors<types<CTor0, CTor...>> ctor{};
20380  return create_simple_usertype<Class>(ctor, std::forward<Args>(args)...);
20381  }
constructor_list< Args... > constructors
Definition: sol.hpp:4495

§ create_simple_usertype() [3/3]

template<bool top_level, typename base_type>
template<typename Class , typename... CArgs, typename... Args>
simple_usertype<Class> sol::basic_table_core< top_level, base_type >::create_simple_usertype ( constructors< CArgs... >  ctor,
Args &&...  args 
)
inline
20384  {
20385  simple_usertype<Class> utype(base_t::lua_state(), ctor, std::forward<Args>(args)...);
20386  return utype;
20387  }

§ create_with() [1/2]

template<bool top_level, typename base_type>
template<typename... Args>
static table sol::basic_table_core< top_level, base_type >::create_with ( lua_State *  L,
Args &&...  args 
)
inlinestatic
20514  {
20515  static_assert(sizeof...(Args) % 2 == 0, "You must have an even number of arguments for a key, value ... list.");
20516  static const int narr = static_cast<int>(meta::count_2_for_pack<std::is_integral, Args...>::value);
20517  return create(L, narr, static_cast<int>((sizeof...(Args) / 2) - narr), std::forward<Args>(args)...);
20518  }
static table create(lua_State *L, int narr=0, int nrec=0)
Definition: sol.hpp:20497

§ create_with() [2/2]

template<bool top_level, typename base_type>
template<typename... Args>
table sol::basic_table_core< top_level, base_type >::create_with ( Args &&...  args)
inline
20544  {
20545  return create_with(base_t::lua_state(), std::forward<Args>(args)...);
20546  }
static table create_with(lua_State *L, Args &&... args)
Definition: sol.hpp:20514

§ empty()

template<bool top_level, typename base_type>
bool sol::basic_table_core< top_level, base_type >::empty ( ) const
inline
20436  {
20437  return cbegin() == cend();
20438  }
const_iterator cbegin() const
Definition: sol.hpp:20221
const_iterator cend() const
Definition: sol.hpp:20225

§ end()

template<bool top_level, typename base_type>
iterator sol::basic_table_core< top_level, base_type >::end ( ) const
inline
20217  {
20218  return iterator();
20219  }
basic_table_iterator< base_type > iterator
Definition: sol.hpp:20152

§ for_each() [1/3]

template<bool top_level, typename base_type>
template<typename Fx >
void sol::basic_table_core< top_level, base_type >::for_each ( std::true_type  ,
Fx &&  fx 
) const
inlineprivate
20024  {
20025  auto pp = stack::push_pop(*this);
20026  stack::push(base_t::lua_state(), lua_nil);
20027  while (lua_next(base_t::lua_state(), -2)) {
20028  object key(base_t::lua_state(), -2);
20029  object value(base_t::lua_state(), -1);
20030  std::pair<object&, object&> keyvalue(key, value);
20031  auto pn = stack::pop_n(base_t::lua_state(), 1);
20032  fx(keyvalue);
20033  }
20034  }
int push(lua_State *L, T &&t, Args &&... args)
Definition: sol.hpp:7770
push_popper_n< top_level > pop_n(lua_State *L, int x)
Definition: sol.hpp:6671
push_popper< top_level, T > push_pop(T &&x)
Definition: sol.hpp:6661

§ for_each() [2/3]

template<bool top_level, typename base_type>
template<typename Fx >
void sol::basic_table_core< top_level, base_type >::for_each ( std::false_type  ,
Fx &&  fx 
) const
inlineprivate
20037  {
20038  auto pp = stack::push_pop(*this);
20039  stack::push(base_t::lua_state(), lua_nil);
20040  while (lua_next(base_t::lua_state(), -2)) {
20041  object key(base_t::lua_state(), -2);
20042  object value(base_t::lua_state(), -1);
20043  auto pn = stack::pop_n(base_t::lua_state(), 1);
20044  fx(key, value);
20045  }
20046  }
int push(lua_State *L, T &&t, Args &&... args)
Definition: sol.hpp:7770
push_popper_n< top_level > pop_n(lua_State *L, int x)
Definition: sol.hpp:6671
push_popper< top_level, T > push_pop(T &&x)
Definition: sol.hpp:6661

§ for_each() [3/3]

template<bool top_level, typename base_type>
template<typename Fx >
void sol::basic_table_core< top_level, base_type >::for_each ( Fx &&  fx) const
inline
20425  {
20426  typedef meta::is_invokable<Fx(std::pair<object, object>)> is_paired;
20427  for_each(is_paired(), std::forward<Fx>(fx));
20428  }
void for_each(std::true_type, Fx &&fx) const
Definition: sol.hpp:20024

§ get()

template<bool top_level, typename base_type>
template<typename... Ret, typename... Keys>
decltype(auto) sol::basic_table_core< top_level, base_type >::get ( Keys &&...  keys) const
inline
20230  {
20231  static_assert(sizeof...(Keys) == sizeof...(Ret), "number of keys and number of return types do not match");
20232  auto pp = stack::push_pop<is_global<Keys...>::value>(*this);
20233  return tuple_get<false>(types<Ret...>(), std::make_index_sequence<sizeof...(Ret)>(), std::forward_as_tuple(std::forward<Keys>(keys)...));
20234  }
meta::all< meta::boolean< top_level >, meta::is_c_str< Args >... > is_global
Definition: sol.hpp:20021
push_popper< top_level, T > push_pop(T &&x)
Definition: sol.hpp:6661

§ get_or() [1/2]

template<bool top_level, typename base_type>
template<typename T , typename Key >
decltype(auto) sol::basic_table_core< top_level, base_type >::get_or ( Key &&  key,
T &&  otherwise 
) const
inline
20237  {
20238  typedef decltype(get<T>("")) U;
20239  optional<U> option = get<optional<U>>(std::forward<Key>(key));
20240  if (option) {
20241  return static_cast<U>(option.value());
20242  }
20243  return static_cast<U>(std::forward<T>(otherwise));
20244  }
decltype(auto) get(Keys &&... keys) const
Definition: sol.hpp:20230

§ get_or() [2/2]

template<bool top_level, typename base_type>
template<typename T , typename Key , typename D >
decltype(auto) sol::basic_table_core< top_level, base_type >::get_or ( Key &&  key,
D &&  otherwise 
) const
inline
20247  {
20248  optional<T> option = get<optional<T>>(std::forward<Key>(key));
20249  if (option) {
20250  return static_cast<T>(option.value());
20251  }
20252  return static_cast<T>(std::forward<D>(otherwise));
20253  }

§ new_enum() [1/2]

template<bool top_level, typename base_type>
template<bool read_only = true, typename... Args>
table sol::basic_table_core< top_level, base_type >::new_enum ( const string_view name,
Args &&...  args 
)
inline
20390  {
20391  table target = create_with(std::forward<Args>(args)...);
20392  if (read_only) {
20393  table x = create_with(
20395  meta_function::index, target);
20396  table shim = create_named(name, metatable_key, x);
20397  return shim;
20398  }
20399  else {
20400  set(name, target);
20401  return target;
20402  }
20403  }
static table create_with(lua_State *L, Args &&... args)
Definition: sol.hpp:20514
table create_named(Name &&name, Args &&... args)
Definition: sol.hpp:20549
const metatable_t metatable_key
Definition: sol.hpp:4700
int fail_on_newindex(lua_State *L)
Definition: sol.hpp:20007

§ new_enum() [2/2]

template<bool top_level, typename base_type>
template<typename T , bool read_only = true>
table sol::basic_table_core< top_level, base_type >::new_enum ( const string_view name,
std::initializer_list< std::pair< string_view, T >>  items 
)
inline
20406  {
20407  table target = create(static_cast<int>(items.size()), static_cast<int>(0));
20408  for (const auto& kvp : items) {
20409  target.set(kvp.first, kvp.second);
20410  }
20411  if (read_only) {
20412  table x = create_with(
20414  meta_function::index, target);
20415  table shim = create_named(name, metatable_key, x);
20416  return shim;
20417  }
20418  else {
20419  set(name, target);
20420  return target;
20421  }
20422  }
basic_table_core & set(Args &&... args)
Definition: sol.hpp:20270
static table create(lua_State *L, int narr=0, int nrec=0)
Definition: sol.hpp:20497
static table create_with(lua_State *L, Args &&... args)
Definition: sol.hpp:20514
table create_named(Name &&name, Args &&... args)
Definition: sol.hpp:20549
const metatable_t metatable_key
Definition: sol.hpp:4700
int fail_on_newindex(lua_State *L)
Definition: sol.hpp:20007

§ new_simple_usertype() [1/3]

template<bool top_level, typename base_type>
template<typename Class , typename... Args>
basic_table_core& sol::basic_table_core< top_level, base_type >::new_simple_usertype ( const std::string name,
Args &&...  args 
)
inline
20352  {
20353  simple_usertype<Class> utype(base_t::lua_state(), std::forward<Args>(args)...);
20354  set_usertype(name, utype);
20355  return *this;
20356  }
basic_table_core & set_usertype(usertype< T > &user)
Definition: sol.hpp:20322

§ new_simple_usertype() [2/3]

template<bool top_level, typename base_type>
template<typename Class , typename CTor0 , typename... CTor, typename... Args>
basic_table_core& sol::basic_table_core< top_level, base_type >::new_simple_usertype ( const std::string name,
Args &&...  args 
)
inline
20359  {
20360  constructors<types<CTor0, CTor...>> ctor{};
20361  return new_simple_usertype<Class>(name, ctor, std::forward<Args>(args)...);
20362  }
constructor_list< Args... > constructors
Definition: sol.hpp:4495

§ new_simple_usertype() [3/3]

template<bool top_level, typename base_type>
template<typename Class , typename... CArgs, typename... Args>
basic_table_core& sol::basic_table_core< top_level, base_type >::new_simple_usertype ( const std::string name,
constructors< CArgs... >  ctor,
Args &&...  args 
)
inline
20365  {
20366  simple_usertype<Class> utype(base_t::lua_state(), ctor, std::forward<Args>(args)...);
20367  set_usertype(name, utype);
20368  return *this;
20369  }
basic_table_core & set_usertype(usertype< T > &user)
Definition: sol.hpp:20322

§ new_usertype() [1/3]

template<bool top_level, typename base_type>
template<typename Class , typename... Args>
basic_table_core& sol::basic_table_core< top_level, base_type >::new_usertype ( const std::string name,
Args &&...  args 
)
inline
20332  {
20333  usertype<Class> utype(std::forward<Args>(args)...);
20334  set_usertype(name, utype);
20335  return *this;
20336  }
basic_table_core & set_usertype(usertype< T > &user)
Definition: sol.hpp:20322

§ new_usertype() [2/3]

template<bool top_level, typename base_type>
template<typename Class , typename CTor0 , typename... CTor, typename... Args>
basic_table_core& sol::basic_table_core< top_level, base_type >::new_usertype ( const std::string name,
Args &&...  args 
)
inline
20339  {
20340  constructors<types<CTor0, CTor...>> ctor{};
20341  return new_usertype<Class>(name, ctor, std::forward<Args>(args)...);
20342  }
constructor_list< Args... > constructors
Definition: sol.hpp:4495

§ new_usertype() [3/3]

template<bool top_level, typename base_type>
template<typename Class , typename... CArgs, typename... Args>
basic_table_core& sol::basic_table_core< top_level, base_type >::new_usertype ( const std::string name,
constructors< CArgs... >  ctor,
Args &&...  args 
)
inline
20345  {
20346  usertype<Class> utype(ctor, std::forward<Args>(args)...);
20347  set_usertype(name, utype);
20348  return *this;
20349  }
basic_table_core & set_usertype(usertype< T > &user)
Definition: sol.hpp:20322

§ operator=() [1/2]

template<bool top_level, typename base_type>
basic_table_core& sol::basic_table_core< top_level, base_type >::operator= ( const basic_table_core< top_level, base_type > &  )
default

§ operator=() [2/2]

template<bool top_level, typename base_type>
basic_table_core& sol::basic_table_core< top_level, base_type >::operator= ( basic_table_core< top_level, base_type > &&  )
default

§ operator[]() [1/3]

template<bool top_level, typename base_type>
template<typename T >
proxy<basic_table_core&, T> sol::basic_table_core< top_level, base_type >::operator[] ( T &&  key)
inline
20441  {
20442  return proxy<basic_table_core&, T>(*this, std::forward<T>(key));
20443  }

§ operator[]() [2/3]

template<bool top_level, typename base_type>
template<typename T >
proxy<const basic_table_core&, T> sol::basic_table_core< top_level, base_type >::operator[] ( T &&  key) const
inline
20446  {
20447  return proxy<const basic_table_core&, T>(*this, std::forward<T>(key));
20448  }

§ operator[]() [3/3]

template<bool top_level, typename base_type>
template<typename T >
proxy<basic_table_core, T> sol::basic_table_core< top_level, base_type >::operator[] ( T &&  key)
inline
20451  {
20452  return proxy<basic_table_core, T>(*this, std::forward<T>(key));
20453  }

§ raw_get()

template<bool top_level, typename base_type>
template<typename... Ret, typename... Keys>
decltype(auto) sol::basic_table_core< top_level, base_type >::raw_get ( Keys &&...  keys) const
inline
20276  {
20277  static_assert(sizeof...(Keys) == sizeof...(Ret), "number of keys and number of return types do not match");
20278  auto pp = stack::push_pop<is_global<Keys...>::value>(*this);
20279  return tuple_get<true>(types<Ret...>(), std::make_index_sequence<sizeof...(Ret)>(), std::forward_as_tuple(std::forward<Keys>(keys)...));
20280  }
meta::all< meta::boolean< top_level >, meta::is_c_str< Args >... > is_global
Definition: sol.hpp:20021
push_popper< top_level, T > push_pop(T &&x)
Definition: sol.hpp:6661

§ raw_get_or() [1/2]

template<bool top_level, typename base_type>
template<typename T , typename Key >
decltype(auto) sol::basic_table_core< top_level, base_type >::raw_get_or ( Key &&  key,
T &&  otherwise 
) const
inline
20283  {
20284  typedef decltype(raw_get<T>("")) U;
20285  optional<U> option = raw_get<optional<U>>(std::forward<Key>(key));
20286  if (option) {
20287  return static_cast<U>(option.value());
20288  }
20289  return static_cast<U>(std::forward<T>(otherwise));
20290  }
decltype(auto) raw_get(Keys &&... keys) const
Definition: sol.hpp:20276

§ raw_get_or() [2/2]

template<bool top_level, typename base_type>
template<typename T , typename Key , typename D >
decltype(auto) sol::basic_table_core< top_level, base_type >::raw_get_or ( Key &&  key,
D &&  otherwise 
) const
inline
20293  {
20294  optional<T> option = raw_get<optional<T>>(std::forward<Key>(key));
20295  if (option) {
20296  return static_cast<T>(option.value());
20297  }
20298  return static_cast<T>(std::forward<D>(otherwise));
20299  }

§ raw_set()

template<bool top_level, typename base_type>
template<typename... Args>
basic_table_core& sol::basic_table_core< top_level, base_type >::raw_set ( Args &&...  args)
inline
20316  {
20317  tuple_set<true>(std::make_index_sequence<sizeof...(Args) / 2>(), std::forward_as_tuple(std::forward<Args>(args)...));
20318  return *this;
20319  }

§ set()

template<bool top_level, typename base_type>
template<typename... Args>
basic_table_core& sol::basic_table_core< top_level, base_type >::set ( Args &&...  args)
inline
20270  {
20271  tuple_set<false>(std::make_index_sequence<sizeof...(Args) / 2>(), std::forward_as_tuple(std::forward<Args>(args)...));
20272  return *this;
20273  }

§ set_function() [1/2]

template<bool top_level, typename base_type>
template<typename Sig , typename Key , typename... Args>
basic_table_core& sol::basic_table_core< top_level, base_type >::set_function ( Key &&  key,
Args &&...  args 
)
inline
20456  {
20457  set_fx(types<Sig>(), std::forward<Key>(key), std::forward<Args>(args)...);
20458  return *this;
20459  }
void set_fx(types< R(Args...)>, Key &&key, Fx &&fx)
Definition: sol.hpp:20477

§ set_function() [2/2]

template<bool top_level, typename base_type>
template<typename Key , typename... Args>
basic_table_core& sol::basic_table_core< top_level, base_type >::set_function ( Key &&  key,
Args &&...  args 
)
inline
20462  {
20463  set_fx(types<>(), std::forward<Key>(key), std::forward<Args>(args)...);
20464  return *this;
20465  }
void set_fx(types< R(Args...)>, Key &&key, Fx &&fx)
Definition: sol.hpp:20477

§ set_fx() [1/3]

template<bool top_level, typename base_type>
template<typename R , typename... Args, typename Fx , typename Key , typename = std::result_of_t<Fx(Args...)>>
void sol::basic_table_core< top_level, base_type >::set_fx ( types< R(Args...)>  ,
Key &&  key,
Fx &&  fx 
)
inlineprivate
20477  {
20478  set_resolved_function<R(Args...)>(std::forward<Key>(key), std::forward<Fx>(fx));
20479  }
void set_resolved_function(Key &&key, Args &&... args)
Definition: sol.hpp:20492

§ set_fx() [2/3]

template<bool top_level, typename base_type>
template<typename Fx , typename Key , meta::enable< meta::is_specialization_of< meta::unqualified_t< Fx >, overload_set >> = meta::enabler>
void sol::basic_table_core< top_level, base_type >::set_fx ( types<>  ,
Key &&  key,
Fx &&  fx 
)
inlineprivate
20482  {
20483  set(std::forward<Key>(key), std::forward<Fx>(fx));
20484  }

§ set_fx() [3/3]

template<bool top_level, typename base_type>
template<typename Fx , typename Key , typename... Args, meta::disable< meta::is_specialization_of< meta::unqualified_t< Fx >, overload_set >> = meta::enabler>
void sol::basic_table_core< top_level, base_type >::set_fx ( types<>  ,
Key &&  key,
Fx &&  fx,
Args &&...  args 
)
inlineprivate
20487  {
20488  set(std::forward<Key>(key), as_function_reference(std::forward<Fx>(fx), std::forward<Args>(args)...));
20489  }
auto as_function_reference(Args &&... args)
Definition: sol.hpp:4977

§ set_resolved_function()

template<bool top_level, typename base_type>
template<typename... Sig, typename... Args, typename Key >
void sol::basic_table_core< top_level, base_type >::set_resolved_function ( Key &&  key,
Args &&...  args 
)
inlineprivate
20492  {
20493  set(std::forward<Key>(key), as_function_reference<function_sig<Sig...>>(std::forward<Args>(args)...));
20494  }
auto as_function_reference(Args &&... args)
Definition: sol.hpp:4977

§ set_usertype() [1/2]

template<bool top_level, typename base_type>
template<typename T >
basic_table_core& sol::basic_table_core< top_level, base_type >::set_usertype ( usertype< T > &  user)
inline
20322  {
20323  return set_usertype(usertype_traits<T>::name(), user);
20324  }
static const std::string & name()
Definition: sol.hpp:6165
basic_table_core & set_usertype(usertype< T > &user)
Definition: sol.hpp:20322

§ set_usertype() [2/2]

template<bool top_level, typename base_type>
template<typename Key , typename T >
basic_table_core& sol::basic_table_core< top_level, base_type >::set_usertype ( Key &&  key,
usertype< T > &  user 
)
inline
20327  {
20328  return set(std::forward<Key>(key), user);
20329  }

§ size()

template<bool top_level, typename base_type>
size_t sol::basic_table_core< top_level, base_type >::size ( ) const
inline
20430  {
20431  auto pp = stack::push_pop(*this);
20432  lua_len(base_t::lua_state(), -1);
20433  return stack::pop<size_t>(base_t::lua_state());
20434  }
push_popper< top_level, T > push_pop(T &&x)
Definition: sol.hpp:6661

§ traverse_get()

template<bool top_level, typename base_type>
template<typename T , typename... Keys>
decltype(auto) sol::basic_table_core< top_level, base_type >::traverse_get ( Keys &&...  keys) const
inline
20256  {
20257  auto pp = stack::push_pop<is_global<Keys...>::value>(*this);
20258  return traverse_get_optional<top_level, false, T>(meta::is_optional<meta::unqualified_t<T>>(), std::forward<Keys>(keys)...);
20259  }
meta::all< meta::boolean< top_level >, meta::is_c_str< Args >... > is_global
Definition: sol.hpp:20021
push_popper< top_level, T > push_pop(T &&x)
Definition: sol.hpp:6661

§ traverse_get_deep() [1/2]

template<bool top_level, typename base_type>
template<bool global, bool raw, typename T , typename Key >
decltype(auto) sol::basic_table_core< top_level, base_type >::traverse_get_deep ( Key &&  key) const
inlineprivate
20074  {
20075  stack::get_field<global, raw>(base_t::lua_state(), std::forward<Key>(key));
20076  return stack::get<T>(base_t::lua_state());
20077  }

§ traverse_get_deep() [2/2]

template<bool top_level, typename base_type>
template<bool global, bool raw, typename T , typename Key , typename... Keys>
decltype(auto) sol::basic_table_core< top_level, base_type >::traverse_get_deep ( Key &&  key,
Keys &&...  keys 
) const
inlineprivate
20080  {
20081  stack::get_field<global, raw>(base_t::lua_state(), std::forward<Key>(key));
20082  return traverse_get_deep<false, raw, T>(std::forward<Keys>(keys)...);
20083  }

§ traverse_get_deep_optional() [1/2]

template<bool top_level, typename base_type>
template<bool global, bool raw, typename T , std::size_t I, typename Key >
decltype(auto) sol::basic_table_core< top_level, base_type >::traverse_get_deep_optional ( int &  popcount,
Key &&  key 
) const
inlineprivate
20086  {
20087  typedef decltype(stack::get<T>(base_t::lua_state())) R;
20088  auto p = stack::probe_get_field<global, raw, T>(base_t::lua_state(), std::forward<Key>(key), lua_gettop(base_t::lua_state()));
20089  popcount += p.levels;
20090  if (!p.success)
20091  return R(nullopt);
20092  return stack::get<T>(base_t::lua_state());
20093  }
probe probe_get_field(lua_State *L, Key &&key, int tableindex)
Definition: sol.hpp:8094
decltype(auto) get(Keys &&... keys) const
Definition: sol.hpp:20230
constexpr nullopt_t nullopt
Definition: sol.hpp:3498

§ traverse_get_deep_optional() [2/2]

template<bool top_level, typename base_type>
template<bool global, bool raw, typename T , std::size_t I, typename Key , typename... Keys>
decltype(auto) sol::basic_table_core< top_level, base_type >::traverse_get_deep_optional ( int &  popcount,
Key &&  key,
Keys &&...  keys 
) const
inlineprivate
20096  {
20097  auto p = I > 0 ? stack::probe_get_field<global>(base_t::lua_state(), std::forward<Key>(key), -1) : stack::probe_get_field<global>(base_t::lua_state(), std::forward<Key>(key), lua_gettop(base_t::lua_state()));
20098  popcount += p.levels;
20099  if (!p.success)
20100  return T(nullopt);
20101  return traverse_get_deep_optional<false, raw, T, I + 1>(popcount, std::forward<Keys>(keys)...);
20102  }
probe probe_get_field(lua_State *L, Key &&key, int tableindex)
Definition: sol.hpp:8094
constexpr nullopt_t nullopt
Definition: sol.hpp:3498
int levels
Definition: sol.hpp:7631

§ traverse_get_optional() [1/2]

template<bool top_level, typename base_type>
template<bool global, bool raw, typename T , typename... Keys>
decltype(auto) sol::basic_table_core< top_level, base_type >::traverse_get_optional ( std::false_type  ,
Keys &&...  keys 
) const
inlineprivate
20105  {
20106  detail::clean<sizeof...(Keys)> c(base_t::lua_state());
20107  return traverse_get_deep<global, raw, T>(std::forward<Keys>(keys)...);
20108  }

§ traverse_get_optional() [2/2]

template<bool top_level, typename base_type>
template<bool global, bool raw, typename T , typename... Keys>
decltype(auto) sol::basic_table_core< top_level, base_type >::traverse_get_optional ( std::true_type  ,
Keys &&...  keys 
) const
inlineprivate
20111  {
20112  int popcount = 0;
20113  detail::ref_clean c(base_t::lua_state(), popcount);
20114  return traverse_get_deep_optional<global, raw, T, 0>(popcount, std::forward<Keys>(keys)...);
20115  }

§ traverse_raw_get()

template<bool top_level, typename base_type>
template<typename T , typename... Keys>
decltype(auto) sol::basic_table_core< top_level, base_type >::traverse_raw_get ( Keys &&...  keys) const
inline
20302  {
20303  auto pp = stack::push_pop<is_global<Keys...>::value>(*this);
20304  return traverse_get_optional<top_level, true, T>(meta::is_optional<meta::unqualified_t<T>>(), std::forward<Keys>(keys)...);
20305  }
meta::all< meta::boolean< top_level >, meta::is_c_str< Args >... > is_global
Definition: sol.hpp:20021
push_popper< top_level, T > push_pop(T &&x)
Definition: sol.hpp:6661

§ traverse_raw_set()

template<bool top_level, typename base_type>
template<typename... Keys>
basic_table_core& sol::basic_table_core< top_level, base_type >::traverse_raw_set ( Keys &&...  keys)
inline
20308  {
20309  auto pp = stack::push_pop<is_global<Keys...>::value>(*this);
20310  auto pn = stack::pop_n(base_t::lua_state(), static_cast<int>(sizeof...(Keys) - 2));
20311  traverse_set_deep<top_level, true>(std::forward<Keys>(keys)...);
20312  return *this;
20313  }
meta::all< meta::boolean< top_level >, meta::is_c_str< Args >... > is_global
Definition: sol.hpp:20021
push_popper_n< top_level > pop_n(lua_State *L, int x)
Definition: sol.hpp:6671
push_popper< top_level, T > push_pop(T &&x)
Definition: sol.hpp:6661

§ traverse_set()

template<bool top_level, typename base_type>
template<typename... Keys>
basic_table_core& sol::basic_table_core< top_level, base_type >::traverse_set ( Keys &&...  keys)
inline
20262  {
20263  auto pp = stack::push_pop<is_global<Keys...>::value>(*this);
20264  auto pn = stack::pop_n(base_t::lua_state(), static_cast<int>(sizeof...(Keys) - 2));
20265  traverse_set_deep<top_level, false>(std::forward<Keys>(keys)...);
20266  return *this;
20267  }
meta::all< meta::boolean< top_level >, meta::is_c_str< Args >... > is_global
Definition: sol.hpp:20021
push_popper_n< top_level > pop_n(lua_State *L, int x)
Definition: sol.hpp:6671
push_popper< top_level, T > push_pop(T &&x)
Definition: sol.hpp:6661

§ traverse_set_deep() [1/2]

template<bool top_level, typename base_type>
template<bool global, bool raw, typename Key , typename Value >
void sol::basic_table_core< top_level, base_type >::traverse_set_deep ( Key &&  key,
Value &&  value 
) const
inlineprivate
20118  {
20119  stack::set_field<global, raw>(base_t::lua_state(), std::forward<Key>(key), std::forward<Value>(value));
20120  }

§ traverse_set_deep() [2/2]

template<bool top_level, typename base_type>
template<bool global, bool raw, typename Key , typename... Keys>
void sol::basic_table_core< top_level, base_type >::traverse_set_deep ( Key &&  key,
Keys &&...  keys 
) const
inlineprivate
20123  {
20124  stack::get_field<global, raw>(base_t::lua_state(), std::forward<Key>(key));
20125  traverse_set_deep<false, raw>(std::forward<Keys>(keys)...);
20126  }

§ tuple_get() [1/2]

template<bool top_level, typename base_type>
template<bool raw, typename Ret0 , typename Ret1 , typename... Ret, std::size_t... I, typename Keys >
auto sol::basic_table_core< top_level, base_type >::tuple_get ( types< Ret0, Ret1, Ret... >  ,
std::index_sequence< 0, 1, I... >  ,
Keys &&  keys 
) const -> decltype(stack::pop<std::tuple<Ret0, Ret1, Ret...>>(nullptr))
inlineprivate
20050  {
20051  typedef decltype(stack::pop<std::tuple<Ret0, Ret1, Ret...>>(nullptr)) Tup;
20052  return Tup(
20053  traverse_get_optional<top_level, raw, Ret0>(meta::is_optional<meta::unqualified_t<Ret0>>(), detail::forward_get<0>(keys)),
20054  traverse_get_optional<top_level, raw, Ret1>(meta::is_optional<meta::unqualified_t<Ret1>>(), detail::forward_get<1>(keys)),
20055  traverse_get_optional<top_level, raw, Ret>(meta::is_optional<meta::unqualified_t<Ret>>(), detail::forward_get<I>(keys))...);
20056  }
typename unqualified< T >::type unqualified_t
Definition: sol.hpp:485
decltype(auto) pop(lua_State *L)
Definition: sol.hpp:8064
decltype(auto) traverse_get_optional(std::false_type, Keys &&... keys) const
Definition: sol.hpp:20105
decltype(auto) forward_get(Tuple &&tuple)
Definition: sol.hpp:1816

§ tuple_get() [2/2]

template<bool top_level, typename base_type>
template<bool raw, typename Ret , std::size_t I, typename Keys >
decltype(auto) sol::basic_table_core< top_level, base_type >::tuple_get ( types< Ret >  ,
std::index_sequence< I >  ,
Keys &&  keys 
) const
inlineprivate
20059  {
20060  return traverse_get_optional<top_level, raw, Ret>(meta::is_optional<meta::unqualified_t<Ret>>(), detail::forward_get<I>(keys));
20061  }

§ tuple_set()

template<bool top_level, typename base_type>
template<bool raw, typename Pairs , std::size_t... I>
void sol::basic_table_core< top_level, base_type >::tuple_set ( std::index_sequence< I... >  ,
Pairs &&  pairs 
)
inlineprivate
20064  {
20065  auto pp = stack::push_pop < top_level && (is_global<decltype(detail::forward_get<I * 2>(pairs))...>::value) > (*this);
20066  void(detail::swallow{ (stack::set_field<top_level, raw>(base_t::lua_state(),
20067  detail::forward_get<I * 2>(pairs),
20068  detail::forward_get<I * 2 + 1>(pairs),
20069  lua_gettop(base_t::lua_state())),
20070  0)... });
20071  }
std::initializer_list< int > swallow
Definition: sol.hpp:462

Friends And Related Function Documentation

§ state

template<bool top_level, typename base_type>
friend class state
friend

§ state_view

template<bool top_level, typename base_type>
friend class state_view
friend

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