Open CASCADE Technology Reference Manual 8.0.0
Loading...
Searching...
No Matches
Data Structures | Public Types | Public Member Functions | Protected Member Functions
NCollection_OrderedDataMap< TheKeyType, TheItemType, Hasher > Class Template Reference

Hash map that preserves insertion order. More...

#include <NCollection_OrderedDataMap.hxx>

Inheritance diagram for NCollection_OrderedDataMap< TheKeyType, TheItemType, Hasher >:
Inheritance graph
[legend]

Data Structures

class  Iterator
 Implementation of the Iterator interface. Iterates in insertion order by walking the doubly-linked list. More...
 
class  OrderedDataMapNode
 Adaptation of the TListNode to the ordered data map notations. Extends the hash-chain node with insertion-order linked list pointers. More...
 

Public Types

typedef TheKeyType key_type
 STL-compliant typedef for key type.
 
typedef TheItemType value_type
 STL-compliant typedef for value type.
 
typedef NCollection_StlIterator< std::forward_iterator_tag, Iterator, TheItemType, falseiterator
 Shorthand for a regular iterator type.
 
typedef NCollection_StlIterator< std::forward_iterator_tag, Iterator, TheItemType, trueconst_iterator
 Shorthand for a constant iterator type.
 
using KeyValueRef = NCollection_ItemsView::KeyValueRef<TheKeyType, TheItemType, false>
 Key-value pair reference for structured binding support. Enables: for (auto [key, value] : map.Items())
 
using ConstKeyValueRef = NCollection_ItemsView::KeyValueRef<TheKeyType, TheItemType, true>
 Const key-value pair reference for structured binding support.
 
using ItemsView
 View class for key-value pair iteration (mutable).
 
using ConstItemsView
 View class for key-value pair iteration (const).
 

Public Member Functions

iterator begin () const noexcept
 Returns an iterator pointing to the first element in the map.
 
iterator end () const noexcept
 Returns an iterator referring to the past-the-end element in the map.
 
const_iterator cbegin () const noexcept
 Returns a const iterator pointing to the first element in the map.
 
const_iterator cend () const noexcept
 Returns a const iterator referring to the past-the-end element in the map.
 
ItemsView Items ()
 Returns a view for key-value pair iteration. Usage: for (auto [aKey, aValue] : aMap.Items())
 
ConstItemsView Items () const
 Returns a const view for key-value pair iteration. Usage: for (const auto& [aKey, aValue] : aMap.Items())
 
 NCollection_OrderedDataMap ()
 Empty Constructor.
 
 NCollection_OrderedDataMap (const size_t theNbBuckets, const occ::handle< NCollection_BaseAllocator > &theAllocator=nullptr)
 Constructor.
 
 NCollection_OrderedDataMap (const int theNbBuckets, const occ::handle< NCollection_BaseAllocator > &theAllocator=nullptr)
 Constructor (legacy int-taking).
 
 NCollection_OrderedDataMap (const Hasher &theHasher, const size_t theNbBuckets=1, const occ::handle< NCollection_BaseAllocator > &theAllocator=nullptr)
 Constructor with custom hasher (copy).
 
 NCollection_OrderedDataMap (const Hasher &theHasher, const int theNbBuckets, const occ::handle< NCollection_BaseAllocator > &theAllocator=nullptr)
 Constructor with custom hasher (copy, legacy int-taking).
 
 NCollection_OrderedDataMap (Hasher &&theHasher, const size_t theNbBuckets=1, const occ::handle< NCollection_BaseAllocator > &theAllocator=nullptr)
 Constructor with custom hasher (move).
 
 NCollection_OrderedDataMap (Hasher &&theHasher, const int theNbBuckets, const occ::handle< NCollection_BaseAllocator > &theAllocator=nullptr)
 Constructor with custom hasher (move, legacy int-taking).
 
 NCollection_OrderedDataMap (const NCollection_OrderedDataMap &theOther)
 Copy constructor.
 
 NCollection_OrderedDataMap (NCollection_OrderedDataMap &&theOther) noexcept
 Move constructor.
 
void Exchange (NCollection_OrderedDataMap &theOther) noexcept
 Exchange the content of two maps without re-allocations. Notice that allocators will be swapped as well!
 
const Hasher & GetHasher () const noexcept
 Returns const reference to the hasher.
 
NCollection_OrderedDataMapAssign (const NCollection_OrderedDataMap &theOther)
 Assignment. This method does not change the internal allocator.
 
NCollection_OrderedDataMapoperator= (const NCollection_OrderedDataMap &theOther)
 Assignment operator.
 
NCollection_OrderedDataMapoperator= (NCollection_OrderedDataMap &&theOther) noexcept
 Move operator.
 
void ReSize (const size_t N)
 ReSize.
 
void ReSize (const int N)
 
bool Bind (const TheKeyType &theKey, const TheItemType &theItem)
 Bind binds Item to Key in map.
 
bool Bind (TheKeyType &&theKey, const TheItemType &theItem)
 Bind binds Item to Key in map.
 
bool Bind (const TheKeyType &theKey, TheItemType &&theItem)
 Bind binds Item to Key in map.
 
bool Bind (TheKeyType &&theKey, TheItemType &&theItem)
 Bind binds Item to Key in map.
 
TheItemTypeBound (const TheKeyType &theKey, const TheItemType &theItem)
 Bound binds Item to Key in map.
 
TheItemTypeBound (TheKeyType &&theKey, const TheItemType &theItem)
 Bound binds Item to Key in map.
 
TheItemTypeBound (const TheKeyType &theKey, TheItemType &&theItem)
 Bound binds Item to Key in map.
 
TheItemTypeBound (TheKeyType &&theKey, TheItemType &&theItem)
 Bound binds Item to Key in map.
 
