LLVM  13.0.0git
Public Types | Public Member Functions | List of all members
llvm::MutableArrayRef< T > Class Template Reference

MutableArrayRef - Represent a mutable reference to an array (0 or more elements consecutively in memory), i.e. More...

#include "llvm/ADT/ArrayRef.h"

Inheritance diagram for llvm::MutableArrayRef< T >:
Inheritance graph
[legend]
Collaboration diagram for llvm::MutableArrayRef< T >:
Collaboration graph
[legend]

Public Types

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

Public Member Functions

 MutableArrayRef ()=default
 Construct an empty MutableArrayRef. More...
 
 MutableArrayRef (NoneType)
 Construct an empty MutableArrayRef from None. More...
 
 MutableArrayRef (T &OneElt)
 Construct a MutableArrayRef from a single element. More...
 
 MutableArrayRef (T *data, size_t length)
 Construct a MutableArrayRef from a pointer and length. More...
 
 MutableArrayRef (T *begin, T *end)
 Construct a MutableArrayRef from a range. More...
 
 MutableArrayRef (SmallVectorImpl< T > &Vec)
 Construct a MutableArrayRef from a SmallVector. More...
 
 MutableArrayRef (std::vector< T > &Vec)
 Construct a MutableArrayRef from a std::vector. More...
 
template<size_t N>
constexpr MutableArrayRef (std::array< T, N > &Arr)
 Construct a MutableArrayRef from a std::array. More...
 
template<size_t N>
constexpr MutableArrayRef (T(&Arr)[N])
 Construct a MutableArrayRef from a C array. More...
 
T * data () const
 
iterator begin () const
 
iterator end () const
 
reverse_iterator rbegin () const
 
reverse_iterator rend () const
 
T & front () const
 front - Get the first element. More...
 
T & back () const
 back - Get the last element. More...
 
MutableArrayRef< T > slice (size_t N, size_t M) const
 slice(n, m) - Chop off the first N elements of the array, and keep M elements in the array. More...
 
MutableArrayRef< T > slice (size_t N) const
 slice(n) - Chop off the first N elements of the array. More...
 
MutableArrayRef< T > drop_front (size_t N=1) const
 Drop the first N elements of the array. More...
 
MutableArrayRef< T > drop_back (size_t N=1) const
 
template<class PredicateT >
MutableArrayRef< T > drop_while (PredicateT Pred) const
 Return a copy of *this with the first N elements satisfying the given predicate removed. More...
 
template<class PredicateT >
MutableArrayRef< T > drop_until (PredicateT Pred) const
 Return a copy of *this with the first N elements not satisfying the given predicate removed. More...
 
MutableArrayRef< T > take_front (size_t N=1) const
 Return a copy of *this with only the first N elements. More...
 
MutableArrayRef< T > take_back (size_t N=1) const
 Return a copy of *this with only the last N elements. More...
 
template<class PredicateT >
MutableArrayRef< T > take_while (PredicateT Pred) const
 Return the first N elements of this Array that satisfy the given predicate. More...
 
template<class PredicateT >
MutableArrayRef< T > take_until (PredicateT Pred) const
 Return the first N elements of this Array that don't satisfy the given predicate. More...
 
Operator Overloads
T & operator[] (size_t Index) const
 
- Public Member Functions inherited from llvm::ArrayRef< T >
 ArrayRef ()=default
 Construct an empty ArrayRef. More...
 
 ArrayRef (NoneType)
 Construct an empty ArrayRef from None. More...
 
 ArrayRef (const T &OneElt)
 Construct an ArrayRef from a single element. More...
 
 ArrayRef (const T *data, size_t length)
 Construct an ArrayRef from a pointer and length. More...
 
 ArrayRef (const T *begin, const T *end)
 Construct an ArrayRef from a range. More...
 
template<typename U >
 ArrayRef (const SmallVectorTemplateCommon< T, U > &Vec)
 Construct an ArrayRef from a SmallVector. More...
 
template<typename A >
 ArrayRef (const std::vector< T, A > &Vec)
 Construct an ArrayRef from a std::vector. More...
 
