IceShard 1
A personal game engine project, with development focused on 2D/2.5D games.
Loading...
Searching...
No Matches
ice::MultiHashMap< Type, Logic > Struct Template Reference

#include <ice/multi_hashmap.hxx>

Inheritance diagram for ice::MultiHashMap< Type, Logic >:
ice::HashMap< Type, Logic > ice::container::AssociativeResizableContainer ice::container::ResizableContainer ice::container::AssociativeContainer ice::container::BasicContainer

Classes

struct  ConstMultiIterator

Public Types

using EntryType = typename HashMap<Type, Logic>::EntryType
using KeyType = typename HashMap<Type, Logic>::KeyType
using ValueType = typename HashMap<Type, Logic>::ValueType
using ConstContainerValueType = typename HashMap<Type, Logic>::ConstContainerValueType
using SizeType = typename HashMap<Type, Logic>::SizeType
using Iterator = typename HashMap<Type, Logic>::Iterator
using ConstIterator = typename HashMap<Type, Logic>::ConstIterator
Public Types inherited from ice::HashMap< Type, Logic >
using KeyType = ice::u64
using ValueType = Type
using ConstContainerValueType = Type const
using Iterator = ConstIterator
using SizeType = ice::ncount

Public Member Functions

template<ice::concepts::HashableKeyType HashableKeyT>
constexpr auto count_values (HashableKeyT const &key) noexcept -> SizeType
template<typename Self, ice::concepts::HashableKeyType HashableKeyT>
constexpr auto find_values (this Self const &self, HashableKeyT const &key) noexcept -> ConstMultiIterator
template<typename Self, ice::concepts::HashableKeyType HashableKeyT, typename InValueType = typename std::remove_reference_t<Self>::ValueType>
requires (std::convertible_to<InValueType, ice::container::ValueType<Self>>)
constexpr auto insert (this Self &&self, HashableKeyT const &key, InValueType &&in_value) noexcept -> ice::container::ValueRef< Self >
template<ice::concepts::HashableKeyType HashableKeyT>
constexpr void remove_all (HashableKeyT const &key) noexcept
constexpr void remove_item (ConstMultiIterator &iterator)
Public Member Functions inherited from ice::HashMap< Type, Logic >
 HashMap (ice::Allocator &alloc) noexcept
 ~HashMap () noexcept
 HashMap (HashMap &&other) noexcept
 HashMap (HashMap const &other) noexcept
auto operator= (HashMap &&other) noexcept -> HashMap &
auto operator= (HashMap const &other) noexcept -> HashMap &
constexpr auto size () const noexcept -> SizeType
template<typename Self>
constexpr auto find (this Self &&self, KeyType key) noexcept -> ice::container::ValuePtr< Self >
template<typename Self>
constexpr bool remove (this Self &self, KeyType key) noexcept
template<typename Self, typename InValueType = Type>
constexpr auto store (this Self &self, KeyType key, InValueType &&in_value) noexcept -> ice::container::ValueRef< Self >
template<typename Self>
constexpr auto values (this Self &&self) noexcept -> ice::container::SpanType< Self >
constexpr auto capacity () const noexcept -> SizeType
constexpr void set_capacity (ice::ncount new_capacity) noexcept
constexpr void clear () noexcept
template<typename Self>
constexpr auto begin (this Self &&self) noexcept -> ice::container::Iterator< Self >
template<typename Self>
constexpr auto end (this Self &&self) noexcept -> ice::container::Iterator< Self >
constexpr auto memory_view () noexcept -> ice::Memory
constexpr auto entries_memory_view () noexcept -> ice::Memory
constexpr auto values_data_view () const noexcept -> ice::Data
constexpr auto entries_data_view () const noexcept -> ice::Data
Public Member Functions inherited from ice::container::AssociativeResizableContainer
template<ice::concepts::AssociativeResizableContainer Self, ice::concepts::HashableKeyType KeyType, typename InValueType = typename std::remove_reference_t<Self>::ValueType>
requires (std::convertible_to<InValueType, typename Self::ValueType>)
auto set (this Self &self, KeyType const &key, InValueType &&in_value) noexcept -> ice::container::ValueRef< Self >
template<ice::concepts::AssociativeResizableContainer Self, ice::concepts::HashableKeyType KeyType, typename InValueType = typename std::remove_reference_t<Self>::ValueType>
requires (std::convertible_to<InValueType, typename Self::ValueType>)
void set_if_missing (this Self &self, KeyType const &key, InValueType &&in_value) noexcept
template<ice::concepts::AssociativeContainer Self, ice::concepts::HashableKeyType KeyType, typename InValueType = typename std::remove_reference_t<Self>::ValueType>
auto get_or_set (this Self &&self, KeyType const &key, InValueType &&in_value) noexcept -> ice::container::ValueRef< Self >
template<ice::concepts::AssociativeContainer Self, ice::concepts::HashableKeyType KeyType>
bool remove (this Self &&self, KeyType const &key) noexcept
Public Member Functions inherited from ice::container::AssociativeContainer
template<ice::concepts::AssociativeContainer Self, ice::concepts::HashableKeyType KeyType>
bool has (this Self const &self, KeyType const &key) noexcept
template<ice::concepts::AssociativeContainer Self, ice::concepts::HashableKeyType KeyType>
bool missing (this Self const &self, KeyType const &key) noexcept
template<ice::concepts::AssociativeContainer Self, ice::concepts::HashableKeyType KeyType, typename InValueType = typename std::remove_reference_t<Self>::ValueType>
auto get (this Self const &self, KeyType const &key, InValueType const &fallback_value) noexcept -> ice::container::ValueRef< Self const >
template<ice::concepts::AssociativeContainer Self, ice::concepts::HashableKeyType KeyType>
auto try_get (this Self &&self, KeyType const &key) noexcept -> ice::container::ValuePtr< Self >
Public Member Functions inherited from ice::container::BasicContainer
template<ice::concepts::Container Self>
constexpr bool is_empty (this Self const &self) noexcept
template<ice::concepts::Container Self>
constexpr bool not_empty (this Self const &self) noexcept
Public Member Functions inherited from ice::container::ResizableContainer
template<ice::concepts::ResizableContainer Self>
constexpr bool is_full (this Self const &self) noexcept
template<ice::concepts::ResizableContainer Self>
constexpr bool not_full (this Self const &self) noexcept
template<ice::concepts::ResizableContainer Self>
constexpr void reserve (this Self &self, ice::ncount min_capacity) noexcept
template<ice::concepts::ResizableContainer Self>
constexpr void grow (this Self &self, ice::ncount min_capacity=ice::ncount_none) noexcept
template<ice::concepts::ResizableContainer Self>
constexpr void shrink (this Self &self) noexcept

