WPILibC++ 2024.3.1
wpi::SmallVectorImpl< T > Class Template Reference

This class consists of common code factored out of the SmallVector class to reduce code duplication based on the SmallVector 'N' template parameter. More...

#include </home/runner/work/allwpilib/allwpilib/wpiutil/src/main/native/thirdparty/llvm/include/wpi/SmallVector.h>

Inheritance diagram for wpi::SmallVectorImpl< T >:
wpi::SmallVectorTemplateBase< T, bool > wpi::SmallVectorTemplateCommon< T, typename > wpi::SmallVectorBase wpi::SmallVector< T, N > wpi::SmallVector< T, N >

Public Types

using iterator = typename SuperClass::iterator
 
using const_iterator = typename SuperClass::const_iterator
 
using reference = typename SuperClass::reference
 
using size_type = typename SuperClass::size_type
 
- Public Types inherited from wpi::SmallVectorTemplateCommon< T, typename >
using size_type = size_t
 
using difference_type = ptrdiff_t
 
using value_type = T
 
using iterator = T *
 
using const_iterator = const T *
 
using const_reverse_iterator = std::reverse_iterator< const_iterator >
 
using reverse_iterator = std::reverse_iterator< iterator >
 
using reference = T &
 
using const_reference = const T &
 
using pointer = T *
 
using const_pointer = const T *
 

Public Member Functions

 SmallVectorImpl (const SmallVectorImpl &)=delete
 
 ~SmallVectorImpl ()
 
void clear ()
 
void resize (size_type N)
 
void resize_for_overwrite (size_type N)
 Like resize, but T is POD, the new values won't be initialized. More...
 
void truncate (size_type N)
 Like resize, but requires that N is less than size(). More...
 
void resize (size_type N, ValueParamT NV)
 
void reserve (size_type N)
 
void pop_back_n (size_type NumItems)
 
pop_back_val ()
 
void swap (SmallVectorImpl &RHS)
 
template<typename ItTy , typename = EnableIfConvertibleToInputIterator<ItTy>>
void append (ItTy in_start, ItTy in_end)
 Add the specified range to the end of the SmallVector. More...
 
void append (size_type NumInputs, ValueParamT Elt)
 Append NumInputs copies of Elt to the end. More...
 
void append (std::initializer_list< T > IL)
 
void append (const SmallVectorImpl &RHS)
 
void assign (size_type NumElts, ValueParamT Elt)
 
template<typename ItTy , typename = EnableIfConvertibleToInputIterator<ItTy>>
void assign (ItTy in_start, ItTy in_end)
 
void assign (std::initializer_list< T > IL)
 
void assign (const SmallVectorImpl &RHS)
 
iterator erase (const_iterator CI)
 
iterator erase (const_iterator CS, const_iterator CE)
 
iterator insert (iterator I, T &&Elt)
 
iterator insert (iterator I, const T &Elt)
 
iterator insert (iterator I, size_type NumToInsert, ValueParamT Elt)
 
template<typename ItTy , typename = EnableIfConvertibleToInputIterator<ItTy>>
iterator insert (iterator I, ItTy From, ItTy To)
 
void insert (iterator I, std::initializer_list< T > IL)
 
template<typename... ArgTypes>
reference emplace_back (ArgTypes &&... Args)
 
SmallVectorImploperator= (const SmallVectorImpl &RHS)
 
SmallVectorImploperator= (SmallVectorImpl &&RHS)
 
bool operator== (const SmallVectorImpl &RHS) const
 
bool operator!= (const SmallVectorImpl &RHS) const
 
bool operator< (const SmallVectorImpl &RHS) const
 
bool operator> (const SmallVectorImpl &RHS) const
 
bool operator<= (const SmallVectorImpl &RHS) const
 
bool operator>= (const SmallVectorImpl &RHS) const
 
- Public Member Functions inherited from wpi::SmallVectorTemplateBase< T, bool >
void push_back (const T &Elt)
 
void push_back (T &&Elt)
 
void pop_back ()
 
- Public Member Functions inherited from wpi::SmallVectorTemplateCommon< T, typename >
iterator begin ()
 
const_iterator begin () const
 
iterator end ()
 
const_iterator end () const
 
reverse_iterator rbegin ()
 
const_reverse_iterator rbegin () const
 
reverse_iterator rend ()
 
const_reverse_iterator rend () const
 
size_type size_in_bytes () const
 
size_type max_size () const
 
size_t capacity_in_bytes () const
 
pointer data ()
 Return a pointer to the vector's buffer, even if empty(). More...
 