template<size_t N>
constexpr ArrayRef (const std::array< T, N > &Arr)
 Construct an ArrayRef from a std::array. More...
 
template<size_t N>
constexpr ArrayRef (const T(&Arr)[N])
 Construct an ArrayRef from a C array. More...
 
 ArrayRef (const std::initializer_list< T > &Vec)
 Construct an ArrayRef from a std::initializer_list. More...
 
template<typename U >
 ArrayRef (const ArrayRef< U * > &A, std::enable_if_t< std::is_convertible< U *const *, T const * >::value > *=nullptr)
 Construct an ArrayRef<const T*> from ArrayRef<T*>. More...
 
template<typename U , typename DummyT >
 ArrayRef (const SmallVectorTemplateCommon< U *, DummyT > &Vec, std::enable_if_t< std::is_convertible< U *const *, T const * >::value > *=nullptr)
 Construct an ArrayRef<const T*> from a SmallVector<T*>. More...
 
template<typename U , typename A >
 ArrayRef (const std::vector< U *, A > &Vec, std::enable_if_t< std::is_convertible< U *const *, T const * >::value > *=0)
 Construct an ArrayRef<const T*> from std::vector<T*>. More...
 
iterator begin () const
 
iterator end () const
 
reverse_iterator rbegin () const
 
reverse_iterator rend () const
 
bool empty () const
 empty - Check if the array is empty. More...
 
const T * data () const
 
size_t size () const
 size - Get the array size. More...
 
const T & front () const
 front - Get the first element. More...
 
const T & back () const
 back - Get the last element. More...
 
template<typename Allocator >
ArrayRef< T > copy (Allocator &A)
 
bool equals (ArrayRef RHS) const
 equals - Check for element-wise equality. More...
 
ArrayRef< T > slice (size_t N, size_t M) const
 slice(n, m) - Chop off the first N elements of the array, and keep M elements in the array. More...
 
ArrayRef< T > slice (size_t N) const
 slice(n) - Chop off the first N elements of the array. More...
 
ArrayRef< T > drop_front (size_t N=1) const
 Drop the first N elements of the array. More...
 
ArrayRef< T > drop_back (size_t N=1) const
 Drop the last N elements of the array. More...
 
template<class PredicateT >
ArrayRef< T > drop_while (PredicateT Pred) const
 Return a copy of *this with the first N elements satisfying the given predicate removed. More...
 
template<class PredicateT >
ArrayRef< T > drop_until (PredicateT Pred) const
 Return a copy of *this with the first N elements not satisfying the given predicate removed. More...
 
ArrayRef< T > take_front (size_t N=1) const
 Return a copy of *this with only the first N elements. More...
 
ArrayRef< T > take_back (size_t N=1) const
 Return a copy of *this with only the last N elements. More...
 
template<class PredicateT >
ArrayRef< T > take_while (PredicateT Pred) const
 Return the first N elements of this Array that satisfy the given predicate. More...
 
template<class PredicateT >
ArrayRef< T > take_until (PredicateT Pred) const
 Return the first N elements of this Array that don't satisfy the given predicate. More...
 
const T & operator[] (size_t Index) const
 
template<typename U >
std::enable_if_t< std::is_same< U, T >::value, ArrayRef< T > > & operator= (U &&Temporary)=delete
 Disallow accidental assignment from a temporary. More...
 
template<typename U >
std::enable_if_t< std::is_same< U, T >::value, ArrayRef< T > > & operator= (std::initializer_list< U >)=delete
 Disallow accidental assignment from a temporary. More...
 
std::vector< T > vec () const
 
 operator std::vector< T > () const
 

Detailed Description

template<typename T>
class llvm::MutableArrayRef< T >

MutableArrayRef - Represent a mutable reference to an array (0 or more elements consecutively in memory), i.e.

a start pointer and a length. It allows various APIs to take and modify consecutive elements easily and conveniently.

This class does not own the underlying data, it is expected to be used in situations where the data resides in some other buffer, whose lifetime extends past that of the MutableArrayRef. For this reason, it is not in general safe to store a MutableArrayRef.

This is intended to be trivially copyable, so it should be passed by value.

Definition at line 305 of file ArrayRef.h.

Member Typedef Documentation

