51 template<
typename T, ice::u32 Size>
68 template<
typename T,
typename U = T>
requires (std::convertible_to<U, T>)
71 template<
typename T,
typename U = T>
requires (std::convertible_to<U*, T*>)
74 return value !=
nullptr ? value : default_value;
77 template<
typename T,
typename U = T>
requires (std::convertible_to<U, T> && std::is_arithmetic_v<T>)
80 return value !=
nullptr ? value :
static_cast<T
>(ice::forward<U>(default_value));
84 using clear_type_t = std::remove_pointer_t<std::remove_reference_t<std::remove_cv_t<T>>>;
92 constexpr auto to_const(T* value)
noexcept -> T
const*
94 return const_cast<T const*
>(value);
98 template<
typename T,
typename =
void>
119 template<
typename Member>
126 template<
typename Class,
typename Ret,
typename... Args>
144 template<
typename Class,
typename Ret,
typename... Args>
156 template<
typename Class,
typename Value>
168 template<
typename Member>
171 template<
typename Member>
174 template<
typename Member, ice::u64 Idx>
175 using member_arg_type_t = std::tuple_element_t<Idx, typename member_info<Member>::argument_types>;
177 template<
typename Member>
180 template<
typename Member>
Root namespace for all APIs part of the IceShard engine project.
Definition array.hxx:12
typename member_info< Member >::result_type member_result_type_t
Definition base.hxx:172
std::remove_pointer_t< std::remove_reference_t< std::remove_cv_t< T > > > clear_type_t
Definition base.hxx:84
constexpr bool is_type_complete
Compile-time check returning true or false depending if a types definition is considered complete.
Definition base.hxx:99
typename member_info< Member >::class_type member_class_type_t
Definition base.hxx:169
constexpr bool is_method_member_v
Definition base.hxx:178
constexpr auto value_or_default(T value, U default_value) noexcept -> T=delete
Utility function to check "truthienes" of a value and return its value or a provided default if consi...
constexpr auto to_const(T *value) noexcept -> T const *
Adds const property to the value protion of the given pointer type.
Definition base.hxx:92
constexpr auto count(T const (&)[Size]) noexcept -> ice::u32
Utility function to access number of elements of a typed C array.
Definition base.hxx:52
std::uint32_t u32
Definition types.hxx:26
std::tuple_element_t< Idx, typename member_info< Member >::argument_types > member_arg_type_t
Definition base.hxx:175
clear_type_t< T > clean_type
Definition base.hxx:87
constexpr bool is_field_member_v
Definition base.hxx:181
std::uint8_t u8
Definition types.hxx:24
Class class_type
Definition base.hxx:149
static constexpr ice::u8 argument_count
Definition base.hxx:152
std::tuple< Args... > argument_types
Definition base.hxx:153
static constexpr ice::u8 member_type
Definition base.hxx:147
Ret result_type
Definition base.hxx:150
static constexpr ice::u8 argument_count
Number of arguments.
Definition base.hxx:138
Ret result_type
Return type.
Definition base.hxx:135
Class class_type
Class type.
Definition base.hxx:132
static constexpr ice::u8 member_type
Definition base.hxx:129
std::tuple< Args... > argument_types
Tuple of all arguments types.
Definition base.hxx:141
Class class_type
Class type.
Definition base.hxx:162
Value result_type
Field type.
Definition base.hxx:165
static constexpr ice::u8 member_type
Definition base.hxx:159
Compile-time utility type to access various information about C++ type members.
Definition base.hxx:121
static constexpr ice::u8 member_type
Category of the passed Member type. (1 => method, 2 => field, 0 => invalid / not a member type).
Definition base.hxx:123