An heap allocated byte buffer that can optionally use an inline buffer. More...
#include <Buffer.h>
Public Member Functions | |
Segment () | |
Segment (Segment &&other) | |
Segment (const Segment &other) | |
template<typename U > | |
Segment (Span< const U > span) | |
Segment (Span< const T > span) | |
Segment (std::initializer_list< T > list) | |
Segment (SegmentHeader &inlineHeader, uint32_t capacityInBytes) | |
Builds a Segment with an inlineHeader of given capacity in bytes. More... | |
![]() | |
Segment (Segment &&other) | |
Segment (const Segment &other) | |
Segment (Span< const U > span) | |
Segment (Span< const T > span) | |
Segment (std::initializer_list< T > list) | |
Segment (SegmentHeader &inlineHeader, uint32_t capacityInBytes) | |
Builds a Segment with an inlineHeader of given capacity in bytes. More... | |
Segment & | operator= (Segment &&other) |
Segment & | operator= (const Segment &other) |
bool | resizeWithoutInitializing (size_t newSize) |
Re-allocates to the requested new size, preserving its contents. More... | |
bool | resize (size_t newSize, const T &value=T()) |
Re-allocates to the requested new size, preserving its contents and setting new items to value. More... | |
bool | reserve (size_t newCapacity) |
Reserves capacity to avoid heap-allocation during a future append, assign or resize. More... | |
bool | append (Span< const T > span) |
Appends a Span to the end of the segment. More... | |
bool | append (Span< const U > span) |
Appends a Span of items convertible to T to the end of the segment. More... | |
bool | appendMove (Segment &&other) |
Moves contents of another segment to the end of this segment. More... | |
bool | shrink_to_fit () |
Ensures capacity == size re-allocating (if capacity>size ) or freeing ( if size==0 ) memory. More... | |
void | clear () |
Sets size to zero without freeing any memory (use shrink_to_fit() to free memory) More... | |
bool | assign (Span< const T > span) |
Replaces contents with contents of the span. More... | |
bool | assignMove (Segment &&other) |
Replaces content moving (possibly "stealing") content of another segment. More... | |
bool | push_back (const T &value) |
Appends a single element to the end of the segment. More... | |
bool | push_back (T &&value) |
Moves a single element to the end of the segment. More... | |
bool | push_front (const T &value) |
Appends a single element to the start of the segment. More... | |
bool | pop_back (T *removedValue=nullptr) |
Removes the last element of the segment. More... | |
bool | pop_front (T *removedValue=nullptr) |
Removes the first element of the segment. More... | |
const T * | data () const SC_LANGUAGE_LIFETIME_BOUND |
Access data owned by the segment or nullptr if segment is empty. More... | |
T * | data () SC_LANGUAGE_LIFETIME_BOUND |
Access data owned by the segment or nullptr if segment is empty. More... | |
T * | begin () SC_LANGUAGE_LIFETIME_BOUND |
const T * | begin () const SC_LANGUAGE_LIFETIME_BOUND |
T * | end () SC_LANGUAGE_LIFETIME_BOUND |
const T * | end () const SC_LANGUAGE_LIFETIME_BOUND |
T & | back () SC_LANGUAGE_LIFETIME_BOUND |
const T & | back () const SC_LANGUAGE_LIFETIME_BOUND |
T & | front () SC_LANGUAGE_LIFETIME_BOUND |
const T & | front () const SC_LANGUAGE_LIFETIME_BOUND |
T & | operator[] (size_t idx) SC_LANGUAGE_LIFETIME_BOUND |
const T & | operator[] (size_t idx) const SC_LANGUAGE_LIFETIME_BOUND |
bool | isInlineBuffer () const |
Returns true if an inline buffer is in use (false if segment is heap allocated). More... | |
bool | isEmpty () const |
Check if is empty (size() == 0) More... | |
Span< T > | toSpan () SC_LANGUAGE_LIFETIME_BOUND |
Obtains a Span of internal contents. More... | |
Span< const T > | toSpanConst () const SC_LANGUAGE_LIFETIME_BOUND |
Obtains a Span of internal contents. More... | |
size_t | size () const |
Returns current size. More... | |
size_t | capacity () |
Returns current capacity (always >= of size() ) More... | |
bool | removeRange (size_t start, size_t length) |
Removes the range [start, start + length] from the segment. More... | |
bool | removeAt (size_t index) |
Removes the element at index. More... | |
bool | insert (size_t index, Span< const T > data) |
Insert a span at the given index. More... | |
void | unsafeSetHeader (SegmentHeader *newHeader) |
Sets the internal header handled by this class. More... | |
SegmentHeader * | unsafeGetHeader () const |
Get the internal header handled by this class. More... | |
Additional Inherited Members | |
![]() | |
using | T = typename VTable::Type |
![]() | |
SegmentHeader * | header |
An heap allocated byte buffer that can optionally use an inline buffer.
Example:
SC::Segment< VTable >::Segment | ( | SegmentHeader & | inlineHeader, |
uint32_t | capacityInBytes | ||
) |
Builds a Segment with an inlineHeader of given capacity in bytes.