bool TryBind (const TheKeyType &theKey, const TheItemType &theItem)
 TryBind binds Item to Key in map only if Key is not yet bound.
 
bool TryBind (TheKeyType &&theKey, const TheItemType &theItem)
 TryBind binds Item to Key in map only if Key is not yet bound.
 
bool TryBind (const TheKeyType &theKey, TheItemType &&theItem)
 TryBind binds Item to Key in map only if Key is not yet bound.
 
bool TryBind (TheKeyType &&theKey, TheItemType &&theItem)
 TryBind binds Item to Key in map only if Key is not yet bound.
 
TheItemTypeTryBound (const TheKeyType &theKey, const TheItemType &theItem)
 TryBound binds Item to Key in map only if Key is not yet bound.
 
TheItemTypeTryBound (TheKeyType &&theKey, const TheItemType &theItem)
 TryBound binds Item to Key in map only if Key is not yet bound.
 
TheItemTypeTryBound (const TheKeyType &theKey, TheItemType &&theItem)
 TryBound binds Item to Key in map only if Key is not yet bound.
 
TheItemTypeTryBound (TheKeyType &&theKey, TheItemType &&theItem)
 TryBound binds Item to Key in map only if Key is not yet bound.
 
template<typename K , typename... Args>
bool Emplace (K &&theKey, Args &&... theArgs)
 Emplace constructs value in-place; if key exists, destroys and reconstructs value.
 
template<typename K , typename... Args>
TheItemTypeEmplaced (K &&theKey, Args &&... theArgs)
 Emplaced constructs value in-place; if key exists, destroys and reconstructs value.
 
template<typename K , typename... Args>
bool TryEmplace (K &&theKey, Args &&... theArgs)
 TryEmplace constructs value in-place only if key not already bound.
 
template<typename K , typename... Args>
TheItemTypeTryEmplaced (K &&theKey, Args &&... theArgs)
 TryEmplaced constructs value in-place only if key not already bound.
 
bool IsBound (const TheKeyType &theKey) const
 IsBound.
 
std::optional< std::pair< std::reference_wrapper< const TheKeyType >, std::reference_wrapper< const TheItemType > > > Contained (const TheKeyType &theKey) const
 Contained returns optional pair of const references to key and value. Returns std::nullopt if the key is not found.
 
std::optional< std::pair< std::reference_wrapper< const TheKeyType >, std::reference_wrapper< TheItemType > > > Contained (const TheKeyType &theKey)
 Contained returns optional pair of const key reference and mutable value reference. Returns std::nullopt if the key is not found.
 
bool UnBind (const TheKeyType &theKey)
 UnBind removes Item Key pair from map.
 
const TheItemTypeSeek (const TheKeyType &theKey) const
 Seek returns pointer to Item by Key. Returns NULL if Key was not bound.
 
const TheItemTypeFind (const TheKeyType &theKey) const
 Find returns the Item for Key. Raises if Key was not bound.
 
bool Find (const TheKeyType &theKey, TheItemType &theValue) const
 Find Item for key with copying.
 
const TheItemTypeoperator() (const TheKeyType &theKey) const
 operator ()
 
TheItemTypeChangeSeek (const TheKeyType &theKey)
 ChangeSeek returns modifiable pointer to Item by Key. Returns NULL if Key was not bound.
 
TheItemTypeChangeFind (const TheKeyType &theKey)
 ChangeFind returns modifiable Item by Key. Raises if Key was not bound.
 
TheItemTypeoperator() (const TheKeyType &theKey)
 operator ()
 
void Clear (const bool doReleaseMemory=false)
 Clear data. If doReleaseMemory is false then the table of buckets is not released and will be reused.
 
void Clear (const occ::handle< NCollection_BaseAllocator > &theAllocator)
 Clear data and reset allocator.
 
 ~NCollection_OrderedDataMap () override
 Destructor.
 
const TheKeyTypeFirst () const
 Returns the first key in insertion order.
 
const TheKeyTypeLast () const
 Returns the last key in insertion order.
 
const TheItemTypeFirstValue () const
 Returns the first value in insertion order.
 
const TheItemTypeLastValue () const
 Returns the last value in insertion order.
 
TheItemTypeChangeFirstValue ()
 Returns modifiable first value in insertion order.
 
TheItemTypeChangeLastValue ()
 Returns modifiable last value in insertion order.
 
- Public Member Functions inherited from NCollection_BaseMap
size_t NbBuckets () const noexcept
 NbBuckets.
 
int Extent () const noexcept
 Extent (number of elements, legacy int-returning API).
 
int Length () const noexcept
 Length - number of elements (legacy int-returning API, synonym of Extent()).
 
size_t Size () const noexcept
 Size - number of elements.
 
bool IsEmpty () const noexcept
 IsEmpty.
 
const occ::handle< NCollection_BaseAllocator > & Allocator () const noexcept
 Returns attached allocator.
 

Protected Member Functions

bool lookup (const TheKeyType &theKey, OrderedDataMapNode *&theNode) const
 Lookup for particular key in map.
 
bool lookup (const TheKeyType &theKey, OrderedDataMapNode *&theNode, size_t &theHash) const
 Lookup for particular key in map.
 
bool IsEqual (const TheKeyType &theKey1, const TheKeyType &theKey2) const
 
size_t HashCode (const TheKeyType &theKey, const size_t theUpperBound) const
 
void appendToList (OrderedDataMapNode *theNode)
 Append a node to the tail of the insertion-order linked list.
 
void unlinkFromList (OrderedDataMapNode *theNode)
 Unlink a node from the insertion-order linked list.
 
