Logo ROOT  
Reference Guide
 
Loading...
Searching...
No Matches
ROOT::Internal::VecOps::SmallVectorTemplateBase< T, true > Class Template Reference

template<typename T>
class ROOT::Internal::VecOps::SmallVectorTemplateBase< T, true >

SmallVectorTemplateBase<TriviallyCopyable = true> - This is where we put method implementations that are designed to work with trivially copyable T's.

This allows using memcpy in place of copy/move construction and skipping destruction.

Definition at line 428 of file RVec.hxx.

Public Types

using const_iterator = typename SuperClass::const_iterator
 
using iterator = typename SuperClass::iterator
 
using reference = typename SuperClass::reference
 
using size_type = typename SuperClass::size_type
 
- Public Types inherited from ROOT::Internal::VecOps::SmallVectorTemplateCommon< T >
using const_iterator = const T *
 
using const_pointer = const T *
 
using const_reference = const T &
 
using const_reverse_iterator = std::reverse_iterator< const_iterator >
 
using difference_type = ptrdiff_t
 
using iterator = T *
 
using pointer = T *
 
using reference = T &
 
using reverse_iterator = std::reverse_iterator< iterator >
 
using size_type = size_t
 
using value_type = T
 
- Public Types inherited from ROOT::Internal::VecOps::SmallVectorBase
using Size_T = int32_t
 

Public Member Functions

void pop_back ()
 
void push_back (const T &Elt)
 
- Public Member Functions inherited from ROOT::Internal::VecOps::SmallVectorTemplateCommon< T >
reference back ()
 
const_reference back () const
 
const_iterator begin () const noexcept
 
iterator begin () noexcept
 
size_t capacity () const noexcept
 
size_t capacity_in_bytes () const
 
const_iterator cbegin () const noexcept
 
const_iterator cend () const noexcept
 
const_reverse_iterator crbegin () const noexcept
 
const_reverse_iterator crend () const noexcept
 
const_pointer data () const noexcept
 Return a pointer to the vector's buffer, even if empty().
 
pointer data () noexcept
 Return a pointer to the vector's buffer, even if empty().
 
bool empty () const
 
const_iterator end () const noexcept
 
iterator end () noexcept
 
reference front ()
 
const_reference front () const
 
size_type max_size () const noexcept
 
const_reverse_iterator rbegin () const noexcept
 
reverse_iterator rbegin () noexcept
 
const_reverse_iterator rend () const noexcept
 
reverse_iterator rend () noexcept
 
size_t size () const
 
size_type size_in_bytes () const
 
- Public Member Functions inherited from ROOT::Internal::VecOps::SmallVectorBase
size_t capacity () const noexcept
 
bool empty () const
 
void set_size (size_t N)
 Set the array size to N, which the current array must have enough capacity for.
 
size_t size () const
 

Protected Member Functions

 SmallVectorTemplateBase (size_t Size)
 
void grow (size_t MinSize=0)
 Double the size of the allocated memory, guaranteeing space for at least one more element or MinSize if specified.
 
- Protected Member Functions inherited from ROOT::Internal::VecOps::SmallVectorTemplateCommon< T >
 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.
 
void resetToSmall ()
 Put this vector in a state of being small.
 
- Protected Member Functions inherited from ROOT::Internal::VecOps::SmallVectorBase
 SmallVectorBase ()=delete
 
 SmallVectorBase (void *FirstEl, size_t TotalCapacity)
 
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.
 
bool Owns () const
 If false, the RVec is in "memory adoption" mode, i.e. it is acting as a view on a memory buffer it does not own.
 

Static Protected Member Functions

static void destroy_range (T *, T *)
 
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 into it as needed.
 
template<typename T1 , typename T2 >
static void uninitialized_copy (T1 *I, T1 *E, T2 *Dest, typename std::enable_if< std::is_same< typename std::remove_const< T1 >::type, T2 >::value >::type *=nullptr)
 Copy the range [I, E) onto the uninitialized memory starting with "Dest", constructing elements into it as needed.
 
template<typename It1 , typename It2 >
static void uninitialized_move (It1 I, It1 E, It2 Dest)
 Move the range [I, E) onto the uninitialized memory starting with "Dest", constructing elements into it as needed.
 
- Static Protected Member Functions inherited from ROOT::Internal::VecOps::SmallVectorBase
static void report_at_maximum_capacity ()
 Report that this vector is already at maximum capacity.
 
static void report_size_overflow (size_t MinSize)
 Report that MinSize doesn't fit into this vector's size type.
 
