IceShard 1
A personal game engine project, with development focused on 2D/2.5D games.
Loading...
Searching...
No Matches
shard.hxx File Reference
#include <ice/base.hxx>
#include <ice/stringid.hxx>

Go to the source code of this file.

Classes

struct  ice::detail::ShardName
struct  ice::detail::ShardPayload
struct  ice::ShardPayloadID
struct  ice::ShardID
struct  ice::Shard

Namespaces

namespace  ice
 SPDX-License-Identifier: MIT.
namespace  ice::detail
namespace  ice::_validate

Concepts

concept  ice::AllowedAsShardPayloadID
concept  ice::HasShardPayloadID

Functions

constexpr auto ice::shardid (ice::Shard shard) noexcept -> ice::ShardID
 Returns the ice::ShardID value of a shard.
constexpr auto ice::shardid (std::string_view definition) noexcept -> ice::ShardID
 Creates a ice::ShardID value from a utf8 string.
constexpr auto ice::shard (ice::ShardID id) noexcept -> ice::Shard
 Creates a ice::Shard value from ice::ShardID. Clears the payload ID from the created shard.
template<typename T>
constexpr auto ice::shard (std::string_view definition, T value)
 Creates a ice::Shard value from a utf8 string and the given value.
template<typename T>
constexpr auto ice::shard (ice::ShardID id, T payload) noexcept -> ice::Shard
 Creates a ice::Shard value from ice::ShardID and the given value.
template<typename T>
constexpr bool ice::shard_inspect (ice::Shard shard, T &payload) noexcept
 Tries to read the value from the given shard.
template<typename T>
constexpr auto ice::shard_shatter (ice::Shard shard, T fallback) noexcept -> T
 Reads the value from the given shard or returns the fallback value.
constexpr auto ice::operator""_shard (ice::utf8 const *str, size_t size) noexcept -> ice::Shard
constexpr auto ice::operator""_shardid (ice::utf8 const *str, size_t size) noexcept -> ice::ShardID
constexpr auto ice::shard_payloadid (std::string_view sv) noexcept -> ice::ShardPayloadID
constexpr auto ice::operator""_shardid (char const *str, size_t size) noexcept -> ice::ShardID
template<typename T>
requires HasShardPayloadID<T>
constexpr auto ice::detail::shard_payload (T payload) noexcept -> ice::detail::ShardPayload
template<typename T>
requires HasShardPayloadID<T>
constexpr auto ice::detail::shard_value (ShardPayload payload) noexcept -> T
template<typename T>
requires ice::HasShardPayloadID<T>
constexpr auto ice::shard (std::string_view definition, T value) noexcept -> ice::Shard
 Creates a ice::Shard value from a utf8 string and the given value.
template<typename T>
requires ice::HasShardPayloadID<T>
constexpr auto ice::shard (ice::ShardID id, T value) noexcept -> ice::Shard
 Creates a ice::Shard value from ice::ShardID and the given value.
constexpr auto ice::operator""_shard (char const *str, size_t size) noexcept -> ice::Shard
template<typename T>
requires ice::HasShardPayloadID<T>
constexpr auto ice::operator| (ice::Shard shard, T payload) noexcept -> ice::Shard
template<typename T>
requires ice::HasShardPayloadID<T>
constexpr auto ice::operator| (ice::ShardID shardid, T payload) noexcept -> ice::Shard
constexpr auto ice::operator== (ice::ShardID left, ice::ShardID right) noexcept -> bool
constexpr auto ice::operator== (ice::Shard left, ice::Shard right) noexcept -> bool
constexpr auto ice::operator== (ice::Shard left, ice::ShardID right) noexcept -> bool
template<typename T>
requires ice::HasShardPayloadID<T>
constexpr bool ice::shard_inspect (ice::Shard shard, T &value) noexcept
 Tries to read the value from the given shard.
template<typename T>
requires ice::HasShardPayloadID<T>
constexpr auto ice::shard_shatter (ice::Shard shard, T fallback) noexcept -> T
 Reads the value from the given shard or returns the fallback value.
template<>
constexpr auto ice::hash (ice::ShardID shardid) noexcept -> ice::u64
constexpr auto ice::hash32 (ice::ShardID shardid) noexcept -> ice::u32
template<>
constexpr auto ice::value_or_default< ice::ShardID, ice::ShardID > (ice::ShardID value, ice::ShardID default_value) noexcept -> ice::ShardID

Variables

static constexpr ice::Shard ice::Shard_Invalid { .id = { }, .payload = { } }
static constexpr ice::ShardPayloadID ice::ShardPayloadID_NotSet = { 0 }
template<typename T>
static constexpr ice::ShardPayloadID ice::Constant_ShardPayloadID = ice::ShardPayloadID_NotSet
template<>
constexpr ice::ShardPayloadID ice::Constant_ShardPayloadID< bool > = ice::shard_payloadid("bool")
template<>
constexpr ice::ShardPayloadID ice::Constant_ShardPayloadID< ice::i32 > = ice::shard_payloadid("ice::i32")
template<>
constexpr ice::ShardPayloadID ice::Constant_ShardPayloadID< ice::u32 > = ice::shard_payloadid("ice::u32")
template<>
constexpr ice::ShardPayloadID ice::Constant_ShardPayloadID< ice::f32 > = ice::shard_payloadid("ice::f32")
template<>
constexpr ice::ShardPayloadID ice::Constant_ShardPayloadID< ice::i64 > = ice::shard_payloadid("ice::i64")
template<>
constexpr ice::ShardPayloadID ice::Constant_ShardPayloadID< ice::u64 > = ice::shard_payloadid("ice::u64")
template<>
constexpr ice::ShardPayloadID ice::Constant_ShardPayloadID< ice::f64 > = ice::shard_payloadid("ice::f64")
template<>
constexpr ice::ShardPayloadID ice::Constant_ShardPayloadID< char const * > = ice::shard_payloadid("char const*")
template<>
constexpr ice::ShardPayloadID ice::Constant_ShardPayloadID< std::string_view const * > = ice::shard_payloadid("std::string_view const*")
template<>
constexpr ice::ShardPayloadID ice::Constant_ShardPayloadID< ice::StringID_Hash > = ice::shard_payloadid("ice::StringID_Hash")
static constexpr ice::Shard ice::_validate::shard_without_payload = "test/shard"_shard
static constexpr ice::Shard ice::_validate::shard_with_payload_u32 = "test/shard"_shard | ice::u32{ 42 }
static constexpr ice::Shard ice::_validate::shard_with_payload_i32 = "test/shard"_shard | ice::i32{ 42 }
static constexpr ice::Shard ice::_validate::shard2_without_payload = "test/shard2"_shard
static constexpr ice::Shard ice::_validate::shard2_with_payload_u32 = "test/shard2"_shard | ice::u32{ 42 }
static constexpr ice::Shard ice::_validate::shard2_with_payload_i32 = "test/shard2"_shard | ice::i32{ 42 }
static constexpr ice::ShardID ice::_validate::shardid_test_1 = "test/shard`ice::u32"_shardid
static constexpr ice::ShardID ice::_validate::shardid_test_1_from_shard = ice::shardid(shard_with_payload_u32)

Function Documentation

◆ ice::value_or_default< ice::ShardID, ice::ShardID >()

template<>
auto ice::value_or_default< ice::ShardID, ice::ShardID > ( ice::ShardID value,
ice::ShardID default_value ) -> ice::ShardID
constexprnoexcept