WPILibC++ 2027.0.0-alpha-2
Loading...
Searching...
No Matches
wpi::SmallVectorBase Class Reference

This is all the stuff common to all SmallVectors. More...

#include <wpi/SmallVector.h>

Inheritance diagram for wpi::SmallVectorBase:
wpi::SmallVectorTemplateCommon< char > wpi::SmallVectorTemplateCommon< frc2::Subsystem * > wpi::SmallVectorTemplateCommon< frc2::Command * > wpi::SmallVectorTemplateCommon< std::unique_ptr< frc2::Command > > wpi::SmallVectorTemplateCommon< frc::Pose2d > wpi::SmallVectorTemplateCommon< slp::Variable > wpi::SmallVectorTemplateCommon< slp::detail::AdjointExpressionGraph > wpi::SmallVectorTemplateCommon< Eigen::Triplet< double > > wpi::SmallVectorTemplateCommon< int > wpi::SmallVectorTemplateCommon< std::unique_ptr< std::byte[]> > wpi::SmallVectorTemplateCommon< void * > wpi::SmallVectorTemplateCommon< std::function< bool(const slp::IterationInfo &info)> > wpi::SmallVectorTemplateCommon< slp::detail::Expression * > wpi::SmallVectorTemplateCommon< WPI_EventHandle > wpi::SmallVectorTemplateCommon< size_t > wpi::SmallVectorTemplateCommon< std::string > wpi::SmallVectorTemplateCommon< uint8_t > wpi::SmallVectorTemplateCommon< wpi::uv::Buffer > wpi::SmallVectorTemplateCommon< T, typename >

Public Member Functions

size_t size () const
 
size_t capacity () const
 
bool empty () const
 

Protected Member Functions

 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.
 
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.
 
void set_size (size_t N)
 Set the array size to N, which the current array must have enough capacity for.
 
void set_allocation_range (void *Begin, size_t N)
 Set the array data pointer to Begin and capacity to N.
 

Static Protected Member Functions

static constexpr size_t SizeTypeMax ()
 The maximum value of the unsigned used.
 

Protected Attributes

void * BeginX
 
unsigned Size = 0
 
unsigned Capacity
 

Detailed Description

This is all the stuff common to all SmallVectors.

The template parameter specifies the type which should be used to hold the Size and Capacity of the SmallVector, so it can be adjusted. Using 32 bit size is desirable to shrink the size of the SmallVector. Using 64 bit size is desirable for cases like SmallVector<char>, where a 32 bit size would limit the vector to ~4GB. SmallVectors are used for buffering bitcode output - which can exceed 4GB.

Constructor & Destructor Documentation

◆ SmallVectorBase() [1/2]

wpi::SmallVectorBase::SmallVectorBase ( )
protecteddelete

◆ SmallVectorBase() [2/2]

wpi::SmallVectorBase::SmallVectorBase ( void * FirstEl,
size_t TotalCapacity )
inlineprotected

Member Function Documentation

◆ capacity()

size_t wpi::SmallVectorBase::capacity ( ) const
inline

◆ empty()

bool wpi::SmallVectorBase::empty ( ) const
inlinenodiscard

◆ grow_pod()

void wpi::SmallVectorBase::grow_pod ( void * FirstEl,
size_t MinSize,
size_t TSize )
protected

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.

This function will report a fatal error if it cannot increase capacity.

◆ mallocForGrow()

void * wpi::SmallVectorBase::mallocForGrow ( void * FirstEl,
size_t MinSize,
size_t TSize,
size_t & NewCapacity )
protected

This is a helper for grow() that's out of line to reduce code duplication.

This function will report a fatal error if it can't grow at least to MinSize.

◆ set_allocation_range()

void wpi::SmallVectorBase::set_allocation_range ( void * Begin,
size_t N )
inlineprotected

Set the array data pointer to Begin and capacity to N.

This does not construct or destroy any elements in the vector.

◆ set_size()

void wpi::SmallVectorBase::set_size ( size_t N)
inlineprotected

Set the array size to N, which the current array must have enough capacity for.

This does not construct or destroy any elements in the vector.

◆ size()

size_t wpi::SmallVectorBase::size ( ) const
inline

◆ SizeTypeMax()

static constexpr size_t wpi::SmallVectorBase::SizeTypeMax ( )
inlinestaticconstexprprotected

The maximum value of the unsigned used.

Member Data Documentation

◆ BeginX

void* wpi::SmallVectorBase::BeginX
protected

◆ Capacity

unsigned wpi::SmallVectorBase::Capacity
protected

◆ Size

unsigned wpi::SmallVectorBase::Size = 0
protected

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