static constexpr size_t SizeTypeMax ()
 The maximum value of the Size_T used.
 

Private Types

using SuperClass = SmallVectorTemplateCommon< T >
 

Additional Inherited Members

- Protected Attributes inherited from ROOT::Internal::VecOps::SmallVectorBase
voidfBeginX
 
Size_T fCapacity
 Always >= -1. fCapacity == -1 indicates the RVec is in "memory adoption" mode.
 
Size_T fSize = 0
 Always >= 0.
 

#include <ROOT/RVec.hxx>

Inheritance diagram for ROOT::Internal::VecOps::SmallVectorTemplateBase< T, true >:
[legend]

Member Typedef Documentation

◆ const_iterator

template<typename T >
using ROOT::Internal::VecOps::SmallVectorTemplateBase< T, true >::const_iterator = typename SuperClass::const_iterator

Definition at line 479 of file RVec.hxx.

◆ iterator

template<typename T >
using ROOT::Internal::VecOps::SmallVectorTemplateBase< T, true >::iterator = typename SuperClass::iterator

Definition at line 478 of file RVec.hxx.

◆ reference

template<typename T >
using ROOT::Internal::VecOps::SmallVectorTemplateBase< T, true >::reference = typename SuperClass::reference

Definition at line 480 of file RVec.hxx.

◆ size_type

template<typename T >
using ROOT::Internal::VecOps::SmallVectorTemplateBase< T, true >::size_type = typename SuperClass::size_type

Definition at line 481 of file RVec.hxx.

◆ SuperClass

template<typename T >
using ROOT::Internal::VecOps::SmallVectorTemplateBase< T, true >::SuperClass = SmallVectorTemplateCommon<T>
private

Definition at line 429 of file RVec.hxx.

Constructor & Destructor Documentation

◆ SmallVectorTemplateBase()

template<typename T >
ROOT::Internal::VecOps::SmallVectorTemplateBase< T, true >::SmallVectorTemplateBase ( size_t  Size)
inlineprotected

Definition at line 432 of file RVec.hxx.

Member Function Documentation

◆ destroy_range()

template<typename T >
static void ROOT::Internal::VecOps::SmallVectorTemplateBase< T, true >::destroy_range ( T *  ,
T *   
)
inlinestaticprotected

Definition at line 435 of file RVec.hxx.

◆ grow()

template<typename T >
void ROOT::Internal::VecOps::SmallVectorTemplateBase< T, true >::grow ( size_t  MinSize = 0)
inlineprotected

Double the size of the allocated memory, guaranteeing space for at least one more element or MinSize if specified.

Definition at line 472 of file RVec.hxx.

◆ pop_back()

template<typename T >
void ROOT::Internal::VecOps::SmallVectorTemplateBase< T, true >::pop_back ( )
inline

Definition at line 491 of file RVec.hxx.

◆ push_back()

template<typename T >
void ROOT::Internal::VecOps::SmallVectorTemplateBase< T, true >::push_back ( const T &  Elt)
inline

Definition at line 483 of file RVec.hxx.

◆ uninitialized_copy() [1/2]

template<typename T >
template<typename It1 , typename It2 >
static void ROOT::Internal::VecOps::SmallVectorTemplateBase< T, true >::uninitialized_copy ( It1  I,
It1  E,
It2  Dest 
)
inlinestaticprotected

Copy the range [I, E) onto the uninitialized memory starting with "Dest", constructing elements into it as needed.

Definition at line 449 of file RVec.hxx.

◆ uninitialized_copy() [2/2]

template<typename T >
template<typename T1 , typename T2 >
static void ROOT::Internal::VecOps::SmallVectorTemplateBase< T, true >::uninitialized_copy ( T1 I,
T1 E,
T2 Dest,
typename std::enable_if< std::is_same< typename std::remove_const< T1 >::type, T2 >::value >::type = nullptr 
)
inlinestaticprotected

Copy the range [I, E) onto the uninitialized memory starting with "Dest", constructing elements into it as needed.

Definition at line 458 of file RVec.hxx.

◆ uninitialized_move()

template<typename T >
template<typename It1 , typename It2 >
static void ROOT::Internal::VecOps::SmallVectorTemplateBase< T, true >::uninitialized_move ( It1  I,
It1  E,
It2  Dest 
)
inlinestaticprotected

Move the range [I, E) onto the uninitialized memory starting with "Dest", constructing elements into it as needed.

Definition at line 440 of file RVec.hxx.

  • math/vecops/inc/ROOT/RVec.hxx