LLVM  3.7.0
Classes | Public Types | Public Member Functions | List of all members
llvm::SetVector< T, Vector, Set > Class Template Reference

A vector that has set insertion semantics. More...

#include <SetVector.h>

Inheritance diagram for llvm::SetVector< T, Vector, Set >:
[legend]

Public Types

typedef T value_type
 
typedef T key_type
 
typedef Treference
 
typedef const Tconst_reference
 
typedef Set set_type
 
typedef Vector vector_type
 
typedef vector_type::const_iterator iterator
 
typedef vector_type::const_iterator const_iterator
 
typedef vector_type::size_type size_type
 

Public Member Functions

 SetVector ()
 Construct an empty SetVector. More...
 
template<typename It >
 SetVector (It Start, It End)
 Initialize a SetVector with a range of elements. More...
 
bool empty () const
 Determine if the SetVector is empty or not. More...
 
size_type size () const
 Determine the number of elements in the SetVector. More...
 
iterator begin ()
 Get an iterator to the beginning of the SetVector. More...
 
const_iterator begin () const
 Get a const_iterator to the beginning of the SetVector. More...
 
iterator end ()
 Get an iterator to the end of the SetVector. More...
 
const_iterator end () const
 Get a const_iterator to the end of the SetVector. More...
 
const Tback () const
 Return the last element of the SetVector. More...
 
const_reference operator[] (size_type n) const
 Index into the SetVector. More...
 
bool insert (const value_type &X)
 Insert a new element into the SetVector. More...
 
template<typename It >
void insert (It Start, It End)
 Insert a range of elements into the SetVector. More...
 
bool remove (const value_type &X)
 Remove an item from the set vector. More...
 
template<typename UnaryPredicate >
bool remove_if (UnaryPredicate P)
 Remove items from the set vector based on a predicate function. More...
 
size_type count (const key_type &key) const
 Count the number of elements of a given key in the SetVector. More...
 
void clear ()
 Completely clear the SetVector. More...
 
void pop_back ()
 Remove the last element of the SetVector. More...
 
T LLVM_ATTRIBUTE_UNUSED_RESULT pop_back_val ()
 
bool operator== (const SetVector &that) const
 
bool operator!= (const SetVector &that) const
 

Detailed Description

template<typename T, typename Vector = std::vector<T>, typename Set = SmallSet<T, 16>>
class llvm::SetVector< T, Vector, Set >

A vector that has set insertion semantics.

This adapter class provides a way to keep a set of things that also has the property of a deterministic iteration order. The order of iteration is the order of insertion.

Definition at line 37 of file SetVector.h.

Member Typedef Documentation

template<typename T, typename Vector = std::vector<T>, typename Set = SmallSet<T, 16>>
typedef vector_type::const_iterator llvm::SetVector< T, Vector, Set >::const_iterator

Definition at line 46 of file SetVector.h.

template<typename T, typename Vector = std::vector<T>, typename Set = SmallSet<T, 16>>
typedef const T& llvm::SetVector< T, Vector, Set >::const_reference

Definition at line 42 of file SetVector.h.

template<typename T, typename Vector = std::vector<T>, typename Set = SmallSet<T, 16>>
typedef vector_type::const_iterator llvm::SetVector< T, Vector, Set >::iterator

Definition at line 45 of file SetVector.h.

template<typename T, typename Vector = std::vector<T>, typename Set = SmallSet<T, 16>>
typedef T llvm::SetVector< T, Vector, Set >::key_type

Definition at line 40 of file SetVector.h.

template<typename T, typename Vector = std::vector<T>, typename Set = SmallSet<T, 16>>
typedef T& llvm::SetVector< T, Vector, Set >::reference

Definition at line 41 of file SetVector.h.

template<typename T, typename Vector = std::vector<T>, typename Set = SmallSet<T, 16>>
typedef Set llvm::SetVector< T, Vector, Set >::set_type

Definition at line 43 of file SetVector.h.

template<typename T, typename Vector = std::vector<T>, typename Set = SmallSet<T, 16>>
typedef vector_type::size_type llvm::SetVector< T, Vector, Set >::size_type

Definition at line 47 of file SetVector.h.

template<typename T, typename Vector = std::vector<T>, typename Set = SmallSet<T, 16>>
typedef T llvm::SetVector< T, Vector, Set >::value_type

Definition at line 39 of file SetVector.h.

template<typename T, typename Vector = std::vector<T>, typename Set = SmallSet<T, 16>>
typedef Vector llvm::SetVector< T, Vector, Set >::vector_type

Definition at line 44 of file SetVector.h.

Constructor & Destructor Documentation

template<typename T, typename Vector = std::vector<T>, typename Set = SmallSet<T, 16>>
llvm::SetVector< T, Vector, Set >::SetVector ( )
inline

Construct an empty SetVector.

Definition at line 50 of file SetVector.h.

template<typename T, typename Vector = std::vector<T>, typename Set = SmallSet<T, 16>>
template<typename It >
llvm::SetVector< T, Vector, Set >::SetVector ( It  Start,
It  End 
)
inline

Initialize a SetVector with a range of elements.

Definition at line 54 of file SetVector.h.

Member Function Documentation

template<typename T, typename Vector = std::vector<T>, typename Set = SmallSet<T, 16>>
const T& llvm::SetVector< T, Vector, Set >::back ( ) const
inline
template<typename T, typename Vector = std::vector<T>, typename Set = SmallSet<T, 16>>
iterator llvm::SetVector< T, Vector, Set >::begin ( )
inline

