LLVM  14.0.0git
Public Types | Public Member Functions | List of all members
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.

Collaboration diagram for llvm::StringMap< ValueTy, AllocatorTy >:
Collaboration graph
[legend]

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 = StringMapConstIterator< ValueTy >
 
using iterator = StringMapIterator< ValueTy >
 

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 ()
 
AllocatorTy & getAllocator ()
 
const AllocatorTy & getAllocator () const
 
iterator begin ()
 
iterator end ()
 
const_iterator begin () const
 
const_iterator end () const
 
iterator_range< StringMapKeyIterator< ValueTy > > keys () const
 
iterator find (StringRef Key)
 
const_iterator find (StringRef Key) const
 
ValueTy lookup (StringRef Key) const
 lookup - Return the entry for the specified key, or a default constructed value if no such entry exists. More...
 
ValueTy & operator[] (StringRef Key)
 Lookup the ValueTy for the Key, or create a default constructed value if the key is not in the map. More...
 
size_type count (StringRef Key) const
 count - Return 1 if the element is in the map, 0 otherwise. More...
 
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. More...
 
bool operator!= (const StringMap &RHS) const
 
bool insert (MapEntryTy *KeyValue)
 insert - Insert the specified key/value pair into the map. More...
 
std::pair< iterator, bool > insert (std::pair< StringRef, ValueTy > KV)
 insert - Inserts the specified key/value pair into the map if the key isn't already in the map. More...
 
template<typename InputIt >
void insert (InputIt First, InputIt Last)
 Inserts elements from range [first, last). More...
 
void insert (std::initializer_list< std::pair< StringRef, ValueTy >> List)
 Inserts elements from initializer list ilist. More...
 
template<typename V >
std::pair< iterator, bool > insert_or_assign (StringRef Key, V &&Val)
 Inserts an element or assigns to the current element if the key already exists. More...
 
template<typename... ArgsTy>
std::pair< iterator, bool > try_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. More...
 
void clear ()
 
void remove (MapEntryTy *KeyValue)
 remove - Remove the specified key/value pair from the map, but do not erase it. More...
 
void erase (iterator I)
 
bool erase (StringRef Key)
 
- Public Member Functions inherited from llvm::StringMapImpl
unsigned getNumBuckets () const
 
unsigned getNumItems () const
 
bool empty () const
 
unsigned size () const
 
void swap (StringMapImpl &Other)
 

Additional Inherited Members

- Static Public Member Functions inherited from llvm::StringMapImpl
static StringMapEntryBasegetTombstoneVal ()
 
- Static Public Attributes inherited from llvm::StringMapImpl
static constexpr uintptr_t TombstoneIntVal
 
- Protected Member Functions inherited from llvm::StringMapImpl
 StringMapImpl (unsigned itemSize)
 
 StringMapImpl (StringMapImpl &&RHS)
 
 StringMapImpl (unsigned InitSize, unsigned ItemSize)
 
unsigned RehashTable (unsigned BucketNo=0)
 RehashTable - Grow the table, redistributing values into the buckets with the appropriate mod-of-hashtable-size. More...
 
unsigned LookupBucketFor (StringRef Key)
 LookupBucketFor - Look up the bucket that the specified string should end up in. More...
 
int FindKey (StringRef Key) const
 FindKey - Look up the bucket that contains the specified key. More...
 
void RemoveKey (StringMapEntryBase *V)
 RemoveKey - Remove the specified StringMapEntry from the table, but do not delete it. More...
 
StringMapEntryBaseRemoveKey (StringRef Key)
 RemoveKey - Remove the StringMapEntry for the specified key from the table, returning it. More...
 
void init (unsigned Size)
 Allocate the table with the specified number of buckets and otherwise setup the map as empty. More...
 
- Protected Attributes inherited from llvm::StringMapImpl
StringMapEntryBase ** TheTable = nullptr
 
unsigned NumBuckets = 0
 
unsigned NumItems = 0
 
unsigned NumTombstones = 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 108 of file StringMap.h.

Member Typedef Documentation

◆ const_iterator

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

Definition at line 199 of file StringMap.h.

◆ iterator

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

Definition at line 200 of file StringMap.h.

◆ key_type

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

Definition at line 194 of file StringMap.h.

