Jlm
Public Types | Public Member Functions | Private Types | Private Attributes | List of all members
jlm::util::OwnerIntrusiveHash< KeyType, ElementType, Accessor, KeyHash, KeyEqual > Class Template Reference

#include <intrusive-hash.hpp>

Collaboration diagram for jlm::util::OwnerIntrusiveHash< KeyType, ElementType, Accessor, KeyHash, KeyEqual >:
Collaboration graph
[legend]

Public Types

typedef internal_hash_type::const_iterator const_iterator
 
typedef internal_hash_type::iterator iterator
 
typedef internal_hash_type::value_type value_type
 
typedef internal_hash_type::mapped_type mapped_type
 
typedef internal_hash_type::key_type key_type
 
typedef internal_hash_type::size_type size_type
 

Public Member Functions

 ~OwnerIntrusiveHash () noexcept
 
constexpr OwnerIntrusiveHash () noexcept
 
 OwnerIntrusiveHash (const OwnerIntrusiveHash &other)=delete
 
void operator= (const OwnerIntrusiveHash &other)=delete
 
 OwnerIntrusiveHash (OwnerIntrusiveHash &&other) noexcept
 
void swap (OwnerIntrusiveHash &other) noexcept
 
void clear () noexcept
 
iterator insert (std::unique_ptr< ElementType > element)
 
void erase (ElementType *element) noexcept
 
void erase (iterator i) noexcept
 
void erase (const KeyType &key) noexcept
 
std::unique_ptr< ElementType > unlink (iterator i) noexcept
 
void erase (iterator begin, iterator end) noexcept
 
size_type size () const noexcept
 
bool empty () const noexcept
 
iterator begin () noexcept
 
iterator end () noexcept
 
const_iterator cbegin () const noexcept
 
const_iterator cend () const noexcept
 
const_iterator begin () const noexcept
 
const_iterator end () const noexcept
 
iterator find (const KeyType &key) noexcept
 
const_iterator find (const KeyType &key) const noexcept
 

Private Types

typedef IntrusiveHash< KeyType, ElementType, Accessor, KeyHash, KeyEqual > internal_hash_type
 

Private Attributes

internal_hash_type internal_hash_
 

Detailed Description

template<typename KeyType, typename ElementType, typename Accessor, typename KeyHash = std::hash<KeyType>, typename KeyEqual = SafeEqual<KeyType>>
class jlm::util::OwnerIntrusiveHash< KeyType, ElementType, Accessor, KeyHash, KeyEqual >

Definition at line 628 of file intrusive-hash.hpp.

Member Typedef Documentation

◆ const_iterator

template<typename KeyType , typename ElementType , typename Accessor , typename KeyHash = std::hash<KeyType>, typename KeyEqual = SafeEqual<KeyType>>
typedef internal_hash_type::const_iterator jlm::util::OwnerIntrusiveHash< KeyType, ElementType, Accessor, KeyHash, KeyEqual >::const_iterator

Definition at line 636 of file intrusive-hash.hpp.

◆ internal_hash_type

template<typename KeyType , typename ElementType , typename Accessor , typename KeyHash = std::hash<KeyType>, typename KeyEqual = SafeEqual<KeyType>>
typedef IntrusiveHash<KeyType, ElementType, Accessor, KeyHash, KeyEqual> jlm::util::OwnerIntrusiveHash< KeyType, ElementType, Accessor, KeyHash, KeyEqual >::internal_hash_type
private

Definition at line 630 of file intrusive-hash.hpp.

◆ iterator

template<typename KeyType , typename ElementType , typename Accessor , typename KeyHash = std::hash<KeyType>, typename KeyEqual = SafeEqual<KeyType>>
typedef internal_hash_type::iterator jlm::util::OwnerIntrusiveHash< KeyType, ElementType, Accessor, KeyHash, KeyEqual >::iterator

Definition at line 637 of file intrusive-hash.hpp.

◆ key_type