Additional Inherited Members

Public Attributes inherited from ice::HashMap< Type, Logic >
ice::Allocator_allocator
ice::u32 _capacity
ice::u32 _count
ice::u32_hashes
EntryType_entries
ValueType_data
Static Public Attributes inherited from ice::HashMap< Type, Logic >
static constexpr ContainerLogic OperationLogic = Logic

Member Typedef Documentation

◆ ConstContainerValueType

template<typename Type, ice::ContainerLogic Logic = ice::Constant_DefaultContainerLogic<Type>>
using ice::MultiHashMap< Type, Logic >::ConstContainerValueType = typename HashMap<Type, Logic>::ConstContainerValueType

◆ ConstIterator

template<typename Type, ice::ContainerLogic Logic = ice::Constant_DefaultContainerLogic<Type>>
using ice::MultiHashMap< Type, Logic >::ConstIterator = typename HashMap<Type, Logic>::ConstIterator

◆ EntryType

template<typename Type, ice::ContainerLogic Logic = ice::Constant_DefaultContainerLogic<Type>>
using ice::MultiHashMap< Type, Logic >::EntryType = typename HashMap<Type, Logic>::EntryType

◆ Iterator

template<typename Type, ice::ContainerLogic Logic = ice::Constant_DefaultContainerLogic<Type>>
using ice::MultiHashMap< Type, Logic >::Iterator = typename HashMap<Type, Logic>::Iterator

◆ KeyType

template<typename Type, ice::ContainerLogic Logic = ice::Constant_DefaultContainerLogic<Type>>
using ice::MultiHashMap< Type, Logic >::KeyType = typename HashMap<Type, Logic>::KeyType

◆ SizeType

template<typename Type, ice::ContainerLogic Logic = ice::Constant_DefaultContainerLogic<Type>>
using ice::MultiHashMap< Type, Logic >::SizeType = typename HashMap<Type, Logic>::SizeType

◆ ValueType

template<typename Type, ice::ContainerLogic Logic = ice::Constant_DefaultContainerLogic<Type>>
using ice::MultiHashMap< Type, Logic >::ValueType = typename HashMap<Type, Logic>::ValueType

Member Function Documentation

◆ count_values()

template<typename Type, ice::ContainerLogic Logic>
template<ice::concepts::HashableKeyType HashableKeyT>
auto ice::MultiHashMap< Type, Logic >::count_values ( HashableKeyT const & key) -> SizeType
inlineconstexprnoexcept

◆ find_values()

template<typename Type, ice::ContainerLogic Logic>
template<typename Self, ice::concepts::HashableKeyType HashableKeyT>
auto ice::MultiHashMap< Type, Logic >::find_values ( this Self const & self,
HashableKeyT const & key ) -> ConstMultiIterator
inlineconstexprnoexcept

◆ insert()

template<typename Type, ice::ContainerLogic Logic>
requires (std::convertible_to<InValueType, ice::container::ValueType<Self>>)
template<typename Self, ice::concepts::HashableKeyType HashableKeyT, typename InValueType>
requires (std::convertible_to<InValueType, ice::container::ValueType<Self>>)
auto ice::MultiHashMap< Type, Logic >::insert ( this Self && self,
HashableKeyT const & key,
InValueType && in_value ) -> ice::container::ValueRef< Self >
constexprnoexcept

◆ remove_all()

template<typename Type, ice::ContainerLogic Logic>
template<ice::concepts::HashableKeyType HashableKeyT>
void ice::MultiHashMap< Type, Logic >::remove_all ( HashableKeyT const & key)
inlineconstexprnoexcept

◆ remove_item()

template<typename Type, ice::ContainerLogic Logic>
void ice::MultiHashMap< Type, Logic >::remove_item ( ConstMultiIterator & iterator)
inlineconstexpr

The documentation for this struct was generated from the following file: