FastLED 3.9.15
Loading...
Searching...
No Matches

◆ ensure_capacity()

template<typename T>
void fl::deque< T >::ensure_capacity ( fl::size min_capacity)
inlineprivate

Definition at line 24 of file deque.h.

24 {
25 if (mCapacity >= min_capacity) {
26 return;
27 }
28
30 while (new_capacity < min_capacity) {
31 new_capacity *= 2;
32 }
33
34 T* new_data = static_cast<T*>(mResource->allocate(new_capacity * sizeof(T)));
35 if (!new_data) {
36 return; // Allocation failed
37 }
38
39 // Copy existing elements to new buffer in linear order
40 for (fl::size i = 0; i < mSize; ++i) {
42 new (&new_data[i]) T(fl::move(mData[old_idx]));
43 mData[old_idx].~T();
44 }
45
46 if (mData) {
47 mResource->deallocate(mData, mCapacity * sizeof(T));
48 }
49
52 mFront = 0; // Reset front to 0 after reallocation
53 }
fl::size mFront
Definition deque.h:19
memory_resource * mResource
Definition deque.h:20
fl::size mCapacity
Definition deque.h:17
fl::size mSize
Definition deque.h:18
T * mData
Definition deque.h:16
static const fl::size kInitialCapacity
Definition deque.h:22

Referenced by fl::deque< int >::assign(), fl::deque< int >::emplace(), fl::deque< int >::emplace_back(), fl::deque< int >::emplace_front(), fl::deque< int >::insert(), fl::deque< int >::insert(), fl::deque< int >::insert(), fl::deque< int >::push_back(), fl::deque< int >::push_back(), fl::deque< int >::push_front(), fl::deque< int >::push_front(), fl::deque< int >::reserve(), and fl::deque< int >::resize().

+ Here is the caller graph for this function: