LLVM 23.0.0git
llvm::StringMap< ValueTy, AllocatorTy > Class Template Reference

StringMap - This is an unconventional map that is specialized for handling keys that are "strings", which are basically ranges of bytes. More...

#include "llvm/ADT/StringMap.h"

Inherits llvm::StringMapImpl, and llvm::detail::AllocatorHolder< MallocAllocator >.

Public Types

using MapEntryTy = StringMapEntry<ValueTy>
using key_type = const char *
using mapped_type = ValueTy
using value_type = StringMapEntry<ValueTy>
using size_type = size_t
using const_iterator = StringMapIterBase<ValueTy, true>
using iterator = StringMapIterBase<ValueTy, false>

Public Member Functions

 StringMap ()
 StringMap (unsigned InitialSize)
 StringMap (AllocatorTy A)
 StringMap (unsigned InitialSize, AllocatorTy A)
 StringMap (std::initializer_list< std::pair< StringRef, ValueTy > > List)
 StringMap (StringMap &&RHS)
 StringMap (const StringMap &RHS)
StringMapoperator= (StringMap RHS)
 ~StringMap ()
iterator begin ()
iterator end ()
const_iterator begin () const
const_iterator end () const
iterator_range< StringMapKeyIterator< ValueTy > > keys () const
iterator find (StringRef Key)
iterator find (StringRef Key, uint32_t FullHashValue)
const_iterator find (StringRef Key) const
const_iterator find (StringRef Key, uint32_t FullHashValue) const
ValueTy lookup (StringRef Key) const
 lookup - Return the entry for the specified key, or a default constructed value if no such entry exists.
const ValueTy & at (StringRef Val) const
 at - Return the entry for the specified key, or abort if no such entry exists.
ValueTy & operator[] (StringRef Key)
 Lookup the ValueTy for the Key, or create a default constructed value if the key is not in the map.
bool contains (StringRef Key) const
 contains - Return true if the element is in the map, false otherwise.
size_type count (StringRef Key) const
 count - Return 1 if the element is in the map, 0 otherwise.
template<typename InputTy>
size_type count (const StringMapEntry< InputTy > &MapEntry) const
bool operator== (const StringMap &RHS) const
 equal - check whether both of the containers are equal.
bool operator!= (const StringMap &RHS) const
bool insert (MapEntryTy *KeyValue)
 insert - Insert the specified key/value pair into the map.
std::pair< iterator, boolinsert (std::pair< StringRef, ValueTy > KV)
 insert - Inserts the specified key/value pair into the map if the key isn't already in the map.
std::pair< iterator, boolinsert (std::pair< StringRef, ValueTy > KV, uint32_t FullHashValue)
template<typename InputIt>
void insert (InputIt First, InputIt Last)
 Inserts elements from range [first, last).
void insert (std::initializer_list< std::pair< StringRef, ValueTy > > List)
 Inserts elements from initializer list ilist.
template<typename V>
std::pair< iterator, boolinsert_or_assign (StringRef Key, V &&Val)
 Inserts an element or assigns to the current element if the key already exists.
template<typename... ArgsTy>
std::pair< iterator, booltry_emplace (StringRef Key, ArgsTy &&...Args)
 Emplace a new element for the specified key into the map if the key isn't already in the map.
template<typename... ArgsTy>
std::pair< iterator, booltry_emplace_with_hash (StringRef Key, uint32_t FullHashValue, ArgsTy &&...Args)
void clear ()
void remove (MapEntryTy *KeyValue)
 remove - Remove the specified key/value pair from the map, but do not erase it.
void erase (iterator I)
bool erase (StringRef Key)
template<typename Predicate>
bool remove_if (Predicate Pred)
 Remove entries that match the given predicate.
AllocatorTy & getAllocator ()
const AllocatorTy & getAllocator () const
Public Member Functions inherited from llvm::StringMapImpl
unsigned getNumBuckets () const
unsigned getNumItems () const
bool empty () const
unsigned size () const
void swap (StringMapImpl &Other)
Public Member Functions inherited from llvm::DebugEpochBase
void incrementEpoch ()

Additional Inherited Members

Static Public Member Functions inherited from llvm::StringMapImpl
static LLVM_ABI uint32_t hash (StringRef Key)
 Returns the hash value that will be used for the given string.
Protected Member Functions inherited from llvm::StringMapImpl
 StringMapImpl (unsigned itemSize)
 StringMapImpl (StringMapImpl &&RHS)
LLVM_ABI StringMapImpl (unsigned InitSize, unsigned ItemSize)
 ~StringMapImpl ()
LLVM_ABI unsigned RehashTable (unsigned BucketNo=0)
 RehashTable - Grow the table, redistributing values into the buckets with the appropriate mod-of-hashtable-size.
unsigned LookupBucketFor (StringRef Key)
 LookupBucketFor - Look up the bucket that the specified string should end up in.
LLVM_ABI unsigned LookupBucketFor (StringRef Key, uint32_t FullHashValue)
 Overload that explicitly takes precomputed hash(Key).
int FindKey (StringRef Key) const
 FindKey - Look up the bucket that contains the specified key.
LLVM_ABI int FindKey (StringRef Key, uint32_t FullHashValue) const
 Overload that explicitly takes precomputed hash(Key).
LLVM_ABI void RemoveKey (StringMapEntryBase *V)
 RemoveKey - Remove the specified StringMapEntry from the table, but do not delete it.
LLVM_ABI StringMapEntryBaseRemoveKey (StringRef Key)
 RemoveKey - Remove the StringMapEntry for the specified key from the table, returning it.
LLVM_ABI void removeBucket (unsigned Bucket)
 Remove the entry at the given (live) bucket, whose value the caller has already destroyed, and close the hole via Algorithm R backward shifting.
LLVM_ABI void init (unsigned Size)
 Allocate the table with the specified number of buckets and otherwise setup the map as empty.
iterator_range< StringMapEntryBase ** > buckets ()
Protected Attributes inherited from llvm::StringMapImpl
StringMapEntryBase ** TheTable = nullptr
unsigned NumBuckets = 0
unsigned NumItems = 0
unsigned ItemSize

Detailed Description

template<typename ValueTy, typename AllocatorTy = MallocAllocator>
class llvm::StringMap< ValueTy, AllocatorTy >

StringMap - This is an unconventional map that is specialized for handling keys that are "strings", which are basically ranges of bytes.

This does some funky memory allocation and hashing things to make it extremely efficient, storing the string data after the value in the map.

Definition at line 126 of file StringMap.h.

Member Typedef Documentation

◆ const_iterator

template<typename ValueTy, typename AllocatorTy = MallocAllocator>
using llvm::StringMap< ValueTy, AllocatorTy >::const_iterator = StringMapIterBase<ValueTy, true>

Definition at line 208 of file StringMap.h.

◆ iterator

template<typename ValueTy, typename AllocatorTy = MallocAllocator>
using llvm::StringMap< ValueTy, AllocatorTy >::iterator = StringMapIterBase<ValueTy, false>

Definition at line 209 of file StringMap.h.

◆ key_type

template<typename ValueTy, typename AllocatorTy = MallocAllocator>
using llvm::StringMap< ValueTy, AllocatorTy >::key_type = const char *

Definition at line 203 of file StringMap.h.

◆ MapEntryTy

template<typename ValueTy, typename AllocatorTy = MallocAllocator>
using llvm::StringMap< ValueTy, AllocatorTy >::MapEntryTy = StringMapEntry<ValueTy>

Definition at line 132 of file StringMap.h.

◆ mapped_type

template<typename ValueTy, typename AllocatorTy = MallocAllocator>
using llvm::StringMap< ValueTy, AllocatorTy >::mapped_type = ValueTy

Definition at line 204 of file StringMap.h.

◆ size_type

template<typename ValueTy, typename AllocatorTy = MallocAllocator>
using llvm::StringMap< ValueTy, AllocatorTy >::size_type = size_t

Definition at line 206 of file StringMap.h.

◆ value_type

template<typename ValueTy, typename AllocatorTy = MallocAllocator>
using llvm::StringMap< ValueTy, AllocatorTy >::value_type = StringMapEntry<ValueTy>

Definition at line 205 of file StringMap.h.

Constructor & Destructor Documentation

◆ StringMap() [1/7]

template<typename ValueTy, typename AllocatorTy = MallocAllocator>
llvm::StringMap< ValueTy, AllocatorTy >::StringMap ( )
inline

Definition at line 134 of file StringMap.h.

◆ StringMap() [2/7]

template<typename ValueTy, typename AllocatorTy = MallocAllocator>
llvm::StringMap< ValueTy, AllocatorTy >::StringMap ( unsigned InitialSize)
inlineexplicit

Definition at line 136 of file StringMap.h.

◆ StringMap() [3/7]

template<typename ValueTy, typename AllocatorTy = MallocAllocator>
llvm::StringMap< ValueTy, AllocatorTy >::StringMap ( AllocatorTy A)
inlineexplicit

Definition at line 139 of file StringMap.h.

◆ StringMap() [4/7]

template<typename ValueTy, typename AllocatorTy = MallocAllocator>
llvm::StringMap< ValueTy, AllocatorTy >::StringMap ( unsigned InitialSize,
AllocatorTy A )
inline

Definition at line 142 of file StringMap.h.

◆ StringMap() [5/7]

template<typename ValueTy, typename AllocatorTy = MallocAllocator>
llvm::StringMap< ValueTy, AllocatorTy >::StringMap ( std::initializer_list< std::pair< StringRef, ValueTy > > List)
inline

Definition at line 146 of file StringMap.h.

◆ StringMap() [6/7]

template<typename ValueTy, typename AllocatorTy = MallocAllocator>
llvm::StringMap< ValueTy, AllocatorTy >::StringMap ( StringMap< ValueTy, AllocatorTy > && RHS)
inline

Definition at line 151 of file StringMap.h.

◆ StringMap() [7/7]

template<typename ValueTy, typename AllocatorTy = MallocAllocator>
llvm::StringMap< ValueTy, AllocatorTy >::StringMap ( const StringMap< ValueTy, AllocatorTy > & RHS)
inline

Definition at line 154 of file StringMap.h.

◆ ~StringMap()

template<typename ValueTy, typename AllocatorTy = MallocAllocator>
llvm::StringMap< ValueTy, AllocatorTy >::~StringMap ( )
inline

Definition at line 188 of file StringMap.h.

Member Function Documentation

◆ at()

template<typename ValueTy, typename AllocatorTy = MallocAllocator>
const ValueTy & llvm::StringMap< ValueTy, AllocatorTy >::at ( StringRef Val) const
inlinenodiscard

at - Return the entry for the specified key, or abort if no such entry exists.

Definition at line 259 of file StringMap.h.

◆ begin() [1/2]

template<typename ValueTy, typename AllocatorTy = MallocAllocator>
iterator llvm::StringMap< ValueTy, AllocatorTy >::begin ( )
inlinenodiscard

Definition at line 211 of file StringMap.h.

Referenced by llvm::codeview::DebugStringTableSubsection::begin().

◆ begin() [2/2]

template<typename ValueTy, typename AllocatorTy = MallocAllocator>
const_iterator llvm::StringMap< ValueTy, AllocatorTy >::begin ( ) const
inlinenodiscard

Definition at line 215 of file StringMap.h.

◆ clear()

template<typename ValueTy, typename AllocatorTy = MallocAllocator>
void llvm::StringMap< ValueTy, AllocatorTy >::clear ( )
inline

Definition at line 394 of file StringMap.h.

◆ contains()

template<typename ValueTy, typename AllocatorTy = MallocAllocator>
bool llvm::StringMap< ValueTy, AllocatorTy >::contains ( StringRef Key) const
inlinenodiscard

contains - Return true if the element is in the map, false otherwise.

Definition at line 270 of file StringMap.h.

Referenced by generateModuleMap().

◆ count() [1/2]

template<typename ValueTy, typename AllocatorTy = MallocAllocator>
template<typename InputTy>
size_type llvm::StringMap< ValueTy, AllocatorTy >::count ( const StringMapEntry< InputTy > & MapEntry) const
inlinenodiscard

Definition at line 280 of file StringMap.h.

◆ count() [2/2]

template<typename ValueTy, typename AllocatorTy = MallocAllocator>
size_type llvm::StringMap< ValueTy, AllocatorTy >::count ( StringRef Key) const
inlinenodiscard

count - Return 1 if the element is in the map, 0 otherwise.

Definition at line 275 of file StringMap.h.

Referenced by llvm::AArch64Subtarget::AArch64Subtarget(), computeGUIDPreservedSymbols(), and insertWaveSizeFeature().

◆ end() [1/2]

◆ end() [2/2]

template<typename ValueTy, typename AllocatorTy = MallocAllocator>
const_iterator llvm::StringMap< ValueTy, AllocatorTy >::end ( ) const
inlinenodiscard

Definition at line 218 of file StringMap.h.

◆ erase() [1/2]

template<typename ValueTy, typename AllocatorTy = MallocAllocator>
void llvm::StringMap< ValueTy, AllocatorTy >::erase ( iterator I)
inline

Definition at line 418 of file StringMap.h.

◆ erase() [2/2]

template<typename ValueTy, typename AllocatorTy = MallocAllocator>
bool llvm::StringMap< ValueTy, AllocatorTy >::erase ( StringRef Key)
inline

Definition at line 424 of file StringMap.h.

◆ find() [1/4]

◆ find() [2/4]

template<typename ValueTy, typename AllocatorTy = MallocAllocator>
const_iterator llvm::StringMap< ValueTy, AllocatorTy >::find ( StringRef Key) const
inlinenodiscard

Definition at line 236 of file StringMap.h.

◆ find() [3/4]

template<typename ValueTy, typename AllocatorTy = MallocAllocator>
iterator llvm::StringMap< ValueTy, AllocatorTy >::find ( StringRef Key,
uint32_t FullHashValue )
inlinenodiscard

Definition at line 229 of file StringMap.h.

◆ find() [4/4]

template<typename ValueTy, typename AllocatorTy = MallocAllocator>
const_iterator llvm::StringMap< ValueTy, AllocatorTy >::find ( StringRef Key,
uint32_t FullHashValue ) const
inlinenodiscard

Definition at line 240 of file StringMap.h.

◆ getAllocator() [1/2]

template<typename ValueTy, typename AllocatorTy = MallocAllocator>
AllocatorTy & llvm::detail::AllocatorHolder< AllocatorTy >::getAllocator ( )
inline

Definition at line 116 of file AllocatorBase.h.

◆ getAllocator() [2/2]

template<typename ValueTy, typename AllocatorTy = MallocAllocator>
const AllocatorTy & llvm::detail::AllocatorHolder< AllocatorTy >::getAllocator ( ) const
inline

Definition at line 117 of file AllocatorBase.h.

◆ insert() [1/5]

template<typename ValueTy, typename AllocatorTy = MallocAllocator>
template<typename InputIt>
void llvm::StringMap< ValueTy, AllocatorTy >::insert ( InputIt First,
InputIt Last )
inline

Inserts elements from range [first, last).

If multiple elements in the range have keys that compare equivalent, it is unspecified which element is inserted .

Definition at line 343 of file StringMap.h.

◆ insert() [2/5]

template<typename ValueTy, typename AllocatorTy = MallocAllocator>
bool llvm::StringMap< ValueTy, AllocatorTy >::insert ( MapEntryTy * KeyValue)
inline

insert - Insert the specified key/value pair into the map.

If the key already exists in the map, return false and ignore the request, otherwise insert it and return true.

Definition at line 311 of file StringMap.h.

Referenced by createIndexMap(), llvm::IRComparer< T >::generateFunctionData(), insertWaveSizeFeature(), printMemberHeader(), and llvm::RuntimeDyldImpl::resolveExternalSymbols().

◆ insert() [3/5]

template<typename ValueTy, typename AllocatorTy = MallocAllocator>
void llvm::StringMap< ValueTy, AllocatorTy >::insert ( std::initializer_list< std::pair< StringRef, ValueTy > > List)
inline

Inserts elements from initializer list ilist.

If multiple elements in the range have keys that compare equivalent, it is unspecified which element is inserted

Definition at line 351 of file StringMap.h.

◆ insert() [4/5]

template<typename ValueTy, typename AllocatorTy = MallocAllocator>
std::pair< iterator, bool > llvm::StringMap< ValueTy, AllocatorTy >::insert ( std::pair< StringRef, ValueTy > KV)
inline

insert - Inserts the specified key/value pair into the map if the key isn't already in the map.

The bool component of the returned pair is true if and only if the insertion takes place, and the iterator component of the pair points to the element with key equivalent to the key of the pair.

Definition at line 330 of file StringMap.h.

◆ insert() [5/5]

template<typename ValueTy, typename AllocatorTy = MallocAllocator>
std::pair< iterator, bool > llvm::StringMap< ValueTy, AllocatorTy >::insert ( std::pair< StringRef, ValueTy > KV,
uint32_t FullHashValue )
inline

Definition at line 335 of file StringMap.h.

◆ insert_or_assign()