template<typename KeyType , typename ElementType , typename Accessor , typename KeyHash = std::hash<KeyType>, typename KeyEqual = SafeEqual<KeyType>>
typedef internal_hash_type::key_type jlm::util::OwnerIntrusiveHash< KeyType, ElementType, Accessor, KeyHash, KeyEqual >::key_type

Definition at line 640 of file intrusive-hash.hpp.

◆ mapped_type

template<typename KeyType , typename ElementType , typename Accessor , typename KeyHash = std::hash<KeyType>, typename KeyEqual = SafeEqual<KeyType>>
typedef internal_hash_type::mapped_type jlm::util::OwnerIntrusiveHash< KeyType, ElementType, Accessor, KeyHash, KeyEqual >::mapped_type

Definition at line 639 of file intrusive-hash.hpp.

◆ size_type

template<typename KeyType , typename ElementType , typename Accessor , typename KeyHash = std::hash<KeyType>, typename KeyEqual = SafeEqual<KeyType>>
typedef internal_hash_type::size_type jlm::util::OwnerIntrusiveHash< KeyType, ElementType, Accessor, KeyHash, KeyEqual >::size_type

Definition at line 641 of file intrusive-hash.hpp.

◆ value_type

template<typename KeyType , typename ElementType , typename Accessor , typename KeyHash = std::hash<KeyType>, typename KeyEqual = SafeEqual<KeyType>>
typedef internal_hash_type::value_type jlm::util::OwnerIntrusiveHash< KeyType, ElementType, Accessor, KeyHash, KeyEqual >::value_type

Definition at line 638 of file intrusive-hash.hpp.

Constructor & Destructor Documentation

◆ ~OwnerIntrusiveHash()

template<typename KeyType , typename ElementType , typename Accessor , typename KeyHash = std::hash<KeyType>, typename KeyEqual = SafeEqual<KeyType>>
jlm::util::OwnerIntrusiveHash< KeyType, ElementType, Accessor, KeyHash, KeyEqual >::~OwnerIntrusiveHash ( )
inlinenoexcept

Definition at line 643 of file intrusive-hash.hpp.

◆ OwnerIntrusiveHash() [1/3]

template<typename KeyType , typename ElementType , typename Accessor , typename KeyHash = std::hash<KeyType>, typename KeyEqual = SafeEqual<KeyType>>
constexpr jlm::util::OwnerIntrusiveHash< KeyType, ElementType, Accessor, KeyHash, KeyEqual >::OwnerIntrusiveHash ( )
inlineconstexprnoexcept

Definition at line 648 of file intrusive-hash.hpp.

◆ OwnerIntrusiveHash() [2/3]

template<typename KeyType , typename ElementType , typename Accessor , typename KeyHash = std::hash<KeyType>, typename KeyEqual = SafeEqual<KeyType>>
jlm::util::OwnerIntrusiveHash< KeyType, ElementType, Accessor, KeyHash, KeyEqual >::OwnerIntrusiveHash ( const OwnerIntrusiveHash< KeyType, ElementType, Accessor, KeyHash, KeyEqual > &  other)
delete

◆ OwnerIntrusiveHash() [3/3]

template<typename KeyType , typename ElementType , typename Accessor , typename KeyHash = std::hash<KeyType>, typename KeyEqual = SafeEqual<KeyType>>
jlm::util::OwnerIntrusiveHash< KeyType, ElementType, Accessor, KeyHash, KeyEqual >::OwnerIntrusiveHash ( OwnerIntrusiveHash< KeyType, ElementType, Accessor, KeyHash, KeyEqual > &&  other)
inlinenoexcept

Definition at line 656 of file intrusive-hash.hpp.

Member Function Documentation

◆ begin() [1/2]

template<typename KeyType , typename ElementType , typename Accessor , typename KeyHash = std::hash<KeyType>, typename KeyEqual = SafeEqual<KeyType>>
const_iterator jlm::util::OwnerIntrusiveHash< KeyType, ElementType, Accessor, KeyHash, KeyEqual >::begin ( ) const
inlinenoexcept

Definition at line 760 of file intrusive-hash.hpp.

◆ begin() [2/2]