template<typename K , bool IsTry, bool ReturnRef, typename... Args>
auto emplaceImpl (K &&theKey, std::bool_constant< IsTry >, std::bool_constant< ReturnRef >, Args &&... theArgs) -> std::conditional_t< ReturnRef, TheItemType &, bool >
 Implementation helper for Bind/TryBind/Bound/TryBound/Emplace/TryEmplace/Emplaced/TryEmplaced.
 
- Protected Member Functions inherited from NCollection_BaseMap
 NCollection_BaseMap (const size_t theNbBuckets, const bool single, const occ::handle< NCollection_BaseAllocator > &theAllocator)
 Constructor.
 
 NCollection_BaseMap (NCollection_BaseMap &&theOther) noexcept
 Move Constructor.
 
virtual ~NCollection_BaseMap ()=default
 Destructor.
 
bool BeginResize (const size_t theExtent, size_t &theNewBuckets, NCollection_ListNode **&data1, NCollection_ListNode **&data2) const
 BeginResize.
 
void EndResize (const size_t theExtent, const size_t theNewBuckets, NCollection_ListNode **data1, NCollection_ListNode **data2) noexcept
 EndResize.
 
bool Resizable () const noexcept
 Resizable.
 
size_t Increment () noexcept
 Increment.
 
size_t Decrement () noexcept
 Decrement.
 
void Destroy (NCollection_DelMapNode fDel, bool doReleaseMemory=true)
 Destroy.
 
size_t NextPrimeForMap (const size_t N) const noexcept
 NextPrimeForMap.
 
void exchangeMapsData (NCollection_BaseMap &theOther) noexcept
 Exchange content of two maps without data copying.
 
NCollection_BaseMapoperator= (NCollection_BaseMap &&) noexcept=delete
 Move operator.
 
 NCollection_BaseMap (const NCollection_BaseMap &)=delete
 Copy Constructor.
 
NCollection_BaseMapoperator= (const NCollection_BaseMap &)=delete
 Assign operator.
 

Additional Inherited Members

- Static Protected Member Functions inherited from NCollection_BaseMap
static size_t NbBucketsFromInt (const int theNbBuckets)
 Converts legacy int bucket count to size_t with validation.
 
- Protected Attributes inherited from NCollection_BaseMap
occ::handle< NCollection_BaseAllocatormyAllocator
 
NCollection_ListNode ** myData1
 
NCollection_ListNode ** myData2
 

Detailed Description

template<class TheKeyType, class TheItemType, class Hasher = NCollection_DefaultHasher<TheKeyType>>
class NCollection_OrderedDataMap< TheKeyType, TheItemType, Hasher >

Hash map that preserves insertion order.

NCollection_OrderedDataMap is an alternative to NCollection_DataMap that maintains a doubly-linked list threaded through the hash nodes, so iteration always follows the order in which key-value pairs were inserted.

Key features:

Best suited for:

Compared to NCollection_IndexedDataMap:

The OrderedDataMap can be seen as an extended array where the Keys are the indices. For this reason the operator () is defined to fetch an Item from a Key.

The number of buckets is managed automatically and grows when the number of keys exceeds the bucket count.

Note
This class is NOT thread-safe. External synchronization is required for concurrent access from multiple threads.
Template Parameters
TheKeyTypeType of keys
TheItemTypeType of values
HasherHash and equality functor (default: NCollection_DefaultHasher)

Member Typedef Documentation

◆ const_iterator

template<class TheKeyType , class TheItemType , class Hasher = NCollection_DefaultHasher<TheKeyType>>
typedef NCollection_StlIterator<std::forward_iterator_tag, Iterator, TheItemType, true> NCollection_OrderedDataMap< TheKeyType, TheItemType, Hasher >::const_iterator

Shorthand for a constant iterator type.

◆ ConstItemsView

template<class TheKeyType , class TheItemType , class Hasher = NCollection_DefaultHasher<TheKeyType>>
using NCollection_OrderedDataMap< TheKeyType, TheItemType, Hasher >::ConstItemsView
Initial value:
NCollection_ItemsView::
View<NCollection_OrderedDataMap, ConstKeyValueRef, ConstItemsExtractor, true>

View class for key-value pair iteration (const).

◆ ConstKeyValueRef

template<class TheKeyType , class TheItemType , class Hasher = NCollection_DefaultHasher<TheKeyType>>
using NCollection_OrderedDataMap< TheKeyType, TheItemType, Hasher >::ConstKeyValueRef = NCollection_ItemsView::KeyValueRef<TheKeyType, TheItemType, true>

Const key-value pair reference for structured binding support.

◆ ItemsView

template<class TheKeyType , class TheItemType , class Hasher = NCollection_DefaultHasher<TheKeyType>>
using NCollection_OrderedDataMap< TheKeyType, TheItemType, Hasher >::ItemsView
Initial value:
Generic view class for Items() iteration.
Definition NCollection_ItemsView.hxx:174

View class for key-value pair iteration (mutable).

◆ iterator

template<class TheKeyType , class TheItemType , class Hasher = NCollection_DefaultHasher<TheKeyType>>
typedef NCollection_StlIterator<std::forward_iterator_tag, Iterator, TheItemType, false> NCollection_OrderedDataMap< TheKeyType, TheItemType, Hasher >::iterator

Shorthand for a regular iterator type.

◆ key_type

template<class TheKeyType , class TheItemType , class Hasher = NCollection_DefaultHasher<TheKeyType>>
typedef TheKeyType NCollection_OrderedDataMap< TheKeyType, TheItemType, Hasher >::key_type

STL-compliant typedef for key type.

◆ KeyValueRef

