OpenMiner  0.0.1a
Voxel game engine
Static Public Member Functions | List of all members
sol::detail::inheritance< T, Bases > Struct Template Reference

#include <sol.hpp>

Static Public Member Functions

static bool type_check_bases (types<>, const std::string &)
 
template<typename Base , typename... Args>
static bool type_check_bases (types< Base, Args... >, const std::string &ti)
 
static bool type_check (const std::string &ti)
 
static void * type_cast_bases (types<>, T *, const std::string &)
 
template<typename Base , typename... Args>
static void * type_cast_bases (types< Base, Args... >, T *data, const std::string &ti)
 
static void * type_cast (void *voiddata, const std::string &ti)
 
template<typename U >
static bool type_unique_cast_bases (void *, void *, const string_view &)
 
template<typename U , typename Base , typename... Args>
static bool type_unique_cast_bases (void *source_data, void *target_data, const string_view &ti)
 
template<typename U >
static bool type_unique_cast (void *source_data, void *target_data, const string_view &ti, const string_view &rebind_ti)
 

Member Function Documentation

§ type_cast()

template<typename T, typename... Bases>
static void* sol::detail::inheritance< T, Bases >::type_cast ( void *  voiddata,
const std::string ti 
)
inlinestatic
6259  {
6260  T* data = static_cast<T*>(voiddata);
6261  return static_cast<void*>(ti != usertype_traits<T>::qualified_name() ? type_cast_bases(types<Bases...>(), data, ti) : data);
6262  }
static void * type_cast_bases(types<>, T *, const std::string &)
Definition: sol.hpp:6249
static const std::string & qualified_name()
Definition: sol.hpp:6169

§ type_cast_bases() [1/2]

template<typename T, typename... Bases>
static void* sol::detail::inheritance< T, Bases >::type_cast_bases ( types<>  ,
T ,
const std::string  
)
inlinestatic
6249  {
6250  return nullptr;
6251  }

§ type_cast_bases() [2/2]

template<typename T, typename... Bases>
template<typename Base , typename... Args>
static void* sol::detail::inheritance< T, Bases >::type_cast_bases ( types< Base, Args... >  ,
T data,
const std::string ti 
)
inlinestatic
6254  {
6255  // Make sure to convert to T first, and then dynamic cast to the proper type
6256  return ti != usertype_traits<Base>::qualified_name() ? type_cast_bases(types<Args...>(), data, ti) : static_cast<void*>(static_cast<Base*>(data));
6257  }
static void * type_cast_bases(types<>, T *, const std::string &)
Definition: sol.hpp:6249
static const std::string & qualified_name()
Definition: sol.hpp:6169

§ type_check()

template<typename T, typename... Bases>
static bool sol::detail::inheritance< T, Bases >::type_check ( const std::string ti)
inlinestatic
6245  {
6246  return ti == usertype_traits<T>::qualified_name() || type_check_bases(types<Bases...>(), ti);
6247  }
static const std::string & qualified_name()
Definition: sol.hpp:6169
static bool type_check_bases(types<>, const std::string &)
Definition: sol.hpp:6236

§ type_check_bases() [1/2]

template<typename T, typename... Bases>
static bool sol::detail::inheritance< T, Bases >::type_check_bases ( types<>  ,
const std::string  
)
inlinestatic
6236  {
6237  return false;
6238  }

§ type_check_bases() [2/2]

template<typename T, typename... Bases>
template<typename Base , typename... Args>
static bool sol::detail::inheritance< T, Bases >::type_check_bases ( types< Base, Args... >  ,
const std::string ti 
)
inlinestatic
6241  {
6242  return ti == usertype_traits<Base>::qualified_name() || type_check_bases(types<Args...>(), ti);
6243  }
static const std::string & qualified_name()
Definition: sol.hpp:6169
static bool type_check_bases(types<>, const std::string &)
Definition: sol.hpp:6236

§ type_unique_cast()

template<typename T, typename... Bases>
template<typename U >
static bool sol::detail::inheritance< T, Bases >::type_unique_cast ( void *  source_data,
void *  target_data,
const string_view ti,
const string_view rebind_ti 
)
inlinestatic
6287  {
6288  typedef unique_usertype_traits<U> uu_traits;
6289  typedef typename uu_traits::template rebind_base<T> rebind_t;
6291  if (rebind_ti != this_rebind_ti) {
6292  // this is not even of the same container type
6293  return false;
6294  }
6295  return type_unique_cast_bases<U, Bases...>(source_data, target_data, ti);
6296  }
static bool type_unique_cast_bases(void *, void *, const string_view &)
Definition: sol.hpp:6265
static const std::string & qualified_name()
Definition: sol.hpp:6169
basic_string_view< char > string_view
Definition: sol.hpp:1186

§ type_unique_cast_bases() [1/2]

template<typename T, typename... Bases>
template<typename U >
static bool sol::detail::inheritance< T, Bases >::type_unique_cast_bases ( void *  ,
void *  ,
const string_view  
)
inlinestatic
6265  {
6266  return false;
6267  }

§ type_unique_cast_bases() [2/2]

template<typename T, typename... Bases>
template<typename U , typename Base , typename... Args>
static bool sol::detail::inheritance< T, Bases >::type_unique_cast_bases ( void *  source_data,
void *  target_data,
const string_view ti 
)
inlinestatic
6270  {
6271  typedef unique_usertype_traits<U> uu_traits;
6272  typedef typename uu_traits::template rebind_base<Base> base_ptr;
6274  if (base_ti == ti) {
6275  if (target_data != nullptr) {
6276  U* source = static_cast<U*>(source_data);
6277  base_ptr* target = static_cast<base_ptr*>(target_data);
6278  // perform proper derived -> base conversion
6279  *target = *source;
6280  }
6281  return true;
6282  }
6283  return type_unique_cast_bases<U, Args...>(source_data, target_data, ti);
6284  }
static bool type_unique_cast_bases(void *, void *, const string_view &)
Definition: sol.hpp:6265
static const std::string & qualified_name()
Definition: sol.hpp:6169
basic_string_view< char > string_view
Definition: sol.hpp:1186

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