◆ const_iterator

template<typename T >
using llvm::MutableArrayRef< T >::const_iterator = const_pointer

Definition at line 313 of file ArrayRef.h.

◆ const_pointer

template<typename T >
using llvm::MutableArrayRef< T >::const_pointer = const value_type *

Definition at line 309 of file ArrayRef.h.

◆ const_reference

template<typename T >
using llvm::MutableArrayRef< T >::const_reference = const value_type &

Definition at line 311 of file ArrayRef.h.

◆ const_reverse_iterator

template<typename T >
using llvm::MutableArrayRef< T >::const_reverse_iterator = std::reverse_iterator<const_iterator>

Definition at line 315 of file ArrayRef.h.

◆ difference_type

template<typename T >
using llvm::MutableArrayRef< T >::difference_type = ptrdiff_t

Definition at line 317 of file ArrayRef.h.

◆ iterator

template<typename T >
using llvm::MutableArrayRef< T >::iterator = pointer

Definition at line 312 of file ArrayRef.h.

◆ pointer

template<typename T >
using llvm::MutableArrayRef< T >::pointer = value_type *

Definition at line 308 of file ArrayRef.h.

◆ reference

template<typename T >
using llvm::MutableArrayRef< T >::reference = value_type &

Definition at line 310 of file ArrayRef.h.

◆ reverse_iterator

template<typename T >
using llvm::MutableArrayRef< T >::reverse_iterator = std::reverse_iterator<iterator>

Definition at line 314 of file ArrayRef.h.

◆ size_type

template<typename T >
using llvm::MutableArrayRef< T >::size_type = size_t

Definition at line 316 of file ArrayRef.h.

◆ value_type

template<typename T >
using llvm::MutableArrayRef< T >::value_type = T

Definition at line 307 of file ArrayRef.h.

Constructor & Destructor Documentation

◆ MutableArrayRef() [1/9]

template<typename T >
llvm::MutableArrayRef< T >::MutableArrayRef ( )
default

Construct an empty MutableArrayRef.

◆ MutableArrayRef() [2/9]

template<typename T >
llvm::MutableArrayRef< T >::MutableArrayRef ( NoneType  )
inline

Construct an empty MutableArrayRef from None.

Definition at line 323 of file ArrayRef.h.

◆ MutableArrayRef() [3/9]

template<typename T >
llvm::MutableArrayRef< T >::MutableArrayRef ( T &  OneElt)
inline

Construct a MutableArrayRef from a single element.

Definition at line 326 of file ArrayRef.h.

◆ MutableArrayRef() [4/9]

template<typename T >
llvm::MutableArrayRef< T >::MutableArrayRef ( T *  data,
size_t  length 
)
inline

Construct a MutableArrayRef from a pointer and length.

Definition at line 329 of file ArrayRef.h.

◆ MutableArrayRef() [5/9]

template<typename T >
llvm::MutableArrayRef< T >::MutableArrayRef ( T *  begin,
T *  end 
)
inline

Construct a MutableArrayRef from a range.

Definition at line 333 of file ArrayRef.h.

◆ MutableArrayRef() [6/9]

template<typename T >
llvm::MutableArrayRef< T >::MutableArrayRef ( SmallVectorImpl< T > &  Vec)
inline

Construct a MutableArrayRef from a SmallVector.

Definition at line 336 of file ArrayRef.h.

◆ MutableArrayRef() [7/9]

template<typename T >
llvm::MutableArrayRef< T >::MutableArrayRef ( std::vector< T > &  Vec)
inline

Construct a MutableArrayRef from a std::vector.

Definition at line 340 of file ArrayRef.h.

◆ MutableArrayRef() [8/9]

template<typename T >
template<size_t N>
constexpr llvm::MutableArrayRef< T >::MutableArrayRef ( std::array< T, N > &  Arr)
inlineconstexpr

Construct a MutableArrayRef from a std::array.

Definition at line 345 of file ArrayRef.h.

◆ MutableArrayRef() [9/9]

template<typename T >
template<size_t N>
constexpr llvm::MutableArrayRef< T >::MutableArrayRef ( T(&)  Arr[N])
inlineconstexpr

