13 { t.operator
ice::Data() } -> std::convertible_to<ice::Data>;
23 template<
typename Type>
33 .location = std::addressof(var),
40 template<
typename Type, ice::usize::base_type Size>
41 constexpr auto data_view(Type
const(&var)[Size])
noexcept
44 .location = std::addressof(var),
55 .size = {mem.size.value - offset.value},
56 .alignment = mem.alignment
65 ice::u32 align_value =
static_cast<std::underlying_type_t<ice::ualign>
>(
data.alignment);
68 while ((std::bit_cast<ice::uptr>(
data.location) & ((align_value << 1) - 1)) == 0)
74 if (align_value ==
static_cast<std::underlying_type_t<ice::ualign>
>(
ice::ualign::b_256))
85 requires (std::is_trivially_copyable_v<T> && !std::is_pointer_v<T>)
89 out_value = *
reinterpret_cast<T const*
>(source.
location);
96 template<
typename T, ice::u64 Size>
97 requires (std::is_trivially_copyable_v<T> && !std::is_pointer_v<T>)
109 requires (std::is_trivially_copyable_v<T>)
113 out_value_ptr =
reinterpret_cast<T const*
>(source.
location);
114 source.
location = out_value_ptr + 1;
120 template<
typename T,
typename OffsetType = ice::usize::base_type>
121 requires (std::is_trivially_copyable_v<T> && !std::is_pointer_v<T>)
132 out_value = *
reinterpret_cast<T const*
>(source.
location);
139 template<
typename T,
typename OffsetType = ice::usize::base_type>
140 requires (std::is_trivially_copyable_v<T>)
151 out_value_ptr =
reinterpret_cast<T const*
>(source.
location);
152 source.
location = out_value_ptr + 1;
#define ICE_ASSERT_CORE(expression)
Definition assert_core.hxx:43
Definition mem_data.hxx:12
auto read_raw(ice::Data source, T &out_value) noexcept -> ice::Data
Definition mem_data.hxx:86
constexpr auto with_highest_alignment(ice::Data data) noexcept -> ice::Data
Definition mem_data.hxx:63
auto read_raw_array(ice::Data source, T(&out_array)[Size]) noexcept -> ice::Data
Definition mem_data.hxx:98
auto read_offset(ice::Data source, T &out_value) noexcept -> ice::Data
Definition mem_data.hxx:122
SPDX-License-Identifier: MIT.
Definition array.hxx:12
constexpr ice::usize size_of
Definition mem_info.hxx:12
auto data_view(ice::Array< Type, Logic > const &arr) noexcept -> ice::Data=delete
constexpr ice::ualign align_of
Definition mem_info.hxx:15
auto ptr_add(void *pointer, ice::usize offset) noexcept -> void *
Definition mem_arithmetic.hxx:34
std::uint32_t u32
Definition types.hxx:26
ualign
Definition mem_size_types.hxx:39
@ b_256
Definition mem_size_types.hxx:50
auto memcpy(void *dest, void const *source, ice::usize size) noexcept -> void *
Definition mem_data.hxx:17
ice::ualign alignment
Definition mem_data.hxx:20
void const * location
Definition mem_data.hxx:18
ice::usize size
Definition mem_data.hxx:19
Represents a unsigned size value on the given platform.
Definition mem_size_types.hxx:26
base_type value
Definition mem_size_types.hxx:35