const_pointer data () const
 Return a pointer to the vector's buffer, even if empty(). More...
 
reference operator[] (size_type idx)
 
const_reference operator[] (size_type idx) const
 
reference front ()
 
const_reference front () const
 
reference back ()
 
const_reference back () const
 
size_t capacity () const
 
bool empty () const
 
size_t size () const
 
- Public Member Functions inherited from wpi::SmallVectorBase
size_t size () const
 
size_t capacity () const
 
bool empty () const
 

Protected Types

using ValueParamT = typename SuperClass::ValueParamT
 
- Protected Types inherited from wpi::SmallVectorTemplateBase< T, bool >
using ValueParamT = const T &
 

Protected Member Functions

 SmallVectorImpl (unsigned N)
 
void assignRemote (SmallVectorImpl &&RHS)
 
- Protected Member Functions inherited from wpi::SmallVectorTemplateBase< T, bool >
 SmallVectorTemplateBase (size_t Size)
 
void grow (size_t MinSize=0)
 Grow the allocated memory (without initializing new elements), doubling the size of the allocated memory. More...
 
T * mallocForGrow (size_t MinSize, size_t &NewCapacity)
 Create a new allocation big enough for MinSize and pass back its size in NewCapacity. More...
 
void moveElementsForGrow (T *NewElts)
 Move existing elements over to the new allocation NewElts, the middle section of grow(). More...
 
void takeAllocationForGrow (T *NewElts, size_t NewCapacity)
 Transfer ownership of the allocation, finishing up grow(). More...
 
const T * reserveForParamAndGetAddress (const T &Elt, size_t N=1)
 Reserve enough space to add one element, and return the updated element pointer in case it was a reference to the storage. More...
 
T * reserveForParamAndGetAddress (T &Elt, size_t N=1)
 Reserve enough space to add one element, and return the updated element pointer in case it was a reference to the storage. More...
 
void growAndAssign (size_t NumElts, const T &Elt)
 
template<typename... ArgTypes>
T & growAndEmplaceBack (ArgTypes &&... Args)
 
- Protected Member Functions inherited from wpi::SmallVectorTemplateCommon< T, typename >
void * getFirstEl () const
 Find the address of the first element. More...
 
 SmallVectorTemplateCommon (size_t Size)
 
void grow_pod (size_t MinSize, size_t TSize)
 
bool isSmall () const
 Return true if this is a smallvector which has not had dynamic memory allocated for it. More...
 
void resetToSmall ()
 Put this vector in a state of being small. More...
 
bool isReferenceToRange (const void *V, const void *First, const void *Last) const
 Return true if V is an internal reference to the given range. More...
 
bool isReferenceToStorage (const void *V) const
 Return true if V is an internal reference to this vector. More...
 
bool isRangeInStorage (const void *First, const void *Last) const
 Return true if First and Last form a valid (possibly empty) range in this vector's storage. More...
 
bool isSafeToReferenceAfterResize (const void *Elt, size_t NewSize)
 Return true unless Elt will be invalidated by resizing the vector to NewSize. More...
 
void assertSafeToReferenceAfterResize (const void *Elt, size_t NewSize)
 Check whether Elt will be invalidated by resizing the vector to NewSize. More...
 
void assertSafeToAdd (const void *Elt, size_t N=1)
 Check whether Elt will be invalidated by increasing the size of the vector by N. More...
 
void assertSafeToReferenceAfterClear (const T *From, const T *To)
 Check whether any part of the range will be invalidated by clearing. More...
 
template<class ItTy , std::enable_if_t<!std::is_same< std::remove_const_t< ItTy >, T * >::value, bool > = false>
void assertSafeToReferenceAfterClear (ItTy, ItTy)
 
void assertSafeToAddRange (const T *From, const T *To)
 Check whether any part of the range will be invalidated by growing. More...
 
template<class ItTy , std::enable_if_t<!std::is_same< std::remove_const_t< ItTy >, T * >::value, bool > = false>
void assertSafeToAddRange (ItTy, ItTy)
 
- Protected Member Functions inherited from wpi::SmallVectorBase
 SmallVectorBase ()=delete
 
 SmallVectorBase (void *FirstEl, size_t TotalCapacity)
 
void * mallocForGrow (void *FirstEl, size_t MinSize, size_t TSize, size_t &NewCapacity)
 This is a helper for grow() that's out of line to reduce code duplication. More...
 
void grow_pod (void *FirstEl, size_t MinSize, size_t TSize)
 This is an implementation of the grow() method which only works on POD-like data types and is out of line to reduce code duplication. More...
 