◆ MapEntryTy

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

Definition at line 112 of file StringMap.h.

◆ mapped_type

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

Definition at line 195 of file StringMap.h.

◆ size_type

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

Definition at line 197 of file StringMap.h.

◆ value_type

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

Definition at line 196 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 114 of file StringMap.h.

◆ StringMap() [2/7]

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

Definition at line 116 of file StringMap.h.

◆ StringMap() [3/7]

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

Definition at line 119 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 123 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 127 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 132 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 135 of file StringMap.h.

◆ ~StringMap()

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

Definition at line 176 of file StringMap.h.

Member Function Documentation

◆ begin() [1/2]

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

◆ begin() [2/2]

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

Definition at line 204 of file StringMap.h.

◆ clear()

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

◆ count() [1/2]

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

Definition at line 247 of file StringMap.h.

◆ count() [2/2]

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

◆ end() [1/2]

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

Definition at line 203 of file StringMap.h.

Referenced by llvm::RuntimeDyldImpl::applyExternalSymbolRelocations(), llvm::orc::SymbolStringPool::clearDeadEntries(), llvm::computeLTOCacheKey(), llvm::StringMap< std::unique_ptr< llvm::vfs::detail::InMemoryNode > >::count(), llvm::RecordStreamer::end(), llvm::codeview::DebugStringTableSubsection::end(), llvm::ValueSymbolTable::end(), llvm::StringMap< std::unique_ptr< llvm::vfs::detail::InMemoryNode > >::erase(), llvm::StringMap< std::unique_ptr< llvm::vfs::detail::InMemoryNode > >::find(), llvm::RecordStreamer::flushSymverDirectives(), llvm::ExecutionEngine::getAddressToGlobalIfAvailable(), llvm::ReplayInlineAdvisor::getAdviceImpl(), getBBClusterInfoForFunction(), llvm::PerTargetMIParsingState::getBitmaskTargetFlag(), llvm::PerTargetMIParsingState::getDirectTargetFlag(), llvm::ExecutionEngine::getGlobalValueAtAddress(), llvm::codeview::DebugStringTableSubsection::getIdForString(), llvm::LLVMContext::getMDKindNames(), llvm::PerTargetMIParsingState::getMMOTargetFlag(), llvm::ModuleSummaryIndex::getModule(), llvm::ModuleSummaryIndex::getModuleHash(), llvm::SlotTracker::getModulePathSlot(), llvm::LLVMContextImpl::getOperandBundleTagID(), getOptionPred(), llvm::PerTargetMIParsingState::getRegBank(), llvm::PerTargetMIParsingState::getRegClass(), llvm::PerTargetMIParsingState::getRegMask(), llvm::pdb::DbiStreamBuilder::getSourceFileNameIndex(), llvm::PerTargetMIParsingState::getSubRegIndex(), llvm::RuntimeDyldImpl::getSymbol(), llvm::RuntimeDyldImpl::getSymbolLocalAddress(), llvm::RuntimeDyldImpl::getSymbolSectionID(), llvm::PerTargetMIParsingState::getTargetIndex(), llvm::SlotTracker::getTypeIdSlot(), llvm::StringMap< std::unique_ptr< llvm::vfs::detail::InMemoryNode > >::keys(), llvm::StringMap< std::unique_ptr< llvm::vfs::detail::InMemoryNode > >::lookup(), LookupNearestOption(), llvm::StringMap< std::unique_ptr< llvm::vfs::detail::InMemoryNode > >::operator==(), llvm::opt::OptTable::OptTable(), llvm::SpecialCaseList::parse(), llvm::PerTargetMIParsingState::parseInstrName(), llvm::RuntimeDyldMachOARM::processRelocationRef(), llvm::RuntimeDyldELF::processRelocationRef(), llvm::ImportedFunctionsInliningStatistics::recordInline(), llvm::ExecutionEngineState::RemoveMapping(), and sortOpts().

◆ end() [2/2]

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

Definition at line 207 of file StringMap.h.

◆ erase() [1/2]

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

◆ erase() [2/2]

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

Definition at line 374 of file StringMap.h.

◆ find() [1/2]

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

Definition at line 216 of file StringMap.h.

