FastLED 3.10.8
Loading...
Searching...
No Matches

◆ insert_move_impl()

void fl::vector_basic::insert_move_impl ( fl::size index,
void * element )

Insert element at index by move. Shifts subsequent elements right.

Definition at line 280 of file basic_vector.cpp.hpp.

280 {
281 if (index > mSize) index = mSize;
283 if (mSize >= mCapacity) return; // allocation failed
284
285 if (mOps) {
286 // Shift elements right, starting from the end
287 if (mSize > index) {
288 mOps->move_construct(element_ptr(mSize), element_ptr(mSize - 1));
289 for (fl::size i = mSize - 1; i > index; --i) {
290 mOps->destroy_n(element_ptr(i), 1);
291 mOps->move_construct(element_ptr(i), element_ptr(i - 1));
292 }
293 mOps->destroy_n(element_ptr(index), 1);
294 }
295 mOps->move_construct(element_ptr(index), element);
296 } else {
297 if (mSize > index) {
298 trivial_move_left(element_ptr(index + 1), element_ptr(index),
299 mSize - index);
300 }
301 fl::memcpy(element_ptr(index), element, mElementSize);
302 }
303 ++mSize;
304}
const vector_element_ops * mOps
void ensure_capacity(fl::size n) FL_NO_EXCEPT
Ensure capacity for at least n elements. Grows if needed.
void * element_ptr(fl::size index) FL_NO_EXCEPT
Pointer to element at index (byte arithmetic).
fl::size mElementSize
void trivial_move_left(void *dst, const void *src, fl::size count) const FL_NO_EXCEPT
FASTLED_FORCE_INLINE void * memcpy(void *dest, const void *src, size_t n) FL_NO_EXCEPT
Definition cstring.h:136

References element_ptr(), ensure_capacity(), fl::FL_NO_EXCEPT, mCapacity, mElementSize, fl::memcpy(), mOps, mSize, and trivial_move_left().

Referenced by fl::vector< fl::i16 >::insert().

+ Here is the call graph for this function:
+ Here is the caller graph for this function: