OpenMiner  0.0.1a
Voxel game engine
Public Types | Public Member Functions | Private Attributes | List of all members
sol::basic_table_iterator< reference_type > Class Template Reference

#include <sol.hpp>

Inheritance diagram for sol::basic_table_iterator< reference_type >:

Public Types

typedef object key_type
 
typedef object mapped_type
 
typedef std::pair< object, objectvalue_type
 
typedef std::input_iterator_tag iterator_category
 
typedef std::ptrdiff_t difference_type
 
typedef value_typepointer
 
typedef value_typereference
 
typedef const value_typeconst_reference
 

Public Member Functions

 basic_table_iterator ()
 
 basic_table_iterator (reference_type x)
 
basic_table_iteratoroperator++ ()
 
basic_table_iterator operator++ (int)
 
reference operator* ()
 
const_reference operator* () const
 
bool operator== (const basic_table_iterator &right) const
 
bool operator!= (const basic_table_iterator &right) const
 
 ~basic_table_iterator ()
 

Private Attributes

std::pair< object, objectkvp
 
reference_type ref
 
int tableidx = 0
 
int keyidx = 0
 
std::ptrdiff_t idx = 0
 

Member Typedef Documentation

§ const_reference

template<typename reference_type >
typedef const value_type& sol::basic_table_iterator< reference_type >::const_reference

§ difference_type

template<typename reference_type >
typedef std::ptrdiff_t sol::basic_table_iterator< reference_type >::difference_type

§ iterator_category

template<typename reference_type >
typedef std::input_iterator_tag sol::basic_table_iterator< reference_type >::iterator_category

§ key_type

template<typename reference_type >
typedef object sol::basic_table_iterator< reference_type >::key_type

§ mapped_type

template<typename reference_type >
typedef object sol::basic_table_iterator< reference_type >::mapped_type

§ pointer

template<typename reference_type >
typedef value_type* sol::basic_table_iterator< reference_type >::pointer

§ reference

template<typename reference_type >
typedef value_type& sol::basic_table_iterator< reference_type >::reference

§ value_type

template<typename reference_type >
typedef std::pair<object, object> sol::basic_table_iterator< reference_type >::value_type

Constructor & Destructor Documentation

§ basic_table_iterator() [1/2]

template<typename reference_type >
sol::basic_table_iterator< reference_type >::basic_table_iterator ( )
inline
19916  : keyidx(-1), idx(-1) {
19917  }
int keyidx
Definition: sol.hpp:19911
std::ptrdiff_t idx
Definition: sol.hpp:19912

§ basic_table_iterator() [2/2]

template<typename reference_type >
sol::basic_table_iterator< reference_type >::basic_table_iterator ( reference_type  x)
inline
19920  : ref(std::move(x)) {
19921  ref.push();
19922  tableidx = lua_gettop(ref.lua_state());
19923  stack::push(ref.lua_state(), lua_nil);
19924  this->operator++();
19925  if (idx == -1) {
19926  return;
19927  }
19928  --idx;
19929  }
basic_table_iterator & operator++()
Definition: sol.hpp:19931
reference_type ref
Definition: sol.hpp:19909
int push(lua_State *L, T &&t, Args &&... args)
Definition: sol.hpp:7770
int tableidx
Definition: sol.hpp:19910
std::ptrdiff_t idx
Definition: sol.hpp:19912

§ ~basic_table_iterator()

template<typename reference_type >
sol::basic_table_iterator< reference_type >::~basic_table_iterator ( )
inline
19971  {
19972  if (keyidx != -1) {
19973  stack::remove(ref.lua_state(), keyidx, 1);
19974  }
19975  if (ref.lua_state() != nullptr && ref.valid()) {
19976  stack::remove(ref.lua_state(), tableidx, 1);
19977  }
19978  }
reference_type ref
Definition: sol.hpp:19909
int tableidx
Definition: sol.hpp:19910
int keyidx
Definition: sol.hpp:19911
void remove(lua_State *L, int rawindex, int count)
Definition: sol.hpp:6576

Member Function Documentation

§ operator!=()

template<typename reference_type >
bool sol::basic_table_iterator< reference_type >::operator!= ( const basic_table_iterator< reference_type > &  right) const
inline
19967  {
19968  return idx != right.idx;
19969  }
std::ptrdiff_t idx
Definition: sol.hpp:19912

§ operator*() [1/2]

template<typename reference_type >
reference sol::basic_table_iterator< reference_type >::operator* ( )
inline
19955  {
19956  return kvp;
19957  }
std::pair< object, object > kvp
Definition: sol.hpp:19908

§ operator*() [2/2]

template<typename reference_type >
const_reference sol::basic_table_iterator< reference_type >::operator* ( ) const
inline
19959  {
19960  return kvp;
19961  }
std::pair< object, object > kvp
Definition: sol.hpp:19908

§ operator++() [1/2]

template<typename reference_type >
basic_table_iterator& sol::basic_table_iterator< reference_type >::operator++ ( )
inline
19931  {
19932  if (idx == -1)
19933  return *this;
19934 
19935  if (lua_next(ref.lua_state(), tableidx) == 0) {
19936  idx = -1;
19937  keyidx = -1;
19938  return *this;
19939  }
19940  ++idx;
19941  kvp.first = object(ref.lua_state(), -2);
19942  kvp.second = object(ref.lua_state(), -1);
19943  lua_pop(ref.lua_state(), 1);
19944  // leave key on the stack
19945  keyidx = lua_gettop(ref.lua_state());
19946  return *this;
19947  }
reference_type ref
Definition: sol.hpp:19909
basic_object< reference > object
Definition: sol.hpp:350
int tableidx
Definition: sol.hpp:19910
int keyidx
Definition: sol.hpp:19911
std::pair< object, object > kvp
Definition: sol.hpp:19908
std::ptrdiff_t idx
Definition: sol.hpp:19912

§ operator++() [2/2]

template<typename reference_type >
basic_table_iterator sol::basic_table_iterator< reference_type >::operator++ ( int  )
inline
19949  {
19950  auto saved = *this;
19951  this->operator++();
19952  return saved;
19953  }
basic_table_iterator & operator++()
Definition: sol.hpp:19931

§ operator==()

template<typename reference_type >
bool sol::basic_table_iterator< reference_type >::operator== ( const basic_table_iterator< reference_type > &  right) const
inline
19963  {
19964  return idx == right.idx;
19965  }
std::ptrdiff_t idx
Definition: sol.hpp:19912

Member Data Documentation

§ idx

template<typename reference_type >
std::ptrdiff_t sol::basic_table_iterator< reference_type >::idx = 0
private

§ keyidx

template<typename reference_type >
int sol::basic_table_iterator< reference_type >::keyidx = 0
private

§ kvp

template<typename reference_type >
std::pair<object, object> sol::basic_table_iterator< reference_type >::kvp
private

§ ref

template<typename reference_type >
reference_type sol::basic_table_iterator< reference_type >::ref
private

§ tableidx

template<typename reference_type >
int sol::basic_table_iterator< reference_type >::tableidx = 0
private

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