template<class TheKeyType , class TheItemType , class Hasher = NCollection_DefaultHasher<TheKeyType>>
using NCollection_OrderedDataMap< TheKeyType, TheItemType, Hasher >::KeyValueRef = NCollection_ItemsView::KeyValueRef<TheKeyType, TheItemType, false>

Key-value pair reference for structured binding support. Enables: for (auto [key, value] : map.Items())

◆ value_type

template<class TheKeyType , class TheItemType , class Hasher = NCollection_DefaultHasher<TheKeyType>>
typedef TheItemType NCollection_OrderedDataMap< TheKeyType, TheItemType, Hasher >::value_type

STL-compliant typedef for value type.

Constructor & Destructor Documentation

◆ NCollection_OrderedDataMap() [1/9]

template<class TheKeyType , class TheItemType , class Hasher = NCollection_DefaultHasher<TheKeyType>>
NCollection_OrderedDataMap< TheKeyType, TheItemType, Hasher >::NCollection_OrderedDataMap ( )
inline

Empty Constructor.

◆ NCollection_OrderedDataMap() [2/9]

template<class TheKeyType , class TheItemType , class Hasher = NCollection_DefaultHasher<TheKeyType>>
NCollection_OrderedDataMap< TheKeyType, TheItemType, Hasher >::NCollection_OrderedDataMap ( const size_t theNbBuckets,
const occ::handle< NCollection_BaseAllocator > & theAllocator = nullptr )
inlineexplicit

Constructor.

◆ NCollection_OrderedDataMap() [3/9]

template<class TheKeyType , class TheItemType , class Hasher = NCollection_DefaultHasher<TheKeyType>>
NCollection_OrderedDataMap< TheKeyType, TheItemType, Hasher >::NCollection_OrderedDataMap ( const int theNbBuckets,
const occ::handle< NCollection_BaseAllocator > & theAllocator = nullptr )
inlineexplicit

Constructor (legacy int-taking).

◆ NCollection_OrderedDataMap() [4/9]

template<class TheKeyType , class TheItemType , class Hasher = NCollection_DefaultHasher<TheKeyType>>
NCollection_OrderedDataMap< TheKeyType, TheItemType, Hasher >::NCollection_OrderedDataMap ( const Hasher & theHasher,
const size_t theNbBuckets = 1,
const occ::handle< NCollection_BaseAllocator > & theAllocator = nullptr )
inlineexplicit

Constructor with custom hasher (copy).

Parameters
theHashercustom hasher instance
theNbBucketsinitial number of buckets
theAllocatorcustom memory allocator

◆ NCollection_OrderedDataMap() [5/9]

template<class TheKeyType , class TheItemType , class Hasher = NCollection_DefaultHasher<TheKeyType>>
NCollection_OrderedDataMap< TheKeyType, TheItemType, Hasher >::NCollection_OrderedDataMap ( const Hasher & theHasher,
const int theNbBuckets,
const occ::handle< NCollection_BaseAllocator > & theAllocator = nullptr )
inlineexplicit

Constructor with custom hasher (copy, legacy int-taking).

◆ NCollection_OrderedDataMap() [6/9]

template<class TheKeyType , class TheItemType , class Hasher = NCollection_DefaultHasher<TheKeyType>>
NCollection_OrderedDataMap< TheKeyType, TheItemType, Hasher >::NCollection_OrderedDataMap ( Hasher && theHasher,
const size_t theNbBuckets = 1,
const occ::handle< NCollection_BaseAllocator > & theAllocator = nullptr )
inlineexplicit

Constructor with custom hasher (move).

Parameters
theHashercustom hasher instance (moved)
theNbBucketsinitial number of buckets
theAllocatorcustom memory allocator

◆ NCollection_OrderedDataMap() [7/9]

template<class TheKeyType , class TheItemType , class Hasher = NCollection_DefaultHasher<TheKeyType>>
NCollection_OrderedDataMap< TheKeyType, TheItemType, Hasher >::NCollection_OrderedDataMap ( Hasher && theHasher,
const int theNbBuckets,
const occ::handle< NCollection_BaseAllocator > & theAllocator = nullptr )
inlineexplicit

Constructor with custom hasher (move, legacy int-taking).

◆ NCollection_OrderedDataMap() [8/9]

template<class TheKeyType , class TheItemType , class Hasher = NCollection_DefaultHasher<TheKeyType>>
NCollection_OrderedDataMap< TheKeyType, TheItemType, Hasher >::NCollection_OrderedDataMap ( const NCollection_OrderedDataMap< TheKeyType, TheItemType, Hasher > & theOther)
inline

Copy constructor.

◆ NCollection_OrderedDataMap() [9/9]

template<class TheKeyType , class TheItemType , class Hasher = NCollection_DefaultHasher<TheKeyType>>
NCollection_OrderedDataMap< TheKeyType, TheItemType, Hasher >::NCollection_OrderedDataMap ( NCollection_OrderedDataMap< TheKeyType, TheItemType, Hasher > && theOther)
inlinenoexcept

Move constructor.

◆ ~NCollection_OrderedDataMap()

template<class TheKeyType , class TheItemType , class Hasher = NCollection_DefaultHasher<TheKeyType>>
NCollection_OrderedDataMap< TheKeyType, TheItemType, Hasher >::~NCollection_OrderedDataMap ( )
inlineoverride

Destructor.

Member Function Documentation

◆ appendToList()

template<class TheKeyType , class TheItemType , class Hasher = NCollection_DefaultHasher<TheKeyType>>
void NCollection_OrderedDataMap< TheKeyType, TheItemType, Hasher >::appendToList ( OrderedDataMapNode * theNode)
inlineprotected

Append a node to the tail of the insertion-order linked list.

◆ Assign()