template<typename KeyType , typename ElementType , typename Accessor , typename KeyHash = std::hash<KeyType>, typename KeyEqual = SafeEqual<KeyType>>
iterator jlm::util::OwnerIntrusiveHash< KeyType, ElementType, Accessor, KeyHash, KeyEqual >::begin ( )
inlinenoexcept

Definition at line 736 of file intrusive-hash.hpp.

◆ cbegin()

template<typename KeyType , typename ElementType , typename Accessor , typename KeyHash = std::hash<KeyType>, typename KeyEqual = SafeEqual<KeyType>>
const_iterator jlm::util::OwnerIntrusiveHash< KeyType, ElementType, Accessor, KeyHash, KeyEqual >::cbegin ( ) const
inlinenoexcept

Definition at line 748 of file intrusive-hash.hpp.

◆ cend()

template<typename KeyType , typename ElementType , typename Accessor , typename KeyHash = std::hash<KeyType>, typename KeyEqual = SafeEqual<KeyType>>
const_iterator jlm::util::OwnerIntrusiveHash< KeyType, ElementType, Accessor, KeyHash, KeyEqual >::cend ( ) const
inlinenoexcept

Definition at line 754 of file intrusive-hash.hpp.

◆ clear()

template<typename KeyType , typename ElementType , typename Accessor , typename KeyHash = std::hash<KeyType>, typename KeyEqual = SafeEqual<KeyType>>
void jlm::util::OwnerIntrusiveHash< KeyType, ElementType, Accessor, KeyHash, KeyEqual >::clear ( )
inlinenoexcept

Definition at line 667 of file intrusive-hash.hpp.

◆ empty()

template<typename KeyType , typename ElementType , typename Accessor , typename KeyHash = std::hash<KeyType>, typename KeyEqual = SafeEqual<KeyType>>
bool jlm::util::OwnerIntrusiveHash< KeyType, ElementType, Accessor, KeyHash, KeyEqual >::empty ( ) const
inlinenoexcept

Definition at line 730 of file intrusive-hash.hpp.

◆ end() [1/2]

template<typename KeyType , typename ElementType , typename Accessor , typename KeyHash = std::hash<KeyType>, typename KeyEqual = SafeEqual<KeyType>>
const_iterator jlm::util::OwnerIntrusiveHash< KeyType, ElementType, Accessor, KeyHash, KeyEqual >::end ( ) const
inlinenoexcept

Definition at line 766 of file intrusive-hash.hpp.

◆ end() [2/2]

template<typename KeyType , typename ElementType , typename Accessor , typename KeyHash = std::hash<KeyType>, typename KeyEqual = SafeEqual<KeyType>>
iterator jlm::util::OwnerIntrusiveHash< KeyType, ElementType, Accessor, KeyHash, KeyEqual >::end ( )
inlinenoexcept

Definition at line 742 of file intrusive-hash.hpp.

◆ erase() [1/4]

template<typename KeyType , typename ElementType , typename Accessor , typename KeyHash = std::hash<KeyType>, typename KeyEqual = SafeEqual<KeyType>>
void jlm::util::OwnerIntrusiveHash< KeyType, ElementType, Accessor, KeyHash, KeyEqual >::erase ( const KeyType &  key)
inlinenoexcept

Definition at line 700 of file intrusive-hash.hpp.

◆ erase() [2/4]

template<typename KeyType , typename ElementType , typename Accessor , typename KeyHash = std::hash<KeyType>, typename KeyEqual = SafeEqual<KeyType>>
void jlm::util::OwnerIntrusiveHash< KeyType, ElementType, Accessor, KeyHash, KeyEqual >::erase ( ElementType *  element)
inlinenoexcept

Definition at line 687 of file intrusive-hash.hpp.

◆ erase() [3/4]

template<typename KeyType , typename ElementType , typename Accessor , typename KeyHash = std::hash<KeyType>, typename KeyEqual = SafeEqual<KeyType>>
void jlm::util::OwnerIntrusiveHash< KeyType, ElementType, Accessor, KeyHash, KeyEqual >::erase ( iterator  begin,
iterator  end 
)
inlinenoexcept

