IceShard 1
A personal game engine project, with development focused on 2D/2.5D games.
Loading...
Searching...
No Matches
base.hxx File Reference
#include <ice/types.hxx>
#include <ice/types_extended.hxx>
#include <ice/constants.hxx>
#include <ice/workarounds.hxx>
#include <ice/build/build.hxx>
#include <ice/assert_core.hxx>
#include <ice/utility.hxx>
#include <ice/hash.hxx>
#include <ice/concept/enum_bools.hxx>
#include <ice/concept/enum_flags.hxx>
#include <ice/concept/strong_type_value.hxx>
#include <ice/error.hxx>
#include <ice/error_codes.hxx>
#include <algorithm>
#include <cstring>
#include <utility>
#include <bit>

Go to the source code of this file.

Classes

struct  ice::member_info< Member >
struct  ice::member_info< Ret(Class::*)(Args...)>
struct  ice::member_info< Ret(Class::*)(Args...) noexcept >
struct  ice::member_info< Value Class::* >

Namespaces

namespace  ice
 SPDX-License-Identifier: MIT.

Typedefs

template<typename T>
using ice::clear_type_t = std::remove_pointer_t<std::remove_reference_t<std::remove_cv_t<T>>>
template<typename T>
using ice::clean_type = clear_type_t<T>
template<typename Member>
using ice::member_class_type_t = typename member_info<Member>::class_type
template<typename Member>
using ice::member_result_type_t = typename member_info<Member>::result_type
template<typename Member, ice::u64 Idx>
using ice::member_arg_type_t = std::tuple_element_t<Idx, typename member_info<Member>::argument_types>

Functions

template<typename T, ice::u32 Size>
constexpr auto ice::count (T const (&)[Size]) noexcept -> ice::u32
template<typename T, typename U = T>
requires (std::convertible_to<U, T>)
constexpr auto ice::value_or_default (T value, U default_value) noexcept -> T=delete
template<typename T, typename U = T>
requires (std::convertible_to<U*, T*>)
constexpr auto ice::value_or_default (T *value, U *default_value) noexcept -> T *
template<typename T, typename U = T>
requires (std::convertible_to<U, T> && std::is_arithmetic_v<T>)
constexpr auto ice::value_or_default (T value, U &&default_value) noexcept -> T
template<typename T>
constexpr auto ice::to_const (T *value) noexcept -> T const *

Variables

template<typename T, typename = void>
constexpr bool ice::is_type_complete = false
template<typename T>
constexpr bool ice::is_type_complete< T, std::void_t< decltype(sizeof(T))> > = true
template<typename Member>
constexpr bool ice::is_method_member_v = member_info<Member>::member_type == 1
template<typename Member>
constexpr bool ice::is_field_member_v = member_info<Member>::member_type == 2