|
Cogs.Core
|
Vector with inline storage for up to Size elements, avoiding heap allocation for small collections. More...
#include <SmallVector.h>
Classes | |
| struct | SmallVectorStorage |
| struct | SmallVectorStorage< Ts, 0 > |
| struct | SmallVectorStorage< Ts, 1 > |
Public Types | |
| using | value_type = T |
| using | difference_type = ptrdiff_t |
| using | pointer = const T * |
| using | reference = const T & |
Public Member Functions | |
| SmallVector (size_t size) | |
| SmallVector (Memory::Allocator *allocator) | |
| SmallVector (SmallVector &&other) noexcept | |
| SmallVector (SmallVectorImpl< T > &&other) noexcept | |
| SmallVector (const SmallVector &other) | |
| SmallVector (const SmallVectorImpl< T > &other) | |
| SmallVector (std::initializer_list< T > il) | |
| SmallVector & | operator= (const SmallVector &other) |
| SmallVector & | operator= (SmallVector &&other) noexcept |
| SmallVector & | operator= (SmallVectorImpl< T > &&other) noexcept |
Public Member Functions inherited from Cogs::Collections::SmallVectorImpl< T > | |
| SmallVectorImpl & | operator= (const SmallVectorImpl &other) |
| SmallVectorImpl & | operator= (SmallVectorImpl &&other) noexcept |
| void | resize (size_t newSize) |
| void | reserve (size_t newCapacity) |
| void | clear () |
| template<typename T1 > | |
| void | assign (T1 first, T1 last) |
| void | assign (std::initializer_list< T > il) |
| template<typename T1 > | |
| void | append (T1 first, T1 last) |
| void | append (std::initializer_list< T > il) |
Public Member Functions inherited from Cogs::Collections::SmallVectorImplBase< T, std::is_trivially_copyable< T >::value > | |
| void | push_back (const T &t) |
| void | push_back (T &&t) |
| void | emplace_back (Args &&... args) |
| void | pop_back () |
| void | erase (const T *pos) |
Public Member Functions inherited from Cogs::Collections::SmallVectorTemplateBase< T > | |
| bool | empty () const |
| size_t | size () const |
| size_t | capacity () const |
| T * | data () |
| const T * | data () const |
| T * | begin () |
| T * | end () |
| const T * | begin () const |
| const T * | end () const |
| const T * | cbegin () const |
| const T * | cend () const |
| T & | operator[] (const size_t index) |
| const T & | operator[] (const size_t index) const |
| T & | back () |
| const T & | back () const |
| T & | front () |
| const T & | front () const |
Private Attributes | |
| SmallVectorStorage< T, Size > | inlineStorage |
Additional Inherited Members | |
Protected Member Functions inherited from Cogs::Collections::SmallVectorImpl< T > | |
| SmallVectorImpl (size_t capacity, Memory::Allocator *allocator=Memory::Allocator::overflowAllocator()) | |
| void | release () |
Protected Member Functions inherited from Cogs::Collections::SmallVectorImplBase< T, std::is_trivially_copyable< T >::value > | |
| SmallVectorImplBase (size_t capacity, Memory::Allocator *allocator) | |
| void | grow (size_t minSize=0) |
| void | initialize (T *first, const T *last) |
| void | destroy (T *first, const T *last) |
| void | moveNew (T1 first, T1 last, T2 dest) |
| void | move (T1 first, T1 last, T2 dest) |
| void | copy (T1 first, T1 last, T2 dest) |
| void | copyNew (T1 first, T1 last, T2 dest) |
Protected Member Functions inherited from Cogs::Collections::SmallVectorTemplateBase< T > | |
| SmallVectorTemplateBase (size_t capacity, Memory::Allocator *allocator) | |
| bool | isSmall () const |
| void | setSize (size_t newSize) |
| void | reset () |
Protected Member Functions inherited from Cogs::Collections::SmallVectorBase | |
| SmallVectorBase (void *data, size_t capacity, Memory::Allocator *allocator) | |
| void | growPod (const void *firstElement, const size_t minSizeBytes) |
| size_t | sizeInBytes () const |
| size_t | capacityInBytes () const |
Protected Attributes inherited from Cogs::Collections::SmallVectorTemplateBase< T > | |
| uint8_t | firstElement [sizeof(T)] |
Protected Attributes inherited from Cogs::Collections::SmallVectorBase | |
| void * | firstPtr |
| void * | lastPtr |
| void * | capacityPtr |
| Memory::Allocator * | allocator |
Vector with inline storage for up to Size elements, avoiding heap allocation for small collections.
Falls back to heap (via the overflow allocator) when the inline budget is exceeded. Trivially-copyable element types use memcpy for growth; non-trivial types use move/copy constructors.
Supports the same interface as std::vector: push_back, emplace_back, pop_back, erase, resize, reserve, assign, append, random-access via operator[], front, back, begin/end, and data.
| T | Element type. Must be at least pointer-sized when stored in a pool. |
| Size | Number of elements to store inline on the stack. Choose based on the expected common case. |
Definition at line 459 of file SmallVector.h.
| using Cogs::Collections::SmallVector< T, Size >::difference_type = ptrdiff_t |
Definition at line 473 of file SmallVector.h.
| using Cogs::Collections::SmallVector< T, Size >::pointer = const T* |
Definition at line 474 of file SmallVector.h.
| using Cogs::Collections::SmallVector< T, Size >::reference = const T& |
Definition at line 475 of file SmallVector.h.
| using Cogs::Collections::SmallVector< T, Size >::value_type = T |
Definition at line 472 of file SmallVector.h.
|
inline |
Definition at line 477 of file SmallVector.h.
|
inlineexplicit |
Definition at line 478 of file SmallVector.h.
|
inline |
Definition at line 479 of file SmallVector.h.
|
inlinenoexcept |
Definition at line 481 of file SmallVector.h.
|
inlinenoexcept |
Definition at line 486 of file SmallVector.h.
|
inline |
Definition at line 491 of file SmallVector.h.
|
inline |
Definition at line 496 of file SmallVector.h.
|
inline |
Definition at line 501 of file SmallVector.h.
|
inline |
Definition at line 506 of file SmallVector.h.
|
inlinenoexcept |
Definition at line 512 of file SmallVector.h.
|
inlinenoexcept |
Definition at line 518 of file SmallVector.h.
|
private |
Definition at line 525 of file SmallVector.h.