Definition at line 718 of file intrusive-hash.hpp.

◆ erase() [4/4]

template<typename KeyType , typename ElementType , typename Accessor , typename KeyHash = std::hash<KeyType>, typename KeyEqual = SafeEqual<KeyType>>
void jlm::util::OwnerIntrusiveHash< KeyType, ElementType, Accessor, KeyHash, KeyEqual >::erase ( iterator  i)
inlinenoexcept

Definition at line 694 of file intrusive-hash.hpp.

◆ find() [1/2]

template<typename KeyType , typename ElementType , typename Accessor , typename KeyHash = std::hash<KeyType>, typename KeyEqual = SafeEqual<KeyType>>
const_iterator jlm::util::OwnerIntrusiveHash< KeyType, ElementType, Accessor, KeyHash, KeyEqual >::find ( const KeyType &  key) const
inlinenoexcept

Definition at line 778 of file intrusive-hash.hpp.

◆ find() [2/2]

template<typename KeyType , typename ElementType , typename Accessor , typename KeyHash = std::hash<KeyType>, typename KeyEqual = SafeEqual<KeyType>>
iterator jlm::util::OwnerIntrusiveHash< KeyType, ElementType, Accessor, KeyHash, KeyEqual >::find ( const KeyType &  key)
inlinenoexcept

Definition at line 772 of file intrusive-hash.hpp.

◆ insert()

template<typename KeyType , typename ElementType , typename Accessor , typename KeyHash = std::hash<KeyType>, typename KeyEqual = SafeEqual<KeyType>>
iterator jlm::util::OwnerIntrusiveHash< KeyType, ElementType, Accessor, KeyHash, KeyEqual >::insert ( std::unique_ptr< ElementType >  element)
inline

Definition at line 679 of file intrusive-hash.hpp.

◆ operator=()

template<typename KeyType , typename ElementType , typename Accessor , typename KeyHash = std::hash<KeyType>, typename KeyEqual = SafeEqual<KeyType>>
void jlm::util::OwnerIntrusiveHash< KeyType, ElementType, Accessor, KeyHash, KeyEqual >::operator= ( const OwnerIntrusiveHash< KeyType, ElementType, Accessor, KeyHash, KeyEqual > &  other)
delete

◆ size()

template<typename KeyType , typename ElementType , typename Accessor , typename KeyHash = std::hash<KeyType>, typename KeyEqual = SafeEqual<KeyType>>
size_type jlm::util::OwnerIntrusiveHash< KeyType, ElementType, Accessor, KeyHash, KeyEqual >::size ( ) const
inlinenoexcept

Definition at line 724 of file intrusive-hash.hpp.

◆ swap()

template<typename KeyType , typename ElementType , typename Accessor , typename KeyHash = std::hash<KeyType>, typename KeyEqual = SafeEqual<KeyType>>
void jlm::util::OwnerIntrusiveHash< KeyType, ElementType, Accessor, KeyHash, KeyEqual >::swap ( OwnerIntrusiveHash< KeyType, ElementType, Accessor, KeyHash, KeyEqual > &  other)
inlinenoexcept

Definition at line 661 of file intrusive-hash.hpp.

◆ unlink()

template<typename KeyType , typename ElementType , typename Accessor , typename KeyHash = std::hash<KeyType>, typename KeyEqual = SafeEqual<KeyType>>
std::unique_ptr<ElementType> jlm::util::OwnerIntrusiveHash< KeyType, ElementType, Accessor, KeyHash, KeyEqual >::unlink ( iterator  i)
inlinenoexcept

Definition at line 710 of file intrusive-hash.hpp.

Member Data Documentation

◆ internal_hash_

template<typename KeyType , typename ElementType , typename Accessor , typename KeyHash = std::hash<KeyType>, typename KeyEqual = SafeEqual<KeyType>>
internal_hash_type jlm::util::OwnerIntrusiveHash< KeyType, ElementType, Accessor, KeyHash, KeyEqual >::internal_hash_
private

Definition at line 784 of file intrusive-hash.hpp.


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