LLVM 20.0.0git
|
A set of symbols to look up, each associated with a SymbolLookupFlags value. More...
#include "llvm/ExecutionEngine/Orc/Core.h"
Public Types | |
using | value_type = std::pair< SymbolStringPtr, SymbolLookupFlags > |
using | UnderlyingVector = std::vector< value_type > |
using | iterator = UnderlyingVector::iterator |
using | const_iterator = UnderlyingVector::const_iterator |
Public Member Functions | |
SymbolLookupSet ()=default | |
SymbolLookupSet (SymbolStringPtr Name, SymbolLookupFlags Flags=SymbolLookupFlags::RequiredSymbol) | |
SymbolLookupSet (std::initializer_list< SymbolStringPtr > Names, SymbolLookupFlags Flags=SymbolLookupFlags::RequiredSymbol) | |
Construct a SymbolLookupSet from an initializer list of SymbolStringPtrs. | |
SymbolLookupSet (const SymbolNameSet &Names, SymbolLookupFlags Flags=SymbolLookupFlags::RequiredSymbol) | |
Construct a SymbolLookupSet from a SymbolNameSet with the given Flags used for each value. | |
SymbolLookupSet (ArrayRef< SymbolStringPtr > Names, SymbolLookupFlags Flags=SymbolLookupFlags::RequiredSymbol) | |
Construct a SymbolLookupSet from a vector of symbols with the given Flags used for each value. | |
SymbolLookupSet & | add (SymbolStringPtr Name, SymbolLookupFlags Flags=SymbolLookupFlags::RequiredSymbol) |
Add an element to the set. | |
SymbolLookupSet & | append (SymbolLookupSet Other) |
Quickly append one lookup set to another. | |
bool | empty () const |
UnderlyingVector::size_type | size () const |
iterator | begin () |
iterator | end () |
const_iterator | begin () const |
const_iterator | end () const |
void | remove (UnderlyingVector::size_type I) |
Removes the Ith element of the vector, replacing it with the last element. | |
void | remove (iterator I) |
Removes the element pointed to by the given iterator. | |
template<typename PredFn > | |
void | remove_if (PredFn &&Pred) |
Removes all elements matching the given predicate, which must be callable as bool(const SymbolStringPtr &, SymbolLookupFlags Flags). | |
template<typename BodyFn > | |
auto | forEachWithRemoval (BodyFn &&Body) -> std::enable_if_t< std::is_same< decltype(Body(std::declval< const SymbolStringPtr & >(), std::declval< SymbolLookupFlags >())), bool >::value > |
Loop over the elements of this SymbolLookupSet, applying the Body function to each one. | |
template<typename BodyFn > | |
auto | forEachWithRemoval (BodyFn &&Body) -> std::enable_if_t< std::is_same< decltype(Body(std::declval< const SymbolStringPtr & >(), std::declval< SymbolLookupFlags >())), Expected< bool > >::value, Error > |
Loop over the elements of this SymbolLookupSet, applying the Body function to each one. | |
SymbolNameVector | getSymbolNames () const |
Construct a SymbolNameVector from this instance by dropping the Flags values. | |
void | sortByAddress () |
Sort the lookup set by pointer value. | |
void | sortByName () |
Sort the lookup set lexicographically. | |
void | removeDuplicates () |
Remove any duplicate elements. | |
bool | containsDuplicates () |
Returns true if this set contains any duplicates. | |
Static Public Member Functions | |
template<typename ValT > | |
static SymbolLookupSet | fromMapKeys (const DenseMap< SymbolStringPtr, ValT > &M, SymbolLookupFlags Flags=SymbolLookupFlags::RequiredSymbol) |
Construct a SymbolLookupSet from DenseMap keys. | |
A set of symbols to look up, each associated with a SymbolLookupFlags value.
This class is backed by a vector and optimized for fast insertion, deletion and iteration. It does not guarantee a stable order between operations, and will not automatically detect duplicate elements (they can be manually checked by calling the validate method).
using llvm::orc::SymbolLookupSet::const_iterator = UnderlyingVector::const_iterator |
using llvm::orc::SymbolLookupSet::iterator = UnderlyingVector::iterator |
using llvm::orc::SymbolLookupSet::UnderlyingVector = std::vector<value_type> |
using llvm::orc::SymbolLookupSet::value_type = std::pair<SymbolStringPtr, SymbolLookupFlags> |
|
default |
|
inlineexplicit |
|
inlineexplicit |
Construct a SymbolLookupSet from an initializer list of SymbolStringPtrs.
|
inlineexplicit |
Construct a SymbolLookupSet from a SymbolNameSet with the given Flags used for each value.
Definition at line 209 of file Core.h.
References add(), Name, and llvm::detail::DenseSetImpl< ValueT, MapTy, ValueInfoT >::size().
|
inlineexplicit |
Construct a SymbolLookupSet from a vector of symbols with the given Flags used for each value.
If the ArrayRef contains duplicates it is up to the client to remove these before using this instance for lookup.
Definition at line 221 of file Core.h.
References add(), Name, and llvm::ArrayRef< T >::size().
|
inline |
Add an element to the set.
The client is responsible for checking that duplicates are not added.
Definition at line 244 of file Core.h.
References Name.
Referenced by llvm::orc::createJITLoaderGDBRegistrar(), LLVMOrcExecutionSessionLookup(), llvm::orc::ObjectLinkingLayerJITLinkContext::lookup(), llvm::orc::CtorDtorRunner::run(), SymbolLookupSet(), llvm::orc::EPCDynamicLibrarySearchGenerator::tryToGenerate(), and llvm::orc::DLLImportDefinitionGenerator::tryToGenerate().
|
inline |
Quickly append one lookup set to another.
Definition at line 251 of file Core.h.
References llvm::Other.
|
inline |
|
inline |
|
inline |
Returns true if this set contains any duplicates.
This should only be used in assertions.
Definition at line 371 of file Core.h.
References I, and sortByAddress().
Referenced by llvm::orc::CtorDtorRunner::run().
|
inline |
|
inline |
Loop over the elements of this SymbolLookupSet, applying the Body function to each one.
Body must be callable as bool(const SymbolStringPtr &, SymbolLookupFlags). If Body returns true then the element just passed in is removed from the set. If Body returns false then the element is retained.
|
inline |
Loop over the elements of this SymbolLookupSet, applying the Body function to each one.
Body must be callable as Expected<bool>(const SymbolStringPtr &, SymbolLookupFlags). If Body returns a failure value, the loop exits immediately. If Body returns true then the element just passed in is removed from the set. If Body returns false then the element is retained.
Definition at line 317 of file Core.h.
References I, Name, remove(), and llvm::Error::success().
|
inlinestatic |
Construct a SymbolLookupSet from DenseMap keys.
Definition at line 232 of file Core.h.
References Name, and llvm::orc::Result.
Referenced by llvm::orc::ExecutionSession::registerJITDispatchHandlers().
|
inline |
|
inline |
|
inline |
Removes the Ith element of the vector, replacing it with the last element.
Definition at line 266 of file Core.h.
References I, and std::swap().
Referenced by forEachWithRemoval(), and remove_if().
|
inline |
|
inline |
Remove any duplicate elements.
If a SymbolLookupSet is not duplicate-free by construction, this method can be used to turn it into a proper set.
Definition at line 362 of file Core.h.
References sortByAddress(), and llvm::unique().
|
inline |
Definition at line 259 of file Core.h.
Referenced by llvm::orc::CAPIDefinitionGenerator::tryToGenerate().
|
inline |
Sort the lookup set by pointer value.
This sort is fast but sensitive to allocation order and so should not be used where a consistent order is required.
Definition at line 350 of file Core.h.
References llvm::sort().
Referenced by containsDuplicates(), and removeDuplicates().
|
inline |
Sort the lookup set lexicographically.
This sort is slow but the order is unaffected by allocation order.
Definition at line 354 of file Core.h.
References LHS, RHS, and llvm::sort().