template<class TheKeyType , class TheItemType , class Hasher = NCollection_DefaultHasher<TheKeyType>>
NCollection_OrderedDataMap & NCollection_OrderedDataMap< TheKeyType, TheItemType, Hasher >::Assign ( const NCollection_OrderedDataMap< TheKeyType, TheItemType, Hasher > & theOther)
inline

Assignment. This method does not change the internal allocator.

◆ begin()

template<class TheKeyType , class TheItemType , class Hasher = NCollection_DefaultHasher<TheKeyType>>
iterator NCollection_OrderedDataMap< TheKeyType, TheItemType, Hasher >::begin ( ) const
inlinenoexcept

Returns an iterator pointing to the first element in the map.

◆ Bind() [1/4]

template<class TheKeyType , class TheItemType , class Hasher = NCollection_DefaultHasher<TheKeyType>>
bool NCollection_OrderedDataMap< TheKeyType, TheItemType, Hasher >::Bind ( const TheKeyType & theKey,
const TheItemType & theItem )
inline

Bind binds Item to Key in map.

Parameters
theKeykey to add/update
theItemnew item; overrides value previously bound to the key
Returns
true if Key was not bound already

◆ Bind() [2/4]

template<class TheKeyType , class TheItemType , class Hasher = NCollection_DefaultHasher<TheKeyType>>
bool NCollection_OrderedDataMap< TheKeyType, TheItemType, Hasher >::Bind ( const TheKeyType & theKey,
TheItemType && theItem )
inline

Bind binds Item to Key in map.

◆ Bind() [3/4]

template<class TheKeyType , class TheItemType , class Hasher = NCollection_DefaultHasher<TheKeyType>>
bool NCollection_OrderedDataMap< TheKeyType, TheItemType, Hasher >::Bind ( TheKeyType && theKey,
const TheItemType & theItem )
inline

Bind binds Item to Key in map.

◆ Bind() [4/4]

template<class TheKeyType , class TheItemType , class Hasher = NCollection_DefaultHasher<TheKeyType>>
bool NCollection_OrderedDataMap< TheKeyType, TheItemType, Hasher >::Bind ( TheKeyType && theKey,
TheItemType && theItem )
inline

Bind binds Item to Key in map.

◆ Bound() [1/4]

template<class TheKeyType , class TheItemType , class Hasher = NCollection_DefaultHasher<TheKeyType>>
TheItemType * NCollection_OrderedDataMap< TheKeyType, TheItemType, Hasher >::Bound ( const TheKeyType & theKey,
const TheItemType & theItem )
inline

Bound binds Item to Key in map.

Returns
pointer to modifiable Item

◆ Bound() [2/4]

template<class TheKeyType , class TheItemType , class Hasher = NCollection_DefaultHasher<TheKeyType>>
TheItemType * NCollection_OrderedDataMap< TheKeyType, TheItemType, Hasher >::Bound ( const TheKeyType & theKey,
TheItemType && theItem )
inline

Bound binds Item to Key in map.

◆ Bound() [3/4]

template<class TheKeyType , class TheItemType , class Hasher = NCollection_DefaultHasher<TheKeyType>>
TheItemType * NCollection_OrderedDataMap< TheKeyType, TheItemType, Hasher >::Bound ( TheKeyType && theKey,
const TheItemType & theItem )
inline

Bound binds Item to Key in map.

◆ Bound() [4/4]

template<class TheKeyType , class TheItemType , class Hasher = NCollection_DefaultHasher<TheKeyType>>
TheItemType * NCollection_OrderedDataMap< TheKeyType, TheItemType, Hasher >::Bound ( TheKeyType && theKey,
TheItemType && theItem )
inline

Bound binds Item to Key in map.

◆ cbegin()

template<class TheKeyType , class TheItemType , class Hasher = NCollection_DefaultHasher<TheKeyType>>
const_iterator NCollection_OrderedDataMap< TheKeyType, TheItemType, Hasher >::cbegin ( ) const
inlinenoexcept

Returns a const iterator pointing to the first element in the map.

◆ cend()

template<class TheKeyType , class TheItemType , class Hasher = NCollection_DefaultHasher<TheKeyType>>
const_iterator NCollection_OrderedDataMap< TheKeyType, TheItemType, Hasher >::cend ( ) const
inlinenoexcept

Returns a const iterator referring to the past-the-end element in the map.

◆ ChangeFind()

template<class TheKeyType , class TheItemType , class Hasher = NCollection_DefaultHasher<TheKeyType>>
TheItemType & NCollection_OrderedDataMap< TheKeyType, TheItemType, Hasher >::ChangeFind ( const TheKeyType & theKey)
inline

ChangeFind returns modifiable Item by Key. Raises if Key was not bound.

◆ ChangeFirstValue()

template<class TheKeyType , class TheItemType , class Hasher = NCollection_DefaultHasher<TheKeyType>>
TheItemType & NCollection_OrderedDataMap< TheKeyType, TheItemType, Hasher >::ChangeFirstValue ( )
inline

Returns modifiable first value in insertion order.

Exceptions
Standard_NoSuchObjectif map is empty

◆ ChangeLastValue()

template<class TheKeyType , class TheItemType , class Hasher = NCollection_DefaultHasher<TheKeyType>>
TheItemType & NCollection_OrderedDataMap< TheKeyType, TheItemType, Hasher >::ChangeLastValue ( )
inline

Returns modifiable last value in insertion order.

Exceptions
Standard_NoSuchObjectif map is empty

◆ ChangeSeek()

template<class TheKeyType , class TheItemType , class Hasher = NCollection_DefaultHasher<TheKeyType>>
TheItemType * NCollection_OrderedDataMap< TheKeyType, TheItemType, Hasher >::ChangeSeek ( const TheKeyType & theKey)
inline