template<typename ValueTy, typename AllocatorTy = MallocAllocator>
template<typename V>
std::pair< iterator, bool > llvm::StringMap< ValueTy, AllocatorTy >::insert_or_assign ( StringRef Key,
V && Val )
inline

Inserts an element or assigns to the current element if the key already exists.

The return type is the same as try_emplace.

Definition at line 358 of file StringMap.h.

◆ keys()

template<typename ValueTy, typename AllocatorTy = MallocAllocator>
iterator_range< StringMapKeyIterator< ValueTy > > llvm::StringMap< ValueTy, AllocatorTy >::keys ( ) const
inlinenodiscard

Definition at line 222 of file StringMap.h.

◆ lookup()

template<typename ValueTy, typename AllocatorTy = MallocAllocator>
ValueTy llvm::StringMap< ValueTy, AllocatorTy >::lookup ( StringRef Key) const
inlinenodiscard

lookup - Return the entry for the specified key, or a default constructed value if no such entry exists.

Definition at line 250 of file StringMap.h.

Referenced by llvm::OpenMPIRBuilder::getOpenMPDefaultSimdAlign(), and llvm::instrumentor::readConfigFromJSON().

◆ operator!=()

template<typename ValueTy, typename AllocatorTy = MallocAllocator>
bool llvm::StringMap< ValueTy, AllocatorTy >::operator!= ( const StringMap< ValueTy, AllocatorTy > & RHS) const
inlinenodiscard

Definition at line 304 of file StringMap.h.

◆ operator=()

template<typename ValueTy, typename AllocatorTy = MallocAllocator>
StringMap & llvm::StringMap< ValueTy, AllocatorTy >::operator= ( StringMap< ValueTy, AllocatorTy > RHS)
inline

Definition at line 182 of file StringMap.h.

◆ operator==()

template<typename ValueTy, typename AllocatorTy = MallocAllocator>
bool llvm::StringMap< ValueTy, AllocatorTy >::operator== ( const StringMap< ValueTy, AllocatorTy > & RHS) const
inlinenodiscard

equal - check whether both of the containers are equal.

Definition at line 285 of file StringMap.h.

◆ operator[]()

template<typename ValueTy, typename AllocatorTy = MallocAllocator>
ValueTy & llvm::StringMap< ValueTy, AllocatorTy >::operator[] ( StringRef Key)
inline

Lookup the ValueTy for the Key, or create a default constructed value if the key is not in the map.

Definition at line 267 of file StringMap.h.

◆ remove()

template<typename ValueTy, typename AllocatorTy = MallocAllocator>
void llvm::StringMap< ValueTy, AllocatorTy >::remove ( MapEntryTy * KeyValue)
inline

remove - Remove the specified key/value pair from the map, but do not erase it.

This aborts if the key is not in the map.

Definition at line 413 of file StringMap.h.

◆ remove_if()

template<typename ValueTy, typename AllocatorTy = MallocAllocator>
template<typename Predicate>
bool llvm::StringMap< ValueTy, AllocatorTy >::remove_if ( Predicate Pred)
inline

Remove entries that match the given predicate.

Pred is invoked with a reference to each live entry and must not access the map being modified. This is the safe replacement for erase-while-iterating.

Returns whether anything was removed. If so, all iterators and references into the map are invalidated.

Definition at line 438 of file StringMap.h.

◆ try_emplace()

template<typename ValueTy, typename AllocatorTy = MallocAllocator>
template<typename... ArgsTy>
std::pair< iterator, bool > llvm::StringMap< ValueTy, AllocatorTy >::try_emplace ( StringRef Key,
ArgsTy &&... Args )
inline

Emplace a new element for the specified key into the map if the key isn't already in the map.

The bool component of the returned pair is true if and only if the insertion takes place, and the iterator component of the pair points to the element with key equivalent to the key of the pair.

Definition at line 370 of file StringMap.h.

Referenced by llvm::StringInit::get(), handleArgs(), populateDependencyMatrix(), and llvm::dwarf_linker::parallel::DWARFLinkerImpl::LinkContext::registerCIEs().

◆ try_emplace_with_hash()

template<typename ValueTy, typename AllocatorTy = MallocAllocator>
template<typename... ArgsTy>
std::pair< iterator, bool > llvm::StringMap< ValueTy, AllocatorTy >::try_emplace_with_hash ( StringRef Key,
uint32_t FullHashValue,
ArgsTy &&... Args )
inline

Definition at line 375 of file StringMap.h.


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