Construct a MutableArrayRef from a C array.

Definition at line 350 of file ArrayRef.h.

Member Function Documentation

◆ back()

template<typename T >
T& llvm::MutableArrayRef< T >::back ( ) const
inline

back - Get the last element.

Definition at line 367 of file ArrayRef.h.

Referenced by llvm::performOptimizedStructLayout().

◆ begin()

template<typename T >
iterator llvm::MutableArrayRef< T >::begin ( ) const
inline

◆ data()

template<typename T >
T* llvm::MutableArrayRef< T >::data ( ) const
inline

◆ drop_back()

template<typename T >
MutableArrayRef<T> llvm::MutableArrayRef< T >::drop_back ( size_t  N = 1) const
inline

Definition at line 390 of file ArrayRef.h.

◆ drop_front()

template<typename T >
MutableArrayRef<T> llvm::MutableArrayRef< T >::drop_front ( size_t  N = 1) const
inline

Drop the first N elements of the array.

Definition at line 385 of file ArrayRef.h.

Referenced by getOpenFileImpl().

◆ drop_until()

template<typename T >
template<class PredicateT >
MutableArrayRef<T> llvm::MutableArrayRef< T >::drop_until ( PredicateT  Pred) const
inline

Return a copy of *this with the first N elements not satisfying the given predicate removed.

Definition at line 405 of file ArrayRef.h.

◆ drop_while()

template<typename T >
template<class PredicateT >
MutableArrayRef<T> llvm::MutableArrayRef< T >::drop_while ( PredicateT  Pred) const
inline

Return a copy of *this with the first N elements satisfying the given predicate removed.

Definition at line 398 of file ArrayRef.h.

◆ end()

template<typename T >
iterator llvm::MutableArrayRef< T >::end ( ) const
inline

◆ front()

template<typename T >
T& llvm::MutableArrayRef< T >::front ( ) const
inline

front - Get the first element.

Definition at line 361 of file ArrayRef.h.

◆ operator[]()

template<typename T >
T& llvm::MutableArrayRef< T >::operator[] ( size_t  Index) const
inline

Definition at line 440 of file ArrayRef.h.

◆ rbegin()

template<typename T >
reverse_iterator llvm::MutableArrayRef< T >::rbegin ( ) const
inline

Definition at line 357 of file ArrayRef.h.

◆ rend()

template<typename T >
reverse_iterator llvm::MutableArrayRef< T >::rend ( ) const
inline

Definition at line 358 of file ArrayRef.h.

◆ slice() [1/2]

template<typename T >
MutableArrayRef<T> llvm::MutableArrayRef< T >::slice ( size_t  N) const
inline

slice(n) - Chop off the first N elements of the array.

Definition at line 380 of file ArrayRef.h.

◆ slice() [2/2]

template<typename T >
MutableArrayRef<T> llvm::MutableArrayRef< T >::slice ( size_t  N,
size_t  M 
) const
inline

slice(n, m) - Chop off the first N elements of the array, and keep M elements in the array.

Definition at line 374 of file ArrayRef.h.

Referenced by multikeySort().

◆ take_back()

template<typename T >
MutableArrayRef<T> llvm::MutableArrayRef< T >::take_back ( size_t  N = 1) const
inline

Return a copy of *this with only the last N elements.

Definition at line 417 of file ArrayRef.h.

◆ take_front()

template<typename T >
MutableArrayRef<T> llvm::MutableArrayRef< T >::take_front ( size_t  N = 1) const
inline

Return a copy of *this with only the first N elements.

Definition at line 410 of file ArrayRef.h.

◆ take_until()

template<typename T >
template<class PredicateT >
MutableArrayRef<T> llvm::MutableArrayRef< T >::take_until ( PredicateT  Pred) const
inline

Return the first N elements of this Array that don't satisfy the given predicate.

Definition at line 433 of file ArrayRef.h.

◆ take_while()

template<typename T >
template<class PredicateT >
MutableArrayRef<T> llvm::MutableArrayRef< T >::take_while ( PredicateT  Pred) const
inline

Return the first N elements of this Array that satisfy the given predicate.

Definition at line 426 of file ArrayRef.h.


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