OpenMiner  0.0.1a
Voxel game engine
Public Member Functions | Private Types | Private Member Functions | List of all members
sol::tie_t< Tn > Struct Template Reference

#include <sol.hpp>

Inheritance diagram for sol::tie_t< Tn >:

Public Member Functions

template<typename T >
tie_toperator= (T &&value)
 

Private Types

typedef std::tuple< std::add_lvalue_reference_t< Tn >... > base_t
 

Private Member Functions

template<typename T >
void set (std::false_type, T &&target)
 
template<typename T >
void set (std::true_type, T &&target)
 
template<std::size_t... I, typename T >
void set_extra (std::true_type, std::index_sequence< I... >, T &&target)
 
template<std::size_t... I, typename T >
void set_extra (std::false_type, std::index_sequence< I... >, T &&target)
 

Member Typedef Documentation

§ base_t

template<typename... Tn>
typedef std::tuple<std::add_lvalue_reference_t<Tn>...> sol::tie_t< Tn >::base_t
private

Member Function Documentation

§ operator=()

template<typename... Tn>
template<typename T >
tie_t& sol::tie_t< Tn >::operator= ( T &&  value)
inline
7078  {
7079  typedef is_tieable<meta::unqualified_t<T>> tieable;
7080  set(tieable(), std::forward<T>(value));
7081  return *this;
7082  }

§ set() [1/2]

template<typename... Tn>
template<typename T >
void sol::tie_t< Tn >::set ( std::false_type  ,
T &&  target 
)
inlineprivate
7047  {
7048  std::get<0>(*this) = std::forward<T>(target);
7049  }

§ set() [2/2]

template<typename... Tn>
template<typename T >
void sol::tie_t< Tn >::set ( std::true_type  ,
T &&  target 
)
inlineprivate
7052  {
7053  typedef tie_size<meta::unqualified_t<T>> value_size;
7054  typedef tie_size<std::tuple<Tn...>> tie_size;
7055  typedef std::conditional_t<(value_size::value < tie_size::value), value_size, tie_size> indices_size;
7056  typedef std::make_index_sequence<indices_size::value> indices;
7057  set_extra(detail::is_speshul<meta::unqualified_t<T>>(), indices(), std::forward<T>(target));
7058  }
void set_extra(std::true_type, std::index_sequence< I... >, T &&target)
Definition: sol.hpp:7061

§ set_extra() [1/2]

template<typename... Tn>
template<std::size_t... I, typename T >
void sol::tie_t< Tn >::set_extra ( std::true_type  ,
std::index_sequence< I... >  ,
T &&  target 
)
inlineprivate
7061  {
7062  using std::get;
7063  (void)detail::swallow{0,
7064  (get<I>(static_cast<base_t&>(*this)) = get<I>(types<Tn...>(), target), 0)..., 0};
7065  }
std::initializer_list< int > swallow
Definition: sol.hpp:462
stack_proxy get(types< Args... > t, const protected_function_result &fr)
Definition: sol.hpp:12588

§ set_extra() [2/2]

template<typename... Tn>
template<std::size_t... I, typename T >
void sol::tie_t< Tn >::set_extra ( std::false_type  ,
std::index_sequence< I... >  ,
T &&  target 
)
inlineprivate
7068  {
7069  using std::get;
7070  (void)detail::swallow{0,
7071  (get<I>(static_cast<base_t&>(*this)) = get<I>(target), 0)..., 0};
7072  }
std::initializer_list< int > swallow
Definition: sol.hpp:462
stack_proxy get(types< Args... > t, const protected_function_result &fr)
Definition: sol.hpp:12588

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