ChangeSeek returns modifiable pointer to Item by Key. Returns NULL if Key was not bound.

◆ Clear() [1/2]

template<class TheKeyType , class TheItemType , class Hasher = NCollection_DefaultHasher<TheKeyType>>
void NCollection_OrderedDataMap< TheKeyType, TheItemType, Hasher >::Clear ( const bool doReleaseMemory = false)
inline

Clear data. If doReleaseMemory is false then the table of buckets is not released and will be reused.

◆ Clear() [2/2]

template<class TheKeyType , class TheItemType , class Hasher = NCollection_DefaultHasher<TheKeyType>>
void NCollection_OrderedDataMap< TheKeyType, TheItemType, Hasher >::Clear ( const occ::handle< NCollection_BaseAllocator > & theAllocator)
inline

Clear data and reset allocator.

◆ Contained() [1/2]

template<class TheKeyType , class TheItemType , class Hasher = NCollection_DefaultHasher<TheKeyType>>
std::optional< std::pair< std::reference_wrapper< const TheKeyType >, std::reference_wrapper< TheItemType > > > NCollection_OrderedDataMap< TheKeyType, TheItemType, Hasher >::Contained ( const TheKeyType & theKey)
inline

Contained returns optional pair of const key reference and mutable value reference. Returns std::nullopt if the key is not found.

◆ Contained() [2/2]

template<class TheKeyType , class TheItemType , class Hasher = NCollection_DefaultHasher<TheKeyType>>
std::optional< std::pair< std::reference_wrapper< const TheKeyType >, std::reference_wrapper< const TheItemType > > > NCollection_OrderedDataMap< TheKeyType, TheItemType, Hasher >::Contained ( const TheKeyType & theKey) const
inline

Contained returns optional pair of const references to key and value. Returns std::nullopt if the key is not found.

◆ Emplace()

template<class TheKeyType , class TheItemType , class Hasher = NCollection_DefaultHasher<TheKeyType>>
template<typename K , typename... Args>
bool NCollection_OrderedDataMap< TheKeyType, TheItemType, Hasher >::Emplace ( K && theKey,
Args &&... theArgs )
inline

Emplace constructs value in-place; if key exists, destroys and reconstructs value.

Parameters
theKeykey to add/update
theArgsarguments forwarded to value constructor
Returns
true if key was newly added, false if key already existed (and value was reconstructed)

◆ Emplaced()

template<class TheKeyType , class TheItemType , class Hasher = NCollection_DefaultHasher<TheKeyType>>
template<typename K , typename... Args>
TheItemType & NCollection_OrderedDataMap< TheKeyType, TheItemType, Hasher >::Emplaced ( K && theKey,
Args &&... theArgs )
inline

Emplaced constructs value in-place; if key exists, destroys and reconstructs value.

Parameters
theKeykey to add/update
theArgsarguments forwarded to value constructor
Returns
reference to the value (existing reconstructed or newly added)

◆ emplaceImpl()

template<class TheKeyType , class TheItemType , class Hasher = NCollection_DefaultHasher<TheKeyType>>
template<typename K , bool IsTry, bool ReturnRef, typename... Args>
auto NCollection_OrderedDataMap< TheKeyType, TheItemType, Hasher >::emplaceImpl ( K && theKey,
std::bool_constant< IsTry > ,
std::bool_constant< ReturnRef > ,
Args &&... theArgs ) -> std::conditional_t<ReturnRef, TheItemType&, bool>
inlineprotected

Implementation helper for Bind/TryBind/Bound/TryBound/Emplace/TryEmplace/Emplaced/TryEmplaced.

Template Parameters
Kforwarding reference type for key
IsTryif true, does not overwrite existing; if false, destroys and reconstructs
ReturnRefif true, returns reference; if false, returns bool
Parameters
theKeykey to add/update
theArgsarguments forwarded to value constructor
Returns
bool or TheItemType& depending on ReturnRef

◆ end()

template<class TheKeyType , class TheItemType , class Hasher = NCollection_DefaultHasher<TheKeyType>>
iterator NCollection_OrderedDataMap< TheKeyType, TheItemType, Hasher >::end ( ) const
inlinenoexcept

Returns an iterator referring to the past-the-end element in the map.

◆ Exchange()

template<class TheKeyType , class TheItemType , class Hasher = NCollection_DefaultHasher<TheKeyType>>
void NCollection_OrderedDataMap< TheKeyType, TheItemType, Hasher >::Exchange ( NCollection_OrderedDataMap< TheKeyType, TheItemType, Hasher > & theOther)
inlinenoexcept

Exchange the content of two maps without re-allocations. Notice that allocators will be swapped as well!

◆ Find() [1/2]

template<class TheKeyType , class TheItemType , class Hasher = NCollection_DefaultHasher<TheKeyType>>
const TheItemType & NCollection_OrderedDataMap< TheKeyType, TheItemType, Hasher >::Find ( const TheKeyType & theKey) const
inline

Find returns the Item for Key. Raises if Key was not bound.

◆ Find() [2/2]

template<class TheKeyType , class TheItemType , class Hasher = NCollection_DefaultHasher<TheKeyType>>
bool NCollection_OrderedDataMap< TheKeyType, TheItemType, Hasher >::Find ( const TheKeyType & theKey,
TheItemType & theValue ) const
inline

Find Item for key with copying.

Returns
true if key was found

◆ First()

template<class TheKeyType , class TheItemType , class Hasher = NCollection_DefaultHasher<TheKeyType>>
const TheKeyType & NCollection_OrderedDataMap< TheKeyType, TheItemType, Hasher >::First ( ) const
inline

Returns the first key in insertion order.

Exceptions
Standard_NoSuchObjectif map is empty

◆ FirstValue()