void * replaceAllocation (void *NewElts, size_t TSize, size_t NewCapacity, size_t VSize=0)
 If vector was first created with capacity 0, getFirstEl() points to the memory right after, an area unallocated. More...
 
void set_size (size_t N)
 Set the array size to N, which the current array must have enough capacity for. More...
 

Additional Inherited Members

- Static Protected Member Functions inherited from wpi::SmallVectorTemplateBase< T, bool >
static void destroy_range (T *S, T *E)
 
template<typename It1 , typename It2 >
static void uninitialized_move (It1 I, It1 E, It2 Dest)
 Move the range [I, E) into the uninitialized memory starting with "Dest", constructing elements as needed. More...
 
template<typename It1 , typename It2 >
static void uninitialized_copy (It1 I, It1 E, It2 Dest)
 Copy the range [I, E) onto the uninitialized memory starting with "Dest", constructing elements as needed. More...
 
static T && forward_value_param (T &&V)
 
static const T & forward_value_param (const T &V)
 
- Static Protected Member Functions inherited from wpi::SmallVectorTemplateCommon< T, typename >
template<class U >
static const T * reserveForParamAndGetAddressImpl (U *This, const T &Elt, size_t N)
 Reserve enough space to add one element, and return the updated element pointer in case it was a reference to the storage. More...
 
- Static Protected Member Functions inherited from wpi::SmallVectorBase
static constexpr size_t SizeTypeMax ()
 The maximum value of the Size_T used. More...
 
- Protected Attributes inherited from wpi::SmallVectorBase
void * BeginX
 
unsigned Size = 0
 
unsigned Capacity
 
- Static Protected Attributes inherited from wpi::SmallVectorTemplateBase< T, bool >
static constexpr bool TakesParamByValue = false
 

Detailed Description

template<typename T>
class wpi::SmallVectorImpl< T >

This class consists of common code factored out of the SmallVector class to reduce code duplication based on the SmallVector 'N' template parameter.

Member Typedef Documentation

◆ const_iterator

template<typename T >
using wpi::SmallVectorImpl< T >::const_iterator = typename SuperClass::const_iterator

◆ iterator

template<typename T >
using wpi::SmallVectorImpl< T >::iterator = typename SuperClass::iterator

◆ reference

template<typename T >
using wpi::SmallVectorImpl< T >::reference = typename SuperClass::reference

◆ size_type

template<typename T >
using wpi::SmallVectorImpl< T >::size_type = typename SuperClass::size_type

◆ ValueParamT

template<typename T >
using wpi::SmallVectorImpl< T >::ValueParamT = typename SuperClass::ValueParamT
protected

Constructor & Destructor Documentation

◆ SmallVectorImpl() [1/2]

template<typename T >
wpi::SmallVectorImpl< T >::SmallVectorImpl ( unsigned  N)
inlineexplicitprotected

◆ SmallVectorImpl() [2/2]

template<typename T >
wpi::SmallVectorImpl< T >::SmallVectorImpl ( const SmallVectorImpl< T > &  )
delete

◆ ~SmallVectorImpl()

template<typename T >
wpi::SmallVectorImpl< T >::~SmallVectorImpl ( )
inline

Member Function Documentation

◆ append() [1/4]

template<typename T >
void wpi::SmallVectorImpl< T >::append ( const SmallVectorImpl< T > &  RHS)
inline

◆ append() [2/4]

template<typename T >
template<typename ItTy , typename = EnableIfConvertibleToInputIterator<ItTy>>
void wpi::SmallVectorImpl< T >::append ( ItTy  in_start,
ItTy  in_end 
)
inline

Add the specified range to the end of the SmallVector.

◆ append() [3/4]

template<typename T >
void wpi::SmallVectorImpl< T >::append ( size_type  NumInputs,
ValueParamT  Elt 
)
inline

Append NumInputs copies of Elt to the end.

◆ append() [4/4]

template<typename T >
void wpi::SmallVectorImpl< T >::append ( std::initializer_list< T >  IL)
inline

◆ assign() [1/4]

template<typename T >
void wpi::SmallVectorImpl< T >::assign ( const SmallVectorImpl< T > &  RHS)
inline

◆ assign() [2/4]

template<typename T >
template<typename ItTy , typename = EnableIfConvertibleToInputIterator<ItTy>>
void wpi::SmallVectorImpl< T >::assign ( ItTy  in_start,
ItTy  in_end 
)
inline

◆ assign() [3/4]