Get an iterator to the beginning of the SetVector.

Definition at line 69 of file SetVector.h.

Referenced by AssignProtectedObjSet(), buildExtractionBlockSet(), CloneAliasScopeMetadata(), llvm::SetTheory::expand(), and VerifyPHIs().

template<typename T, typename Vector = std::vector<T>, typename Set = SmallSet<T, 16>>
const_iterator llvm::SetVector< T, Vector, Set >::begin ( ) const
inline

Get a const_iterator to the beginning of the SetVector.

Definition at line 74 of file SetVector.h.

template<typename T, typename Vector = std::vector<T>, typename Set = SmallSet<T, 16>>
void llvm::SetVector< T, Vector, Set >::clear ( )
inline

Completely clear the SetVector.

Definition at line 161 of file SetVector.h.

Referenced by buildExtractionBlockSet().

template<typename T, typename Vector = std::vector<T>, typename Set = SmallSet<T, 16>>
size_type llvm::SetVector< T, Vector, Set >::count ( const key_type key) const
inline

Count the number of elements of a given key in the SetVector.

Returns
0 if the element is not in the SetVector, 1 if it is.

Definition at line 156 of file SetVector.h.

Referenced by buildExtractionBlockSet(), definedInCaller(), definedInRegion(), and findReachableBlocks().

template<typename T, typename Vector = std::vector<T>, typename Set = SmallSet<T, 16>>
bool llvm::SetVector< T, Vector, Set >::empty ( ) const
inline
template<typename T, typename Vector = std::vector<T>, typename Set = SmallSet<T, 16>>
iterator llvm::SetVector< T, Vector, Set >::end ( )
inline

Get an iterator to the end of the SetVector.

Definition at line 79 of file SetVector.h.

Referenced by AssignProtectedObjSet(), buildExtractionBlockSet(), CloneAliasScopeMetadata(), and llvm::SetTheory::expand().

template<typename T, typename Vector = std::vector<T>, typename Set = SmallSet<T, 16>>
const_iterator llvm::SetVector< T, Vector, Set >::end ( ) const
inline

Get a const_iterator to the end of the SetVector.

Definition at line 84 of file SetVector.h.

template<typename T, typename Vector = std::vector<T>, typename Set = SmallSet<T, 16>>
bool llvm::SetVector< T, Vector, Set >::insert ( const value_type X)
inline
template<typename T, typename Vector = std::vector<T>, typename Set = SmallSet<T, 16>>
template<typename It >
void llvm::SetVector< T, Vector, Set >::insert ( It  Start,
It  End 
)
inline

Insert a range of elements into the SetVector.

Definition at line 111 of file SetVector.h.

template<typename T, typename Vector = std::vector<T>, typename Set = SmallSet<T, 16>>
bool llvm::SetVector< T, Vector, Set >::operator!= ( const SetVector< T, Vector, Set > &  that) const
inline

Definition at line 183 of file SetVector.h.

template<typename T, typename Vector = std::vector<T>, typename Set = SmallSet<T, 16>>
bool llvm::SetVector< T, Vector, Set >::operator== ( const SetVector< T, Vector, Set > &  that) const
inline

Definition at line 179 of file SetVector.h.

template<typename T, typename Vector = std::vector<T>, typename Set = SmallSet<T, 16>>
const_reference llvm::SetVector< T, Vector, Set >::operator[] ( size_type  n) const
inline

Index into the SetVector.

Definition at line 95 of file SetVector.h.

template<typename T, typename Vector = std::vector<T>, typename Set = SmallSet<T, 16>>
void llvm::SetVector< T, Vector, Set >::pop_back ( )
inline

Remove the last element of the SetVector.

Definition at line 167 of file SetVector.h.

Referenced by llvm::LiveRangeEdit::eliminateDeadDefs(), and llvm::SetVector< llvm::BasicBlock * >::pop_back_val().

template<typename T, typename Vector = std::vector<T>, typename Set = SmallSet<T, 16>>
T LLVM_ATTRIBUTE_UNUSED_RESULT llvm::SetVector< T, Vector, Set >::pop_back_val ( )
inline

Definition at line 173 of file SetVector.h.

Referenced by findReachableBlocks().

template<typename T, typename Vector = std::vector<T>, typename Set = SmallSet<T, 16>>
bool llvm::SetVector< T, Vector, Set >::remove ( const value_type X)
inline

Remove an item from the set vector.

Definition at line 118 of file SetVector.h.

template<typename T, typename Vector = std::vector<T>, typename Set = SmallSet<T, 16>>
template<typename UnaryPredicate >
bool llvm::SetVector< T, Vector, Set >::remove_if ( UnaryPredicate  P)
inline

Remove items from the set vector based on a predicate function.

This is intended to be equivalent to the following code, if we could write it:

V.erase(std::remove_if(V.begin(), V.end(), P), V.end());

However, SetVector doesn't expose non-const iterators, making any algorithm like remove_if impossible to use.

Returns
true if any element is removed.

Definition at line 143 of file SetVector.h.

template<typename T, typename Vector = std::vector<T>, typename Set = SmallSet<T, 16>>
size_type llvm::SetVector< T, Vector, Set >::size ( ) const
inline

Determine the number of elements in the SetVector.

Definition at line 64 of file SetVector.h.

Referenced by tryToMakeAllocaBePromotable().


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