A slice of contiguous memory, prefixed by and header containing size and capacity.
More...
|
| Segment (Segment &&other) |
|
| Segment (const Segment &other) |
|
Segment & | operator= (Segment &&other) |
|
Segment & | operator= (const Segment &other) |
|
template<typename U > |
| Segment (Span< const U > span) |
|
| Segment (Span< const T > span) |
|
| Segment (std::initializer_list< T > list) |
|
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...
|
|
template<typename U > |
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 |
|
T & | front () SC_LANGUAGE_LIFETIME_BOUND |
|
T & | operator[] (size_t idx) SC_LANGUAGE_LIFETIME_BOUND |
|
const T & | back () const SC_LANGUAGE_LIFETIME_BOUND |
|
const T & | front () const 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...
|
|
| Segment (SegmentHeader &inlineHeader, uint32_t capacityInBytes) |
| Builds a Segment with an inlineHeader of given capacity in bytes. More...
|
|
template<typename VTable>
struct SC::Segment< VTable >
A slice of contiguous memory, prefixed by and header containing size and capacity.
Can act as a simple byte buffer or more of a "vector-like" class depending on the passed in VTable traits. It transparently handles going to and from an inline buffer (defined in derived classes) and the heap.
- Template Parameters
-
- Note
- Implementation is in
.inl
to reduce include bloat for non-templated derived classes like SC::Buffer. This reduces header bloat as the .inl
can be included where derived class is defined (typically a .cpp
file).