28 constexpr auto shardid(ice::Shard
shard)
noexcept -> ice::ShardID;
36 constexpr auto shardid(std::string_view definition)
noexcept -> ice::ShardID;
39 constexpr auto shard(ice::ShardID
id)
noexcept -> ice::Shard;
49 constexpr auto shard(std::string_view definition, T value);
59 constexpr auto shard(ice::ShardID
id, T payload)
noexcept -> ice::Shard;
129 mm3::mm3_x86_h32
const hash = mm3::cexpr_murmur3_x86_32(
139 size_t const payload_id_pos = sv.find_first_of(
'`');
140 if (payload_id_pos == std::string_view::npos)
145 .name = {
hash.h[0] },
151 mm3::mm3_x86_h32
const name_hash = mm3::cexpr_murmur3_x86_32(
152 sv.substr(0, payload_id_pos),
157 .name = { name_hash.h[0] },
168 constexpr auto operator""_shardid(
char const* str,
size_t size)
noexcept ->
ice::ShardID
193 return std::bit_cast<ShardPayload>(payload);
197 struct PayloadBitCastHelper
201 } temp{ .value = payload, .bytes = { } };
203 return std::bit_cast<ShardPayload>(temp);
212 return std::bit_cast<T>(payload);
216 struct PayloadBitCastHelper
220 } temp{ std::bit_cast<PayloadBitCastHelper>(payload) };
266 constexpr auto operator""_shard(
char const* str,
size_t size)
noexcept ->
ice::Shard
285 if (left.name == right.name)
289 || right.payload == left.payload;
296 return left.id == right.id;
301 return left.id == right;
362 return ice::bit_cast<ice::u64>(
shardid);
#define ICE_ASSERT_CORE(expression)
Definition assert_core.hxx:43
static constexpr ice::Shard shard2_with_payload_u32
Definition shard.hxx:378
static constexpr ice::ShardID shardid_test_1_from_shard
Definition shard.hxx:382
static constexpr ice::Shard shard2_with_payload_i32
Definition shard.hxx:379
static constexpr ice::Shard shard_with_payload_i32
Definition shard.hxx:375
static constexpr ice::Shard shard_without_payload
Definition shard.hxx:373
static constexpr ice::Shard shard_with_payload_u32
Definition shard.hxx:374
static constexpr ice::ShardID shardid_test_1
Definition shard.hxx:381
static constexpr ice::Shard shard2_without_payload
Definition shard.hxx:377
static constexpr uint32_t Constant_ShardPayloadID_DefaultSeed
The seed used to generate hash values for ice::detail::PayloadID.
Definition constants.hxx:34
static constexpr uint32_t Constant_ShardName_DefaultSeed
The seed used to generate hash values for ice::detail::ShardName.
Definition constants.hxx:31
Definition murmur3.hxx:18
Definition hashmap_details.hxx:13
constexpr auto shard_value(ShardPayload payload) noexcept -> T
Definition shard.hxx:208
constexpr auto shard_payload(T payload) noexcept -> ice::detail::ShardPayload
Definition shard.hxx:189
SPDX-License-Identifier: MIT.
Definition array.hxx:12
constexpr auto shard_payloadid(std::string_view sv) noexcept -> ice::ShardPayloadID
Definition shard.hxx:125
static constexpr ice::ShardPayloadID Constant_ShardPayloadID
Definition shard.hxx:179
constexpr auto operator==(ice::TimeType auto left, TimeType auto right) noexcept
Definition clock_types.hxx:159
std::uint64_t u64
Definition types.hxx:27
std::int32_t i32
Definition types.hxx:21
constexpr bool shard_inspect(ice::Shard shard, T &payload) noexcept
Tries to read the value from the given shard.
Definition shard.hxx:307
constexpr auto value_or_default(T value, U default_value) noexcept -> T=delete
constexpr auto operator|(T left, T right) noexcept -> T
Definition enum_flags.hxx:28
constexpr auto hash32(ice::String value) noexcept -> ice::u32
Definition string.hxx:105
constexpr auto shardid(ice::Shard shard) noexcept -> ice::ShardID
Returns the ice::ShardID value of a shard.
Definition shard.hxx:163
std::uint32_t u32
Definition types.hxx:26
constexpr auto hash(ice::HeapString<> const &value) noexcept -> ice::u64
Definition heap_string.hxx:251
static constexpr ice::Shard Shard_Invalid
Definition shard.hxx:123
static constexpr ice::ShardPayloadID ShardPayloadID_NotSet
Definition shard.hxx:173
constexpr auto shard(ice::ShardID id) noexcept -> ice::Shard
Creates a ice::Shard value from ice::ShardID. Clears the payload ID from the created shard.
Definition shard.hxx:230
char8_t utf8
Definition types.hxx:11
constexpr auto shard_shatter(ice::Shard shard, T fallback) noexcept -> T
Reads the value from the given shard or returns the fallback value.
Definition shard.hxx:318
ice::detail::ShardPayload payload
Definition shard.hxx:115
ice::ShardID id
Definition shard.hxx:114
ice::ShardPayloadID payload
Definition shard.hxx:109
ice::detail::ShardName name
Definition shard.hxx:108
ice::u32 value
Definition shard.hxx:103
ice::StrongValue TypeTag
Definition shard.hxx:101
Type tag to enable utility functions for strongly typed values.
Definition strong_type_value.hxx:11
ice::u32 value
Definition shard.hxx:87
ice::StrongValue TypeTag
Definition shard.hxx:85
ice::StrongValue TypeTag
Definition shard.hxx:92
ice::u64 value
Definition shard.hxx:94