Referenced by llvm::RuntimeDyldImpl::applyExternalSymbolRelocations(), llvm::StringMap< std::unique_ptr< llvm::vfs::detail::InMemoryNode > >::count(), llvm::StringMap< std::unique_ptr< llvm::vfs::detail::InMemoryNode > >::erase(), llvm::RecordStreamer::flushSymverDirectives(), llvm::ExecutionEngine::getAddressToGlobalIfAvailable(), llvm::ReplayInlineAdvisor::getAdviceImpl(), getBBClusterInfoForFunction(), llvm::PerTargetMIParsingState::getBitmaskTargetFlag(), llvm::PerTargetMIParsingState::getDirectTargetFlag(), llvm::codeview::DebugStringTableSubsection::getIdForString(), llvm::PerTargetMIParsingState::getMMOTargetFlag(), llvm::ModuleSummaryIndex::getModule(), llvm::ModuleSummaryIndex::getModuleHash(), llvm::SlotTracker::getModulePathSlot(), llvm::LLVMContextImpl::getOperandBundleTagID(), getOptionPred(), llvm::PerTargetMIParsingState::getRegBank(), llvm::PerTargetMIParsingState::getRegClass(), llvm::PerTargetMIParsingState::getRegMask(), llvm::pdb::DbiStreamBuilder::getSourceFileNameIndex(), llvm::PerTargetMIParsingState::getSubRegIndex(), llvm::RuntimeDyldImpl::getSymbol(), llvm::RuntimeDyldImpl::getSymbolLocalAddress(), llvm::RuntimeDyldImpl::getSymbolSectionID(), llvm::PerTargetMIParsingState::getTargetIndex(), llvm::SlotTracker::getTypeIdSlot(), HandlePrefixedOrGroupedOption(), llvm::StringMap< std::unique_ptr< llvm::vfs::detail::InMemoryNode > >::lookup(), llvm::StringMap< std::unique_ptr< llvm::vfs::detail::InMemoryNode > >::operator==(), llvm::SpecialCaseList::parse(), llvm::PerTargetMIParsingState::parseInstrName(), llvm::RuntimeDyldMachOARM::processRelocationRef(), llvm::RuntimeDyldELF::processRelocationRef(), llvm::ImportedFunctionsInliningStatistics::recordInline(), and llvm::ExecutionEngineState::RemoveMapping().

◆ find() [2/2]

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

Definition at line 223 of file StringMap.h.

◆ getAllocator() [1/2]

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

Definition at line 191 of file StringMap.h.

Referenced by llvm::StructType::setName().

◆ getAllocator() [2/2]

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

Definition at line 192 of file StringMap.h.

◆ insert() [1/4]

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 301 of file StringMap.h.

◆ insert() [2/4]

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

◆ insert() [3/4]

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 309 of file StringMap.h.

◆ insert() [4/4]

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 294 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 316 of file StringMap.h.

◆ keys()

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

Definition at line 211 of file StringMap.h.

◆ lookup()

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

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

Definition at line 232 of file StringMap.h.

Referenced by llvm::gatherImportedSummariesForModule(), llvm::ModuleSummaryIndex::getModuleId(), llvm::Module::getNamedMetadata(), llvm::PassRegistry::getPassInfo(), llvm::ValueSymbolTable::lookup(), and llvm::MCContext::lookupSymbol().

◆ operator!=()

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

Definition at line 269 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 170 of file StringMap.h.

◆ operator==()

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

equal - check whether both of the containers are equal.

Definition at line 252 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 241 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 366 of file StringMap.h.

Referenced by llvm::StringMap< std::unique_ptr< llvm::vfs::detail::InMemoryNode > >::erase(), and llvm::StructType::setName().

◆ 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 328 of file StringMap.h.

Referenced by getBBClusterInfo(), llvm::StringSet< AllocatorTy >::insert(), llvm::StringMap< std::unique_ptr< llvm::vfs::detail::InMemoryNode > >::insert(), llvm::StringMap< std::unique_ptr< llvm::vfs::detail::InMemoryNode > >::insert_or_assign(), llvm::orc::SymbolStringPool::intern(), llvm::StringMap< std::unique_ptr< llvm::vfs::detail::InMemoryNode > >::operator[](), and llvm::GCOVFile::readGCNO().


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