template<typename T >
void wpi::SmallVectorImpl< T >::assign ( size_type  NumElts,
ValueParamT  Elt 
)
inline

◆ assign() [4/4]

template<typename T >
void wpi::SmallVectorImpl< T >::assign ( std::initializer_list< T >  IL)
inline

◆ assignRemote()

template<typename T >
void wpi::SmallVectorImpl< T >::assignRemote ( SmallVectorImpl< T > &&  RHS)
inlineprotected

◆ clear()

template<typename T >
void wpi::SmallVectorImpl< T >::clear ( )
inline

◆ emplace_back()

template<typename T >
template<typename... ArgTypes>
reference wpi::SmallVectorImpl< T >::emplace_back ( ArgTypes &&...  Args)
inline

◆ erase() [1/2]

template<typename T >
iterator wpi::SmallVectorImpl< T >::erase ( const_iterator  CI)
inline

◆ erase() [2/2]

template<typename T >
iterator wpi::SmallVectorImpl< T >::erase ( const_iterator  CS,
const_iterator  CE 
)
inline

◆ insert() [1/5]

template<typename T >
iterator wpi::SmallVectorImpl< T >::insert ( iterator  I,
const T &  Elt 
)
inline

◆ insert() [2/5]

template<typename T >
template<typename ItTy , typename = EnableIfConvertibleToInputIterator<ItTy>>
iterator wpi::SmallVectorImpl< T >::insert ( iterator  I,
ItTy  From,
ItTy  To 
)
inline

◆ insert() [3/5]

template<typename T >
iterator wpi::SmallVectorImpl< T >::insert ( iterator  I,
size_type  NumToInsert,
ValueParamT  Elt 
)
inline

◆ insert() [4/5]

template<typename T >
void wpi::SmallVectorImpl< T >::insert ( iterator  I,
std::initializer_list< T >  IL 
)
inline

◆ insert() [5/5]

template<typename T >
iterator wpi::SmallVectorImpl< T >::insert ( iterator  I,
T &&  Elt 
)
inline

◆ operator!=()

template<typename T >
bool wpi::SmallVectorImpl< T >::operator!= ( const SmallVectorImpl< T > &  RHS) const
inline

◆ operator<()

template<typename T >
bool wpi::SmallVectorImpl< T >::operator< ( const SmallVectorImpl< T > &  RHS) const
inline

◆ operator<=()

template<typename T >
bool wpi::SmallVectorImpl< T >::operator<= ( const SmallVectorImpl< T > &  RHS) const
inline

◆ operator=() [1/2]

template<typename T >
SmallVectorImpl< T > & wpi::SmallVectorImpl< T >::operator= ( const SmallVectorImpl< T > &  RHS)

◆ operator=() [2/2]

template<typename T >
SmallVectorImpl< T > & wpi::SmallVectorImpl< T >::operator= ( SmallVectorImpl< T > &&  RHS)

◆ operator==()

template<typename T >
bool wpi::SmallVectorImpl< T >::operator== ( const SmallVectorImpl< T > &  RHS) const
inline

◆ operator>()

template<typename T >
bool wpi::SmallVectorImpl< T >::operator> ( const SmallVectorImpl< T > &  RHS) const
inline

◆ operator>=()

template<typename T >
bool wpi::SmallVectorImpl< T >::operator>= ( const SmallVectorImpl< T > &  RHS) const
inline

◆ pop_back_n()

template<typename T >
void wpi::SmallVectorImpl< T >::pop_back_n ( size_type  NumItems)
inline

◆ pop_back_val()

template<typename T >
T wpi::SmallVectorImpl< T >::pop_back_val ( )
inline

◆ reserve()

template<typename T >
void wpi::SmallVectorImpl< T >::reserve ( size_type  N)
inline

◆ resize() [1/2]

template<typename T >
void wpi::SmallVectorImpl< T >::resize ( size_type  N)
inline

◆ resize() [2/2]

template<typename T >
void wpi::SmallVectorImpl< T >::resize ( size_type  N,
ValueParamT  NV 
)
inline

◆ resize_for_overwrite()

template<typename T >
void wpi::SmallVectorImpl< T >::resize_for_overwrite ( size_type  N)
inline

Like resize, but T is POD, the new values won't be initialized.

◆ swap()

template<typename T >
void wpi::SmallVectorImpl< T >::swap ( SmallVectorImpl< T > &  RHS)

◆ truncate()

template<typename T >
void wpi::SmallVectorImpl< T >::truncate ( size_type  N)
inline

Like resize, but requires that N is less than size().


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