template<class TheKeyType , class TheItemType , class Hasher = NCollection_DefaultHasher<TheKeyType>>
const TheItemType & NCollection_OrderedDataMap< TheKeyType, TheItemType, Hasher >::FirstValue ( ) const
inline

Returns the first value in insertion order.

Exceptions
Standard_NoSuchObjectif map is empty

◆ GetHasher()

template<class TheKeyType , class TheItemType , class Hasher = NCollection_DefaultHasher<TheKeyType>>
const Hasher & NCollection_OrderedDataMap< TheKeyType, TheItemType, Hasher >::GetHasher ( ) const
inlinenoexcept

Returns const reference to the hasher.

◆ HashCode()

template<class TheKeyType , class TheItemType , class Hasher = NCollection_DefaultHasher<TheKeyType>>
size_t NCollection_OrderedDataMap< TheKeyType, TheItemType, Hasher >::HashCode ( const TheKeyType & theKey,
const size_t theUpperBound ) const
inlineprotected

◆ IsBound()

template<class TheKeyType , class TheItemType , class Hasher = NCollection_DefaultHasher<TheKeyType>>
bool NCollection_OrderedDataMap< TheKeyType, TheItemType, Hasher >::IsBound ( const TheKeyType & theKey) const
inline

IsBound.

◆ IsEqual()

template<class TheKeyType , class TheItemType , class Hasher = NCollection_DefaultHasher<TheKeyType>>
bool NCollection_OrderedDataMap< TheKeyType, TheItemType, Hasher >::IsEqual ( const TheKeyType & theKey1,
const TheKeyType & theKey2 ) const
inlineprotected

◆ Items() [1/2]

template<class TheKeyType , class TheItemType , class Hasher = NCollection_DefaultHasher<TheKeyType>>
ItemsView NCollection_OrderedDataMap< TheKeyType, TheItemType, Hasher >::Items ( )
inline

Returns a view for key-value pair iteration. Usage: for (auto [aKey, aValue] : aMap.Items())

◆ Items() [2/2]

template<class TheKeyType , class TheItemType , class Hasher = NCollection_DefaultHasher<TheKeyType>>
ConstItemsView NCollection_OrderedDataMap< TheKeyType, TheItemType, Hasher >::Items ( ) const
inline

Returns a const view for key-value pair iteration. Usage: for (const auto& [aKey, aValue] : aMap.Items())

◆ Last()

template<class TheKeyType , class TheItemType , class Hasher = NCollection_DefaultHasher<TheKeyType>>
const TheKeyType & NCollection_OrderedDataMap< TheKeyType, TheItemType, Hasher >::Last ( ) const
inline

Returns the last key in insertion order.

Exceptions
Standard_NoSuchObjectif map is empty

◆ LastValue()

template<class TheKeyType , class TheItemType , class Hasher = NCollection_DefaultHasher<TheKeyType>>
const TheItemType & NCollection_OrderedDataMap< TheKeyType, TheItemType, Hasher >::LastValue ( ) const
inline

Returns the last value in insertion order.

Exceptions
Standard_NoSuchObjectif map is empty

◆ lookup() [1/2]

template<class TheKeyType , class TheItemType , class Hasher = NCollection_DefaultHasher<TheKeyType>>
bool NCollection_OrderedDataMap< TheKeyType, TheItemType, Hasher >::lookup ( const TheKeyType & theKey,
OrderedDataMapNode *& theNode ) const
inlineprotected

Lookup for particular key in map.

Parameters
[in]theKeykey to compute hash
[out]theNodethe detected node with equal key. Can be null.
Returns
true if key is found

◆ lookup() [2/2]

template<class TheKeyType , class TheItemType , class Hasher = NCollection_DefaultHasher<TheKeyType>>
bool NCollection_OrderedDataMap< TheKeyType, TheItemType, Hasher >::lookup ( const TheKeyType & theKey,
OrderedDataMapNode *& theNode,
size_t & theHash ) const
inlineprotected

Lookup for particular key in map.

Parameters
[in]theKeykey to compute hash
[out]theNodethe detected node with equal key. Can be null.
[out]theHashcomputed bounded hash code for current key.
Returns
true if key is found

◆ operator()() [1/2]

template<class TheKeyType , class TheItemType , class Hasher = NCollection_DefaultHasher<TheKeyType>>
TheItemType & NCollection_OrderedDataMap< TheKeyType, TheItemType, Hasher >::operator() ( const TheKeyType & theKey)
inline

operator ()

◆ operator()() [2/2]

template<class TheKeyType , class TheItemType , class Hasher = NCollection_DefaultHasher<TheKeyType>>
const TheItemType & NCollection_OrderedDataMap< TheKeyType, TheItemType, Hasher >::operator() ( const TheKeyType & theKey) const
inline

operator ()

◆ operator=() [1/2]

template<class TheKeyType , class TheItemType , class Hasher = NCollection_DefaultHasher<TheKeyType>>
NCollection_OrderedDataMap & NCollection_OrderedDataMap< TheKeyType, TheItemType, Hasher >::operator= ( const NCollection_OrderedDataMap< TheKeyType, TheItemType, Hasher > & theOther)
inline

Assignment operator.

◆ operator=() [2/2]

template<class TheKeyType , class TheItemType , class Hasher = NCollection_DefaultHasher<TheKeyType>>
NCollection_OrderedDataMap & NCollection_OrderedDataMap< TheKeyType, TheItemType, Hasher >::operator= ( NCollection_OrderedDataMap< TheKeyType, TheItemType, Hasher > && theOther)
inlinenoexcept

Move operator.

◆ ReSize() [1/2]

template<class TheKeyType , class TheItemType , class Hasher = NCollection_DefaultHasher<TheKeyType>>
void NCollection_OrderedDataMap< TheKeyType, TheItemType, Hasher >::ReSize ( const int N)
inline

◆ ReSize() [2/2]

template<class TheKeyType , class TheItemType , class Hasher = NCollection_DefaultHasher<TheKeyType>>
void NCollection_OrderedDataMap< TheKeyType, TheItemType, Hasher >::ReSize ( const size_t N)
inline

ReSize.

◆ Seek()

template<class TheKeyType , class TheItemType , class Hasher = NCollection_DefaultHasher<TheKeyType>>
const TheItemType * NCollection_OrderedDataMap< TheKeyType, TheItemType, Hasher >::Seek ( const TheKeyType & theKey) const
inline

Seek returns pointer to Item by Key. Returns NULL if Key was not bound.

◆ TryBind() [1/4]

template<class TheKeyType , class TheItemType , class Hasher = NCollection_DefaultHasher<TheKeyType>>
bool NCollection_OrderedDataMap< TheKeyType, TheItemType, Hasher >::TryBind ( const TheKeyType & theKey,
const TheItemType & theItem )
inline

TryBind binds Item to Key in map only if Key is not yet bound.

Returns
true if Key was newly bound, false if Key already existed (no replacement)

◆ TryBind() [2/4]

template<class TheKeyType , class TheItemType , class Hasher = NCollection_DefaultHasher<TheKeyType>>
bool NCollection_OrderedDataMap< TheKeyType, TheItemType, Hasher >::TryBind ( const TheKeyType & theKey,
TheItemType && theItem )
inline

TryBind binds Item to Key in map only if Key is not yet bound.

◆ TryBind() [3/4]

template<class TheKeyType , class TheItemType , class Hasher = NCollection_DefaultHasher<TheKeyType>>
bool NCollection_OrderedDataMap< TheKeyType, TheItemType, Hasher >::TryBind ( TheKeyType && theKey,
const TheItemType & theItem )
inline

TryBind binds Item to Key in map only if Key is not yet bound.

◆ TryBind() [4/4]

template<class TheKeyType , class TheItemType , class Hasher = NCollection_DefaultHasher<TheKeyType>>
bool NCollection_OrderedDataMap< TheKeyType, TheItemType, Hasher >::TryBind ( TheKeyType && theKey,
TheItemType && theItem )
inline

TryBind binds Item to Key in map only if Key is not yet bound.

◆ TryBound() [1/4]

template<class TheKeyType , class TheItemType , class Hasher = NCollection_DefaultHasher<TheKeyType>>
TheItemType & NCollection_OrderedDataMap< TheKeyType, TheItemType, Hasher >::TryBound ( const TheKeyType & theKey,
const TheItemType & theItem )
inline

TryBound binds Item to Key in map only if Key is not yet bound.

Returns
reference to existing or newly bound Item

◆ TryBound() [2/4]

template<class TheKeyType , class TheItemType , class Hasher = NCollection_DefaultHasher<TheKeyType>>
TheItemType & NCollection_OrderedDataMap< TheKeyType, TheItemType, Hasher >::TryBound ( const TheKeyType & theKey,
TheItemType && theItem )
inline

TryBound binds Item to Key in map only if Key is not yet bound.

◆ TryBound() [3/4]

template<class TheKeyType , class TheItemType , class Hasher = NCollection_DefaultHasher<TheKeyType>>
TheItemType & NCollection_OrderedDataMap< TheKeyType, TheItemType, Hasher >::TryBound ( TheKeyType && theKey,
const TheItemType & theItem )
inline

TryBound binds Item to Key in map only if Key is not yet bound.

◆ TryBound() [4/4]

template<class TheKeyType , class TheItemType , class Hasher = NCollection_DefaultHasher<TheKeyType>>
TheItemType & NCollection_OrderedDataMap< TheKeyType, TheItemType, Hasher >::TryBound ( TheKeyType && theKey,
TheItemType && theItem )
inline

TryBound binds Item to Key in map only if Key is not yet bound.

◆ TryEmplace()

template<class TheKeyType , class TheItemType , class Hasher = NCollection_DefaultHasher<TheKeyType>>
template<typename K , typename... Args>
bool NCollection_OrderedDataMap< TheKeyType, TheItemType, Hasher >::TryEmplace ( K && theKey,
Args &&... theArgs )
inline

TryEmplace constructs value in-place only if key not already bound.

Parameters
theKeykey to add
theArgsarguments forwarded to value constructor
Returns
true if key was newly added, false if key already existed

◆ TryEmplaced()

template<class TheKeyType , class TheItemType , class Hasher = NCollection_DefaultHasher<TheKeyType>>
template<typename K , typename... Args>
TheItemType & NCollection_OrderedDataMap< TheKeyType, TheItemType, Hasher >::TryEmplaced ( K && theKey,
Args &&... theArgs )
inline

TryEmplaced constructs value in-place only if key not already bound.

Parameters
theKeykey to add
theArgsarguments forwarded to value constructor
Returns
reference to the value (existing or newly added)

◆ UnBind()

template<class TheKeyType , class TheItemType , class Hasher = NCollection_DefaultHasher<TheKeyType>>
bool NCollection_OrderedDataMap< TheKeyType, TheItemType, Hasher >::UnBind ( const TheKeyType & theKey)
inline

UnBind removes Item Key pair from map.

◆ unlinkFromList()

template<class TheKeyType , class TheItemType , class Hasher = NCollection_DefaultHasher<TheKeyType>>
void NCollection_OrderedDataMap< TheKeyType, TheItemType, Hasher >::unlinkFromList ( OrderedDataMapNode * theNode)
inlineprotected

Unlink a node from the insertion-order linked list.


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