Queues#

pw_containers: Generic collections of objects for embedded devices

A queue is an ordered collection designed to add items at one end and remove them from the other. This allows “first in, first out”, or FIFO, behavior. Pigweed provides both single and double-ended queues that are backed by fixed or dynamic storage.

Pigweed provides many queue and deque implementations to meet different needs.

std::deque & std::queue equivalents#

pw_containers provides a family of deques and queues that implement the std:deque or std::queue API, but offer much more control with significantly smaller code size.

The std::deque-like containers are:

  • pw::Deque – uses a fixed-capacity external storage buffer

  • pw::FixedDeque – uses a fixed-capacity storage buffer, which is optionally owned and may be statically or dynamically allocated

  • pw::DynamicDeque – dynamically allocates a storage buffer using a pw::Allocator

  • pw::InlineDeque – uses an inline, statically allocated storage buffer

Equivalent std::queue-like classes are also provided:

pw::InlineVarLenEntryQueue#

InlineVarLenEntryQueue is a queue of inline variable-length binary entries. It is implemented as a ring (circular) buffer and supports operations to append entries and overwrite if necessary. Entries may be zero bytes up to the maximum size supported by the queue.

InlineVarLenEntryQueue has a few interesting properties:

  • Data and metadata are stored inline in a contiguous block of uint32_t-aligned memory.

  • The data structure is trivially copyable.

  • All state changes are accomplished with a single update to a uint32_t. The memory is always in a valid state and may be parsed offline.

This data structure is a much simpler version of PrefixedEntryRingBuffer. Prefer this sized-entry ring buffer to PrefixedEntryRingBuffer when:

  • A simple ring buffer of variable-length entries is needed. Advanced features like multiple readers and a user-defined preamble are not required.

  • A consistent, parsable, in-memory representation is required (e.g. to decode the buffer from a block of memory).

  • C support is required.

InlineVarLenEntryQueue is implemented in C and provides complete C and C++ APIs. The InlineVarLenEntryQueue C++ class is structured similarly to pw::InlineQueue and pw::Vector.

Queue vs. deque#

This module provides pw::InlineVarLenEntryQueue, but no corresponding InlineVarLenEntryDeque class. Following the C++ Standard Library style, the deque class would provide push_front() and pop_back() operations in addition to push_back() and pop_front() (equivalent to a queue’s push() and pop()).

There is no InlineVarLenEntryDeque class because there is no efficient way to implement push_front() and pop_back(). These operations would necessarily be O(n), since each entry knows the position of the next entry, but not the previous, as in a single-linked list. Given that these operations would be inefficient and unlikely to be used, they are not implemented, and only a queue class is provided.

Example#

Queues are declared with their max size (InlineVarLenEntryQueue<kMaxSize>) but may be used without specifying the size (InlineVarLenEntryQueue<>&).

void GenericCapacityQueue() {
  // Declare a queue with capacity sufficient for one 10-byte entry or
  // multiple smaller entries.
  pw::InlineVarLenEntryQueue<10> queue;

  // Push an entry, asserting if the entry does not fit.
  queue.push(queue, data);

  // Use push_overwrite() to push entries, overwriting older entries
  // as needed.
  queue.push_overwrite(queue, more_data);

  // Remove an entry.
  queue.pop();
}

Alternately, a InlineVarLenEntryQueue may be initialized in an existing uint32_t array.

void InitFromArray() {
  // Initialize a InlineVarLenEntryQueue.
  uint32_t buffer[32];
  auto& queue = pw::InlineVarLenEntryQueue<>::Init(buffer);

  // Largest supported entry is 114 B (13 B overhead + 1 B prefix)
  assert(queue.max_size_bytes() == 114u);

  // Write data
  queue.push_overwrite(data);
}

A InlineVarLenEntryQueue may be declared and initialized in C with the PW_VARIABLE_LENGTH_ENTRY_QUEUE_DECLARE macro.

// Declare a queue with capacity sufficient for one 10-byte entry or
// multiple smaller entries.
PW_VARIABLE_LENGTH_ENTRY_QUEUE_DECLARE(queue, 10);

// Push an entry, asserting if the entry does not fit.
pw_InlineVarLenEntryQueue_Push(queue, "12345", 5);

// Use push_overwrite() to push entries, overwriting older entries
// as needed.
pw_InlineVarLenEntryQueue_PushOverwrite(queue, "abcdefg", 7);

// Remove an entry.
pw_InlineVarLenEntryQueue_Pop(queue);

Alternately, a InlineVarLenEntryQueue may be initialized in an existing uint32_t array.

// Initialize a InlineVarLenEntryQueue.
uint32_t buffer[32];
pw_InlineVarLenEntryQueue_Init(buffer, 32);

// Largest supported entry is 114 B (13 B overhead + 1 B prefix)
assert(pw_InlineVarLenEntryQueue_MaxSizeBytes(buffer) == 114u);

// Write some data
pw_InlineVarLenEntryQueue_PushOverwrite(buffer, "123", 3);

Python API reference#

Decodes the in-memory representation of a sized-entry ring buffer.

pw_containers.inline_var_len_entry_queue.parse(queue: bytes) Iterable[bytes]#

Decodes the in-memory representation of a variable-length entry queue.

The queue includes both the data buffer and the indices that designate the range in the buffer that contains variable-length entries.

Parameters:

queue – The bytes representation of a variable-length entry queue.

Yields:

Each entry in the buffer as bytes.

Size reports#

The tables below illustrate the memory and code size costs for various queue and deque implementations, with std::deque serving as a baseline. The size reports generally cover:

  • The cost of a single instance.

  • The cost of instantiating a second container of the same class with a different element type, showing the impact of templates on code size.

  • The cost of using related classes, such as pw::InlineQueue and pw::InlineDeque or static and dynamic pw::FixedDeques.

Label

Segment

Delta

std::deque

FLASH

+56

[section .rodata]

+2

pw::allocator::Layout::Of<>()

+4

pw::containers::size_report::Measure()

-4

operator delete()

DEL

-8

__aeabi_memmove

NEW

+700

std::__2::deque<>::__add_front_capacity()

NEW

+612

std::__2::deque<>::__add_back_capacity()

NEW

+552

std::__2::__split_buffer<>::emplace_back<>()

NEW

+512

std::__2::deque<>::insert()

NEW

+426

std::__2::__split_buffer<>::emplace_front<>()

NEW

+352

std::__2::deque<>::erase()

NEW

+262

_ZN2pw10containers11size_report12MeasureDequeINSt3__25dequeIjNS3_9allocatorIjEEEETpTnRiJENS3_11__wrap_iterIPjEEEEiRT_T1_SE_j

NEW

+204

std::__2::deque<>::__move_construct_backward_and_check()

NEW

+184

std::__2::deque<>::__move_backward_and_check()

NEW

+180

std::__2::deque<>::__move_construct_and_check()

NEW

+168

std::__2::deque<>::__move_and_check()

NEW

+144

std::__2::deque<>::__erase_to_end()

NEW

+136

_ZNSt3__25dequeIjNS_9allocatorIjEEE18__append_with_sizeB8nn220000INS_11__wrap_iterIPjEEEEvT_j

NEW

+132

_ZNKSt3__220__move_backward_implINS_17_ClassicAlgPolicyEEclB8nn220000INS_16__deque_iteratorIjPjRjPS5_iLi0EEES8_TnNS_9enable_ifIX25__is_segmented_iterator_vIT_EEiE4typeELi0EEENS_4pairISA_T0_EESA_SA_SE_

NEW

+126

std::__2::deque<>::__append()

NEW

+116

std::__2::deque<>::clear()

NEW

+104

_ZNKSt3__211__copy_implclB8nn220000IPjNS_16__deque_iteratorIjS2_RjPS2_iLi0EEETnNS_9enable_ifIXaaaasr37__has_random_access_iterator_categoryIT_EE5valuent25__is_segmented_iterator_vIS8_E25__is_segmented_iterator_vIT0_EEiE4typeELi0EEENS_4pairIS8_S9_EES8_S8_S9_

NEW

+104

_ZNKSt3__211__move_implINS_17_ClassicAlgPolicyEEclB8nn220000IPjNS_16__deque_iteratorIjS4_RjPS4_iLi0EEETnNS_9enable_ifIXaaaasr37__has_random_access_iterator_categoryIT_EE5valuent25__is_segmented_iterator_vISA_E25__is_segmented_iterator_vIT0_EEiE4typeELi0EEENS_4pairISA_SB_EESA_SA_SB_

NEW

+102

std::__2::__split_buffer<>::shrink_to_fit()

NEW

+96

_ZNSt3__25dequeIjNS_9allocatorIjEEE32__assign_with_size_random_accessB8nn220000INS_11__wrap_iterIPjEEEEvT_i

NEW

+92

_ZNKSt3__220__move_backward_implINS_17_ClassicAlgPolicyEEclB8nn220000IPjNS_16__deque_iteratorIjS4_RjPS4_iLi0EEETnNS_9enable_ifIXaaaasr37__has_random_access_iterator_categoryIT_EE5valuent25__is_segmented_iterator_vISA_E25__is_segmented_iterator_vIT0_EEiE4typeELi0EEENS_4pairISA_SB_EESA_SA_SB_

NEW

+70

std::__2::deque<>::shrink_to_fit()

NEW

+68

_ZNSt3__216__deque_iteratorIjPKjRS1_PKS2_iLi0EEpLB8nn220000Ei

NEW

+68

_ZNSt3__216__deque_iteratorIjPjRjPS1_iLi0EEpLB8nn220000Ei

NEW

+66

std::__2::deque<>::push_front()

NEW

+60

std::__2::deque<>::resize()

NEW

+56

_ZNSt3__218__for_each_segmentB8nn220000INS_16__deque_iteratorIjPjRjPS2_iLi0EEENS_11__move_implINS_17_ClassicAlgPolicyEE12_MoveSegmentIS5_S5_EEEEvT_SB_T0_

NEW

+56

_ZNSt3__25dequeIjNS_9allocatorIjEEE26__maybe_remove_front_spareB8nn220000Eb

NEW

+54

_ZNSt3__224__copy_move_unwrap_itersB8nn220000INS_11__move_implINS_17_ClassicAlgPolicyEEENS_16__deque_iteratorIjPjRjPS5_iLi0EEES8_S8_TnNS_9enable_ifIXsr12__can_rewrapIT0_T2_EE5valueEiE4typeELi0EEENS_4pairISA_SB_EESA_T1_SB_

NEW

+54

_ZNSt3__224__copy_move_unwrap_itersB8nn220000INS_20__move_backward_implINS_17_ClassicAlgPolicyEEENS_16__deque_iteratorIjPjRjPS5_iLi0EEES8_S8_TnNS_9enable_ifIXsr12__can_rewrapIT0_T2_EE5valueEiE4typeELi0EEENS_4pairISA_SB_EESA_T1_SB_

NEW

+54

_ZNSt3__25dequeIjNS_9allocatorIjEEE25__maybe_remove_back_spareB8nn220000Eb

NEW

+52

_ZN2pw10containers11size_report15MeasureStdDequeIjTpTnRiJENSt3__211__wrap_iterIPjEEEEiT1_S8_j

NEW

+52

std::__2::__split_buffer<>::__split_buffer()

NEW

+44

_ZNKSt3__211__move_implINS_17_ClassicAlgPolicyEEclB8nn220000INS_16__deque_iteratorIjPjRjPS5_iLi0EEES8_TnNS_9enable_ifIX25__is_segmented_iterator_vIT_EEiE4typeELi0EEENS_4pairISA_T0_EESA_SA_SE_

NEW

+44

std::__2::deque<>::push_back()

NEW

+42

_ZNSt3__224__copy_move_unwrap_itersB8nn220000INS_11__copy_implENS_11__wrap_iterIPjEES4_NS_16__deque_iteratorIjS3_RjPS3_iLi0EEETnNS_9enable_ifIXsr12__can_rewrapIT0_T2_EE5valueEiE4typeELi0EEENS_4pairISA_SB_EESA_T1_SB_

NEW

+42

_ZNSt3__224__copy_move_unwrap_itersB8nn220000INS_11__move_implINS_17_ClassicAlgPolicyEEEPjS4_NS_16__deque_iteratorIjS4_RjPS4_iLi0EEETnNS_9enable_ifIXsr12__can_rewrapIT0_T2_EE5valueEiE4typeELi0EEENS_4pairISA_SB_EESA_T1_SB_

NEW

+42

_ZNSt3__224__copy_move_unwrap_itersB8nn220000INS_20__move_backward_implINS_17_ClassicAlgPolicyEEEPjS4_NS_16__deque_iteratorIjS4_RjPS4_iLi0EEETnNS_9enable_ifIXsr12__can_rewrapIT0_T2_EE5valueEiE4typeELi0EEENS_4pairISA_SB_EESA_T1_SB_

NEW

+42

pw::containers::size_report::MeasureContainer<>()

NEW

+40

_ZNSt3__2miB8nn220000ERKNS_16__deque_iteratorIjPKjRS1_PKS2_iLi0EEES8_

NEW

+40

_ZNSt3__2miB8nn220000ERKNS_16__deque_iteratorIjPjRjPS1_iLi0EEES6_

NEW

+38

_ZNSt3__25dequeIjNS_9allocatorIjEEE3endB8nn220000Ev

NEW

+36

_ZNSt3__213move_backwardB8nn220000INS_16__deque_iteratorIjPjRjPS2_iLi0EEES5_EET0_T_S7_S6_

NEW

+36

_ZNSt3__24moveB8nn220000INS_16__deque_iteratorIjPjRjPS2_iLi0EEES5_EET0_T_S7_S6_

NEW

+36

_ZNSt3__25dequeIjNS_9allocatorIjEEE5beginB8nn220000Ev

NEW

+36

_ZNSt3__28__fill_nB8nn220000INS_16__deque_iteratorIjPjRjPS2_iLi0EEEjjEET_S6_T0_RKT1_

NEW

+36

std::__2::__split_buffer<>::~__split_buffer()

NEW

+30

_ZNKSt3__25dequeIjNS_9allocatorIjEEE12__back_spareB8nn220000Ev

NEW

+28

_ZNSt3__211__move_implINS_17_ClassicAlgPolicyEE12_MoveSegmentINS_16__deque_iteratorIjPjRjPS5_iLi0EEES8_EclB8nn220000ES5_S5_

NEW

+26

std::__2::__split_buffer<>::__construct_at_end_with_size<>()

NEW

+24

_ZNSt3__213move_backwardB8nn220000IPjNS_16__deque_iteratorIjS1_RjPS1_iLi0EEEEET0_T_S7_S6_

NEW

+24

_ZNSt3__24copyB8nn220000INS_11__wrap_iterIPjEENS_16__deque_iteratorIjS2_RjPS2_iLi0EEEEET0_T_S9_S8_

NEW

+24

_ZNSt3__24moveB8nn220000IPjNS_16__deque_iteratorIjS1_RjPS1_iLi0EEEEET0_T_S7_S6_

NEW

+24

std::__2::deque<>::back()

NEW

+22

std::__2::deque<>::pop_front()

NEW

+20

_ZNSt3__210unique_ptrIPjNS_22__allocator_destructorINS_9allocatorIjEEEEE5resetB8nn220000ES1_

NEW

+18

_ZNSt3__29allocatorIPjE8allocateB8nn220000Ej

NEW

+16

_ZNSt3__222__allocator_destructorINS_9allocatorIjEEEclB8nn220000EPj

NEW

+16

_ZNSt3__26copy_nB8nn220000INS_11__wrap_iterIPjEEiNS_16__deque_iteratorIjS2_RjPS2_iLi0EEETnNS_9enable_ifIXsr37__has_random_access_iterator_categoryIT_EE5valueEiE4typeELi0EEET1_S9_T0_SC_

NEW

+16

std::__2::deque<>::pop_back()

NEW

+14

_ZNSt3__210unique_ptrIPjNS_22__allocator_destructorINS_9allocatorIjEEEEED2B8nn220000Ev

NEW

+12

_ZNKSt3__25dequeIjNS_9allocatorIjEEE19__back_spare_blocksB8nn220000Ev

NEW

+12

_ZNSt3__214__split_bufferIPjRNS_9allocatorIS1_EENS_29__split_buffer_pointer_layoutEE18__construct_at_endINS_13move_iteratorIPS1_EETnNS_9enable_ifIXsr31__has_forward_iterator_categoryIT_EE5valueEiE4typeELi0EEEvSC_SC_

NEW

+12

_ZNSt3__25dequeIjNS_9allocatorIjEEE6assignINS_11__wrap_iterIPjEETnNS_9enable_ifIXsr37__has_random_access_iterator_categoryIT_EE5valueEiE4typeELi0EEEvS9_S9_

NEW

+12

_ZSt28__throw_bad_array_new_lengthB8nn220000v

NEW

+10

_ZNSt3__216__deque_iteratorIjPKjRS1_PKS2_iLi0EEmIB8nn220000Ei

NEW

+10

_ZNSt3__216__deque_iteratorIjPjRjPS1_iLi0EEmIB8nn220000Ei

NEW

+8

__aeabi_memmove4

NEW

+8

operator new()

NEW

+4

std::__2::__libcpp_verbose_abort()

+7,008

RAM

-8

[section .data]

+1

__Thumbv6MABSLongThunk_best_effort_wfe_or_timeout

NEW

+39

pw::containers::size_report::GetItems<>()::items

NEW

+24

_ZZN2pw10containers11size_report15MeasureStdDequeIjTpTnRiJENSt3__211__wrap_iterIPjEEEEiT1_S8_jE9std_deque

NEW

+4

_ZGVZN2pw10containers11size_report15MeasureStdDequeIjTpTnRiJENSt3__211__wrap_iterIPjEEEEiT1_S8_jE9std_deque

+60

Additional std::deque with different item type

FLASH

+700

std::__2::deque<>::__add_front_capacity()

+612

std::__2::deque<>::__add_back_capacity()

+552

std::__2::__split_buffer<>::emplace_back<>()

+518

std::__2::deque<>::insert()

+426

std::__2::__split_buffer<>::emplace_front<>()

+352

std::__2::deque<>::erase()

+212

std::__2::deque<>::__move_construct_backward_and_check()

+186

std::__2::deque<>::__move_backward_and_check()

+188

std::__2::deque<>::__move_construct_and_check()

+168

std::__2::deque<>::__move_and_check()

+144

std::__2::deque<>::__erase_to_end()

+138

std::__2::deque<>::__append()

+116

std::__2::deque<>::clear()

+102

std::__2::__split_buffer<>::shrink_to_fit()

+70

std::__2::deque<>::shrink_to_fit()

+70

std::__2::deque<>::push_front()

+60

std::__2::deque<>::resize()

+52

std::__2::__split_buffer<>::__split_buffer()

+46

std::__2::deque<>::push_back()

+42

pw::containers::size_report::MeasureContainer<>()

+36

std::__2::__split_buffer<>::~__split_buffer()

+20

pw::containers::size_report::Measure()

+24

std::__2::__split_buffer<>::__construct_at_end_with_size<>()

+24

std::__2::deque<>::back()

+22

std::__2::deque<>::pop_front()

+2

pw::allocator::LibCAllocator::DoReallocate()

+16

std::__2::deque<>::pop_back()

NEW

+284

_ZN2pw10containers11size_report12MeasureDequeINSt3__25dequeIyNS3_9allocatorIyEEEETpTnRiJENS3_11__wrap_iterIPyEEEEiRT_T1_SE_j

NEW

+146

_ZNSt3__25dequeIyNS_9allocatorIyEEE18__append_with_sizeB8nn220000INS_11__wrap_iterIPyEEEEvT_j

NEW

+132

_ZNKSt3__220__move_backward_implINS_17_ClassicAlgPolicyEEclB8nn220000INS_16__deque_iteratorIyPyRyPS5_iLi0EEES8_TnNS_9enable_ifIX25__is_segmented_iterator_vIT_EEiE4typeELi0EEENS_4pairISA_T0_EESA_SA_SE_

NEW

+104

_ZNKSt3__211__copy_implclB8nn220000IPyNS_16__deque_iteratorIyS2_RyPS2_iLi0EEETnNS_9enable_ifIXaaaasr37__has_random_access_iterator_categoryIT_EE5valuent25__is_segmented_iterator_vIS8_E25__is_segmented_iterator_vIT0_EEiE4typeELi0EEENS_4pairIS8_S9_EES8_S8_S9_

NEW

+104

_ZNKSt3__211__move_implINS_17_ClassicAlgPolicyEEclB8nn220000IPyNS_16__deque_iteratorIyS4_RyPS4_iLi0EEETnNS_9enable_ifIXaaaasr37__has_random_access_iterator_categoryIT_EE5valuent25__is_segmented_iterator_vISA_E25__is_segmented_iterator_vIT0_EEiE4typeELi0EEENS_4pairISA_SB_EESA_SA_SB_

NEW

+96

_ZNSt3__25dequeIyNS_9allocatorIyEEE32__assign_with_size_random_accessB8nn220000INS_11__wrap_iterIPyEEEEvT_i

NEW

+92

_ZNKSt3__220__move_backward_implINS_17_ClassicAlgPolicyEEclB8nn220000IPyNS_16__deque_iteratorIyS4_RyPS4_iLi0EEETnNS_9enable_ifIXaaaasr37__has_random_access_iterator_categoryIT_EE5valuent25__is_segmented_iterator_vISA_E25__is_segmented_iterator_vIT0_EEiE4typeELi0EEENS_4pairISA_SB_EESA_SA_SB_

NEW

+68

_ZNSt3__216__deque_iteratorIyPKyRS1_PKS2_iLi0EEpLB8nn220000Ei

NEW

+68

_ZNSt3__216__deque_iteratorIyPyRyPS1_iLi0EEpLB8nn220000Ei

NEW

+56

_ZNSt3__218__for_each_segmentB8nn220000INS_16__deque_iteratorIyPyRyPS2_iLi0EEENS_11__move_implINS_17_ClassicAlgPolicyEE12_MoveSegmentIS5_S5_EEEEvT_SB_T0_

NEW

+56

_ZNSt3__25dequeIyNS_9allocatorIyEEE26__maybe_remove_front_spareB8nn220000Eb

NEW

+54

_ZNSt3__224__copy_move_unwrap_itersB8nn220000INS_11__move_implINS_17_ClassicAlgPolicyEEENS_16__deque_iteratorIyPyRyPS5_iLi0EEES8_S8_TnNS_9enable_ifIXsr12__can_rewrapIT0_T2_EE5valueEiE4typeELi0EEENS_4pairISA_SB_EESA_T1_SB_

NEW

+54

_ZNSt3__224__copy_move_unwrap_itersB8nn220000INS_20__move_backward_implINS_17_ClassicAlgPolicyEEENS_16__deque_iteratorIyPyRyPS5_iLi0EEES8_S8_TnNS_9enable_ifIXsr12__can_rewrapIT0_T2_EE5valueEiE4typeELi0EEENS_4pairISA_SB_EESA_T1_SB_

NEW

+54

_ZNSt3__25dequeIyNS_9allocatorIyEEE25__maybe_remove_back_spareB8nn220000Eb

NEW

+52

_ZN2pw10containers11size_report15MeasureStdDequeIyTpTnRiJENSt3__211__wrap_iterIPyEEEEiT1_S8_j

NEW

+44

_ZNKSt3__211__move_implINS_17_ClassicAlgPolicyEEclB8nn220000INS_16__deque_iteratorIyPyRyPS5_iLi0EEES8_TnNS_9enable_ifIX25__is_segmented_iterator_vIT_EEiE4typeELi0EEENS_4pairISA_T0_EESA_SA_SE_

NEW

+42

_ZNSt3__224__copy_move_unwrap_itersB8nn220000INS_11__copy_implENS_11__wrap_iterIPyEES4_NS_16__deque_iteratorIyS3_RyPS3_iLi0EEETnNS_9enable_ifIXsr12__can_rewrapIT0_T2_EE5valueEiE4typeELi0EEENS_4pairISA_SB_EESA_T1_SB_

NEW

+42

_ZNSt3__224__copy_move_unwrap_itersB8nn220000INS_11__move_implINS_17_ClassicAlgPolicyEEEPyS4_NS_16__deque_iteratorIyS4_RyPS4_iLi0EEETnNS_9enable_ifIXsr12__can_rewrapIT0_T2_EE5valueEiE4typeELi0EEENS_4pairISA_SB_EESA_T1_SB_

NEW

+42

_ZNSt3__224__copy_move_unwrap_itersB8nn220000INS_20__move_backward_implINS_17_ClassicAlgPolicyEEEPyS4_NS_16__deque_iteratorIyS4_RyPS4_iLi0EEETnNS_9enable_ifIXsr12__can_rewrapIT0_T2_EE5valueEiE4typeELi0EEENS_4pairISA_SB_EESA_T1_SB_

NEW

+42

_ZNSt3__28__fill_nB8nn220000INS_16__deque_iteratorIyPyRyPS2_iLi0EEEjyEET_S6_T0_RKT1_

NEW

+40

_ZNSt3__2miB8nn220000ERKNS_16__deque_iteratorIyPKyRS1_PKS2_iLi0EEES8_

NEW

+40

_ZNSt3__2miB8nn220000ERKNS_16__deque_iteratorIyPyRyPS1_iLi0EEES6_

NEW

+38

_ZNSt3__25dequeIyNS_9allocatorIyEEE3endB8nn220000Ev

NEW

+36

_ZNSt3__213move_backwardB8nn220000INS_16__deque_iteratorIyPyRyPS2_iLi0EEES5_EET0_T_S7_S6_

NEW

+36

_ZNSt3__24moveB8nn220000INS_16__deque_iteratorIyPyRyPS2_iLi0EEES5_EET0_T_S7_S6_

NEW

+34

_ZNSt3__25dequeIyNS_9allocatorIyEEE5beginB8nn220000Ev

NEW

+30

_ZNKSt3__25dequeIyNS_9allocatorIyEEE12__back_spareB8nn220000Ev

NEW

+28

_ZNSt3__211__move_implINS_17_ClassicAlgPolicyEE12_MoveSegmentINS_16__deque_iteratorIyPyRyPS5_iLi0EEES8_EclB8nn220000ES5_S5_

NEW

+24

_ZNSt3__213move_backwardB8nn220000IPyNS_16__deque_iteratorIyS1_RyPS1_iLi0EEEEET0_T_S7_S6_

NEW

+24

_ZNSt3__24copyB8nn220000INS_11__wrap_iterIPyEENS_16__deque_iteratorIyS2_RyPS2_iLi0EEEEET0_T_S9_S8_

NEW

+24

_ZNSt3__24moveB8nn220000IPyNS_16__deque_iteratorIyS1_RyPS1_iLi0EEEEET0_T_S7_S6_

NEW

+20

_ZNSt3__210unique_ptrIPyNS_22__allocator_destructorINS_9allocatorIyEEEEE5resetB8nn220000ES1_

NEW

+18

_ZNSt3__29allocatorIPyE8allocateB8nn220000Ej

NEW

+16

_ZNSt3__222__allocator_destructorINS_9allocatorIyEEEclB8nn220000EPy

NEW

+16

_ZNSt3__26copy_nB8nn220000INS_11__wrap_iterIPyEEiNS_16__deque_iteratorIyS2_RyPS2_iLi0EEETnNS_9enable_ifIXsr37__has_random_access_iterator_categoryIT_EE5valueEiE4typeELi0EEET1_S9_T0_SC_

NEW

+14

_ZNSt3__210unique_ptrIPyNS_22__allocator_destructorINS_9allocatorIyEEEEED2B8nn220000Ev

NEW

+12

_ZNSt3__214__split_bufferIPyRNS_9allocatorIS1_EENS_29__split_buffer_pointer_layoutEE18__construct_at_endINS_13move_iteratorIPS1_EETnNS_9enable_ifIXsr31__has_forward_iterator_categoryIT_EE5valueEiE4typeELi0EEEvSC_SC_

NEW

+12

_ZNSt3__216__deque_iteratorIyPyRyPS1_iLi0EEmIB8nn220000Ei

NEW

+12

_ZNSt3__25dequeIyNS_9allocatorIyEEE6assignINS_11__wrap_iterIPyEETnNS_9enable_ifIXsr37__has_random_access_iterator_categoryIT_EE5valueEiE4typeELi0EEEvS9_S9_

NEW

+10

_ZNKSt3__25dequeIyNS_9allocatorIyEEE19__back_spare_blocksB8nn220000Ev

NEW

+10

_ZNSt3__216__deque_iteratorIyPKyRS1_PKS2_iLi0EEmIB8nn220000Ei

+7,024

RAM

+84

pw::containers::size_report::GetItems<>()::items

-4

[section .data]

NEW

+24

_ZZN2pw10containers11size_report15MeasureStdDequeIyTpTnRiJENSt3__211__wrap_iterIPyEEEEiT1_S8_jE9std_deque

NEW

+4

_ZGVZN2pw10containers11size_report15MeasureStdDequeIyTpTnRiJENSt3__211__wrap_iterIPyEEEEiT1_S8_jE9std_deque

+108

DynamicDeque

FLASH

+244

[section .rodata]

+2

pw::allocator::Layout::Of<>()

+4

pw::containers::size_report::Measure()

-8

vClearInterruptMaskFromISR

+4

__bi_84

NEW

+192

_ZN2pw10containers11size_report12MeasureDequeINS_12DynamicDequeIjtEETpTnRiJENSt3__211__wrap_iterIPjEEEEiRT_T1_SC_j

NEW

+156

pw::containers::internal::GenericDeque<>::erase()

NEW

+132

pw::DynamicDeque<>::ReallocateBuffer()

NEW

+100

_ZNSt3__220__uninitialized_moveB8nn220000IjN2pw10containers8internal13DequeIteratorINS1_12DynamicDequeIjtEEEES7_S7_NS_14__always_falseEZNS_18uninitialized_moveB8nn220000IS7_S7_EET0_T_SB_SA_EUlOSB_E_EENS_4pairISA_T2_EESA_T1_SF_T3_T4_

NEW

+98

_ZNKSt3__211__move_implINS_17_ClassicAlgPolicyEEclB8nn220000IN2pw10containers8internal13DequeIteratorINS4_12DynamicDequeIjtEEEESA_SA_EENS_4pairIT_T1_EESC_T0_SD_

NEW

+98

_ZNKSt3__220__move_backward_implINS_17_ClassicAlgPolicyEEclB8nn220000IN2pw10containers8internal13DequeIteratorINS4_12DynamicDequeIjtEEEESA_SA_EENS_4pairIT_T1_EESC_T0_SD_

NEW

+96

_ZN2pw10containers8internal12GenericDequeINS_12DynamicDequeIjtEEjNS1_16CountAndCapacityItEEE10try_assignINSt3__211__wrap_iterIPjEETpTnRiJEvEEbT_SE_

NEW

+86

_ZNSt3__222__uninitialized_move_nB8nn220000IjN2pw10containers8internal13DequeIteratorINS1_12DynamicDequeIjtEEEEtS7_NS_14__always_falseEZNS_20uninitialized_move_nB8nn220000IS7_tS7_EENS_4pairIT_T1_EESB_T0_SC_EUlOSB_E_EENSA_ISE_T2_EESE_SC_SH_T3_T4_

NEW

+84

pw::DynamicDeque<>::shrink_to_fit()

NEW

+84

pw::containers::internal::GenericDeque<>::ShiftLeft()

NEW

+80

pw::containers::internal::GenericDeque<>::contiguous_data()

NEW

+78

pw::containers::internal::GenericDeque<>::ShiftRight()

NEW

+76

pw::containers::internal::GenericDeque<>::try_resize()

NEW

+74

pw::DynamicDeque<>::try_reserve()

NEW

+68

pw::DynamicDeque<>::IncreaseCapacity()

NEW

+68

pw::containers::internal::GenericDeque<>::insert()

NEW

+66

pw::containers::internal::GenericDeque<>::try_insert()

NEW

+60

_ZN2pw10containers11size_report19MeasureDynamicDequeIjTpTnRiJENSt3__211__wrap_iterIPjEEEEiT1_S8_j

NEW

+60

pw::containers::internal::GenericDeque<>::back()

NEW

+54

_ZNSt3__224__copy_move_unwrap_itersB8nn220000INS_11__move_implINS_17_ClassicAlgPolicyEEEN2pw10containers8internal13DequeIteratorINS4_12DynamicDequeIjtEEEESA_SA_TnNS_9enable_ifIXsr12__can_rewrapIT0_T2_EE5valueEiE4typeELi0EEENS_4pairISC_SD_EESC_T1_SD_

NEW

+54

_ZNSt3__224__copy_move_unwrap_itersB8nn220000INS_20__move_backward_implINS_17_ClassicAlgPolicyEEEN2pw10containers8internal13DequeIteratorINS4_12DynamicDequeIjtEEEESA_SA_TnNS_9enable_ifIXsr12__can_rewrapIT0_T2_EE5valueEiE4typeELi0EEENS_4pairISC_SD_EESC_T1_SD_

NEW

+54

pw::containers::internal::GenericDeque<>::ShiftForInsert()

NEW

+54

pw::containers::internal::GenericDeque<>::resize()

NEW

+52

pw::containers::internal::GenericDequeBase<>::AbsoluteIndexChecked()

NEW

+44

pw::containers::internal::GenericDeque<>::front()

NEW

+44

pw::containers::internal::GenericDeque<>::pop_back()

NEW

+44

pw::containers::internal::GenericDeque<>::pop_front()

NEW

+40

_ZN2pw10containers8internal12GenericDequeINS_12DynamicDequeIjtEEjNS1_16CountAndCapacityItEEE6assignINSt3__211__wrap_iterIPjEETpTnRiJEvEEvT_SE_

NEW

+40

_ZNSt3__222__uninitialized_fill_nB8nn220000IjN2pw10containers8internal13DequeIteratorINS1_12DynamicDequeIjtEEEEtjEET0_S8_T1_RKT2_

NEW

+40

pw::containers::internal::GenericDeque<>::push_back()

NEW

+40

pw::containers::internal::GenericDeque<>::push_front()

NEW

+40

pw::containers::internal::GenericDeque<>::try_emplace_front<>()

NEW

+36

_ZNSt3__213move_backwardB8nn220000IN2pw10containers8internal13DequeIteratorINS1_12DynamicDequeIjtEEEES7_EET0_T_S9_S8_

NEW

+36

_ZNSt3__218uninitialized_moveB8nn220000IN2pw10containers8internal13DequeIteratorINS1_12DynamicDequeIjtEEEES7_EET0_T_S9_S8_

NEW

+36

_ZNSt3__24moveB8nn220000IN2pw10containers8internal13DequeIteratorINS1_12DynamicDequeIjtEEEES7_EET0_T_S9_S8_

NEW

+36

pw::containers::size_report::MeasureContainer<>()

NEW

+30

pw::containers::internal::GenericDeque<>::try_emplace_back<>()

NEW

+24

pw::containers::internal::GenericDequeBase<>::PopFront()

NEW

+24

pw::containers::internal::GenericDequeBase<>::PushBack()

NEW

+22

pw::containers::internal::GenericDeque<>::CheckCapacityAdd()

NEW

+22

pw::containers::internal::GenericDequeBase<>::PopBack()

NEW

+20

pw::containers::internal::GenericDeque<>::EmplaceBackUnchecked<>()

NEW

+20

pw::containers::internal::GenericDequeBase<>::PushFront()

NEW

+16

_ZNSt3__220uninitialized_move_nB8nn220000IN2pw10containers8internal13DequeIteratorINS1_12DynamicDequeIjtEEEEtS7_EENS_4pairIT_T1_EES9_T0_SA_

NEW

+16

pw::containers::internal::GenericDeque<>::at()

NEW

+12

pw::containers::internal::DequeIterator<>::operator*()

+2,952

RAM

-8

[section .data]

+1

__Thumbv6MABSLongThunk_best_effort_wfe_or_timeout

NEW

+39

pw::containers::size_report::GetItems<>()::items

NEW

+16

_ZZN2pw10containers11size_report19MeasureDynamicDequeIjTpTnRiJENSt3__211__wrap_iterIPjEEEEiT1_S8_jE13dynamic_deque

NEW

+4

_ZGVZN2pw10containers11size_report19MeasureDynamicDequeIjTpTnRiJENSt3__211__wrap_iterIPjEEEEiT1_S8_jE13dynamic_deque

+52

Additional DynamicDeque with different item type

FLASH

+156

pw::containers::internal::GenericDeque<>::erase()

+148

pw::DynamicDeque<>::ReallocateBuffer()

+84

pw::DynamicDeque<>::shrink_to_fit()

+84

pw::containers::internal::GenericDeque<>::ShiftLeft()

+80

pw::containers::internal::GenericDeque<>::contiguous_data()

+78

pw::containers::internal::GenericDeque<>::ShiftRight()

+76

pw::containers::internal::GenericDeque<>::try_resize()

+74

pw::DynamicDeque<>::try_reserve()

+68

pw::DynamicDeque<>::IncreaseCapacity()

+68

pw::containers::internal::GenericDeque<>::insert()

+66

pw::containers::internal::GenericDeque<>::try_insert()

+60

pw::containers::internal::GenericDeque<>::back()

+54

pw::containers::internal::GenericDeque<>::ShiftForInsert()

+56

pw::containers::internal::GenericDeque<>::resize()

+44

pw::containers::internal::GenericDeque<>::front()

+44

pw::containers::internal::GenericDeque<>::pop_back()

+44

pw::containers::internal::GenericDeque<>::pop_front()

+40

pw::containers::internal::GenericDeque<>::push_back()

+40

pw::containers::internal::GenericDeque<>::push_front()

+46

pw::containers::internal::GenericDeque<>::try_emplace_front<>()

+36

pw::containers::size_report::MeasureContainer<>()

+30

pw::containers::internal::GenericDeque<>::try_emplace_back<>()

+20

pw::containers::size_report::Measure()

+22

pw::containers::internal::GenericDeque<>::CheckCapacityAdd()

+28

pw::containers::internal::GenericDeque<>::EmplaceBackUnchecked<>()

+14

pw::containers::internal::GenericDeque<>::at()

+12

pw::containers::internal::DequeIterator<>::operator*()

+4

vClearInterruptMaskFromISR

NEW

+200

_ZN2pw10containers11size_report12MeasureDequeINS_12DynamicDequeIytEETpTnRiJENSt3__211__wrap_iterIPyEEEEiRT_T1_SC_j

NEW

+106

_ZNKSt3__211__move_implINS_17_ClassicAlgPolicyEEclB8nn220000IN2pw10containers8internal13DequeIteratorINS4_12DynamicDequeIytEEEESA_SA_EENS_4pairIT_T1_EESC_T0_SD_

NEW

+104

_ZN2pw10containers8internal12GenericDequeINS_12DynamicDequeIytEEyNS1_16CountAndCapacityItEEE10try_assignINSt3__211__wrap_iterIPyEETpTnRiJEvEEbT_SE_

NEW

+104

_ZNSt3__220__uninitialized_moveB8nn220000IyN2pw10containers8internal13DequeIteratorINS1_12DynamicDequeIytEEEES7_S7_NS_14__always_falseEZNS_18uninitialized_moveB8nn220000IS7_S7_EET0_T_SB_SA_EUlOSB_E_EENS_4pairISA_T2_EESA_T1_SF_T3_T4_

NEW

+102

_ZNKSt3__220__move_backward_implINS_17_ClassicAlgPolicyEEclB8nn220000IN2pw10containers8internal13DequeIteratorINS4_12DynamicDequeIytEEEESA_SA_EENS_4pairIT_T1_EESC_T0_SD_

NEW

+90

_ZNSt3__222__uninitialized_move_nB8nn220000IyN2pw10containers8internal13DequeIteratorINS1_12DynamicDequeIytEEEEtS7_NS_14__always_falseEZNS_20uninitialized_move_nB8nn220000IS7_tS7_EENS_4pairIT_T1_EESB_T0_SC_EUlOSB_E_EENSA_ISE_T2_EESE_SC_SH_T3_T4_

NEW

+60

_ZN2pw10containers11size_report19MeasureDynamicDequeIyTpTnRiJENSt3__211__wrap_iterIPyEEEEiT1_S8_j

NEW

+54

_ZNSt3__224__copy_move_unwrap_itersB8nn220000INS_11__move_implINS_17_ClassicAlgPolicyEEEN2pw10containers8internal13DequeIteratorINS4_12DynamicDequeIytEEEESA_SA_TnNS_9enable_ifIXsr12__can_rewrapIT0_T2_EE5valueEiE4typeELi0EEENS_4pairISC_SD_EESC_T1_SD_

NEW

+54

_ZNSt3__224__copy_move_unwrap_itersB8nn220000INS_20__move_backward_implINS_17_ClassicAlgPolicyEEEN2pw10containers8internal13DequeIteratorINS4_12DynamicDequeIytEEEESA_SA_TnNS_9enable_ifIXsr12__can_rewrapIT0_T2_EE5valueEiE4typeELi0EEENS_4pairISC_SD_EESC_T1_SD_

NEW

+42

_ZNSt3__222__uninitialized_fill_nB8nn220000IyN2pw10containers8internal13DequeIteratorINS1_12DynamicDequeIytEEEEtyEET0_S8_T1_RKT2_

NEW

+40

_ZN2pw10containers8internal12GenericDequeINS_12DynamicDequeIytEEyNS1_16CountAndCapacityItEEE6assignINSt3__211__wrap_iterIPyEETpTnRiJEvEEvT_SE_

NEW

+36

_ZNSt3__213move_backwardB8nn220000IN2pw10containers8internal13DequeIteratorINS1_12DynamicDequeIytEEEES7_EET0_T_S9_S8_

NEW

+36

_ZNSt3__218uninitialized_moveB8nn220000IN2pw10containers8internal13DequeIteratorINS1_12DynamicDequeIytEEEES7_EET0_T_S9_S8_

NEW

+36

_ZNSt3__24moveB8nn220000IN2pw10containers8internal13DequeIteratorINS1_12DynamicDequeIytEEEES7_EET0_T_S9_S8_

NEW

+16

_ZNSt3__220uninitialized_move_nB8nn220000IN2pw10containers8internal13DequeIteratorINS1_12DynamicDequeIytEEEEtS7_EENS_4pairIT_T1_EES9_T0_SA_

+2,656

RAM

+84

pw::containers::size_report::GetItems<>()::items

-4

[section .data]

NEW

+16

_ZZN2pw10containers11size_report19MeasureDynamicDequeIyTpTnRiJENSt3__211__wrap_iterIPyEEEEiT1_S8_jE13dynamic_deque

NEW

+4

_ZGVZN2pw10containers11size_report19MeasureDynamicDequeIyTpTnRiJENSt3__211__wrap_iterIPyEEEEiT1_S8_jE13dynamic_deque

+100

FixedDeque (static)

FLASH

+192

[section .rodata]

+2

pw::allocator::Layout::Of<>()

+4

pw::containers::size_report::Measure()

-12

vClearInterruptMaskFromISR

NEW

+136

_ZN2pw10containers11size_report12MeasureDequeINS_5DequeIjtEETpTnRiJENSt3__211__wrap_iterIPjEEEEiRT_T1_SC_j

NEW

+68

pw::containers::internal::GenericDeque<>::try_resize()

NEW

+60

pw::containers::internal::GenericDeque<>::back()

NEW

+56

pw::containers::internal::GenericDeque<>::try_emplace_front<>()

NEW

+54

pw::containers::internal::GenericDeque<>::resize()

NEW

+46

pw::containers::size_report::MeasureContainer<>()

NEW

+44

pw::containers::internal::GenericDeque<>::front()

NEW

+44

pw::containers::internal::GenericDeque<>::pop_back()

NEW

+44

pw::containers::internal::GenericDeque<>::pop_front()

NEW

+40

pw::containers::internal::GenericDeque<>::push_back()

NEW

+40

pw::containers::internal::GenericDeque<>::push_front()

NEW

+38

pw::containers::internal::GenericDeque<>::try_emplace_back<>()

NEW

+34

_ZN2pw10containers8internal12GenericDequeINS_5DequeIjtEEjNS1_16CountAndCapacityItEEE6assignINSt3__211__wrap_iterIPjEETpTnRiJEvEEvT_SE_

NEW

+24

_ZN2pw10containers11size_report17MeasureFixedDequeIjTpTnRiJENSt3__211__wrap_iterIPjEEEEiT1_S8_j

NEW

+24

pw::containers::internal::GenericDequeBase<>::PopFront()

NEW

+24

pw::containers::internal::GenericDequeBase<>::PushBack()

NEW

+22

pw::containers::internal::GenericDequeBase<>::PopBack()

NEW

+20

pw::containers::internal::GenericDeque<>::EmplaceBackUnchecked<>()

NEW

+20

pw::containers::internal::GenericDequeBase<>::PushFront()

+1,024

RAM

-12

[section .data]

+1

__Thumbv6MABSLongThunk_best_effort_wfe_or_timeout

NEW

+52

pw::containers::size_report::GetContainer<>()::container

NEW

+39

pw::containers::size_report::GetItems<>()::items

+80

Additional FixedDeque (static) with different item type

FLASH

+68

pw::containers::internal::GenericDeque<>::try_resize()

+60

pw::containers::internal::GenericDeque<>::back()

+62

pw::containers::internal::GenericDeque<>::try_emplace_front<>()

+56

pw::containers::internal::GenericDeque<>::resize()

+46

pw::containers::size_report::MeasureContainer<>()

+44

pw::containers::internal::GenericDeque<>::front()

+44

pw::containers::internal::GenericDeque<>::pop_back()

+44

pw::containers::internal::GenericDeque<>::pop_front()

+40

pw::containers::internal::GenericDeque<>::push_back()

+40

pw::containers::internal::GenericDeque<>::push_front()

+38

pw::containers::internal::GenericDeque<>::try_emplace_back<>()

+20

pw::containers::size_report::Measure()

+28

pw::containers::internal::GenericDeque<>::EmplaceBackUnchecked<>()

+4

vClearInterruptMaskFromISR

NEW

+148

_ZN2pw10containers11size_report12MeasureDequeINS_5DequeIytEETpTnRiJENSt3__211__wrap_iterIPyEEEEiRT_T1_SC_j

NEW

+34

_ZN2pw10containers8internal12GenericDequeINS_5DequeIytEEyNS1_16CountAndCapacityItEEE6assignINSt3__211__wrap_iterIPyEETpTnRiJEvEEvT_SE_

NEW

+24

_ZN2pw10containers11size_report17MeasureFixedDequeIyTpTnRiJENSt3__211__wrap_iterIPyEEEEiT1_S8_j

+800

RAM

+100

pw::containers::size_report::GetContainer<>()::container

+84

pw::containers::size_report::GetItems<>()::items

+8

[section .data]

+192

FixedDeque (dynamic)

FLASH

+308

[section .rodata]

+4

pw::containers::size_report::Measure()

-12

vClearInterruptMaskFromISR

+4

__bi_84

NEW

+136

_ZN2pw10containers11size_report12MeasureDequeINS_5DequeIjtEETpTnRiJENSt3__211__wrap_iterIPjEEEEiRT_T1_SC_j

NEW

+68

pw::containers::internal::GenericDeque<>::try_resize()

NEW

+64

pw::FixedDeque<>::TryAllocate()

NEW

+60

_ZN2pw10containers11size_report17MeasureFixedDequeIjTpTnRiJENSt3__211__wrap_iterIPjEEEEiT1_S8_j

NEW

+60

pw::containers::internal::GenericDeque<>::back()

NEW

+56

pw::containers::internal::GenericDeque<>::try_emplace_front<>()

NEW

+54

pw::containers::internal::GenericDeque<>::resize()

NEW

+46

pw::containers::size_report::MeasureContainer<>()

NEW

+44

pw::FixedDeque<>::Allocate()

NEW

+44

pw::containers::internal::GenericDeque<>::front()

NEW

+44

pw::containers::internal::GenericDeque<>::pop_back()

NEW

+44

pw::containers::internal::GenericDeque<>::pop_front()

NEW

+40

pw::containers::internal::GenericDeque<>::push_back()

NEW

+40

pw::containers::internal::GenericDeque<>::push_front()

NEW

+38

pw::containers::internal::GenericDeque<>::try_emplace_back<>()

NEW

+34

_ZN2pw10containers8internal12GenericDequeINS_5DequeIjtEEjNS1_16CountAndCapacityItEEE6assignINSt3__211__wrap_iterIPjEETpTnRiJEvEEvT_SE_

NEW

+26

pw::containers::internal::GenericDequeBase<>::PushBack()

NEW

+24

pw::containers::internal::GenericDequeBase<>::PopFront()

NEW

+22

pw::containers::internal::GenericDequeBase<>::PopBack()

NEW

+20

pw::containers::internal::GenericDeque<>::EmplaceBackUnchecked<>()

NEW

+20

pw::containers::internal::GenericDequeBase<>::PushFront()

+1,288

RAM

-8

[section .data]

+1

__Thumbv6MABSLongThunk_best_effort_wfe_or_timeout

NEW

+39

pw::containers::size_report::GetItems<>()::items

NEW

+16

_ZZN2pw10containers11size_report17MeasureFixedDequeIjTpTnRiJENSt3__211__wrap_iterIPjEEEEiT1_S8_jE11fixed_deque

NEW

+4

_ZGVZN2pw10containers11size_report17MeasureFixedDequeIjTpTnRiJENSt3__211__wrap_iterIPjEEEEiT1_S8_jE11fixed_deque

+52

Additional FixedDeque (dynamic) with different item type

FLASH

+68

pw::containers::internal::GenericDeque<>::try_resize()

+64

pw::FixedDeque<>::TryAllocate()

+60

pw::containers::internal::GenericDeque<>::back()

+62

pw::containers::internal::GenericDeque<>::try_emplace_front<>()

+56

pw::containers::internal::GenericDeque<>::resize()

+46

pw::containers::size_report::MeasureContainer<>()

+44

pw::FixedDeque<>::Allocate()

+44

pw::containers::internal::GenericDeque<>::front()

+44

pw::containers::internal::GenericDeque<>::pop_back()

+44

pw::containers::internal::GenericDeque<>::pop_front()

+40

pw::containers::internal::GenericDeque<>::push_back()

+40

pw::containers::internal::GenericDeque<>::push_front()

+38

pw::containers::internal::GenericDeque<>::try_emplace_back<>()

+20

pw::containers::size_report::Measure()

+28

pw::containers::internal::GenericDeque<>::EmplaceBackUnchecked<>()

+4

vClearInterruptMaskFromISR

NEW

+148

_ZN2pw10containers11size_report12MeasureDequeINS_5DequeIytEETpTnRiJENSt3__211__wrap_iterIPyEEEEiRT_T1_SC_j

NEW

+60

_ZN2pw10containers11size_report17MeasureFixedDequeIyTpTnRiJENSt3__211__wrap_iterIPyEEEEiT1_S8_j

NEW

+34

_ZN2pw10containers8internal12GenericDequeINS_5DequeIytEEyNS1_16CountAndCapacityItEEE6assignINSt3__211__wrap_iterIPyEETpTnRiJEvEEvT_SE_

+944

RAM

+84

pw::containers::size_report::GetItems<>()::items

-4

[section .data]

NEW

+16

_ZZN2pw10containers11size_report17MeasureFixedDequeIyTpTnRiJENSt3__211__wrap_iterIPyEEEEiT1_S8_jE11fixed_deque

NEW

+4

_ZGVZN2pw10containers11size_report17MeasureFixedDequeIyTpTnRiJENSt3__211__wrap_iterIPyEEEEiT1_S8_jE11fixed_deque

+100

FixedDeque (static and dynamic)

FLASH

+308

[section .rodata]

+2

pw::allocator::Layout::Of<>()

+68

pw::containers::size_report::Measure()

+4

__bi_84

NEW

+136

_ZN2pw10containers11size_report12MeasureDequeINS_5DequeIjtEETpTnRiJENSt3__211__wrap_iterIPjEEEEiRT_T1_SC_j

NEW

+68

pw::containers::internal::GenericDeque<>::try_resize()

NEW

+64

pw::FixedDeque<>::TryAllocate()

NEW

+60

pw::containers::internal::GenericDeque<>::back()

NEW

+56

pw::containers::internal::GenericDeque<>::try_emplace_front<>()

NEW

+54

pw::containers::internal::GenericDeque<>::resize()

NEW

+46

pw::containers::size_report::MeasureContainer<>()

NEW

+44

pw::FixedDeque<>::Allocate()

NEW

+44

pw::containers::internal::GenericDeque<>::front()

NEW

+44

pw::containers::internal::GenericDeque<>::pop_back()

NEW

+44

pw::containers::internal::GenericDeque<>::pop_front()

NEW

+40

pw::containers::internal::GenericDeque<>::push_back()

NEW

+40

pw::containers::internal::GenericDeque<>::push_front()

NEW

+38

pw::containers::internal::GenericDeque<>::try_emplace_back<>()

NEW

+34

_ZN2pw10containers8internal12GenericDequeINS_5DequeIjtEEjNS1_16CountAndCapacityItEEE6assignINSt3__211__wrap_iterIPjEETpTnRiJEvEEvT_SE_

NEW

+24

pw::containers::internal::GenericDequeBase<>::PopFront()

NEW

+24

pw::containers::internal::GenericDequeBase<>::PushBack()

NEW

+22

pw::containers::internal::GenericDequeBase<>::PopBack()

NEW

+20

pw::containers::internal::GenericDeque<>::EmplaceBackUnchecked<>()

NEW

+20

pw::containers::internal::GenericDequeBase<>::PushFront()

+1,304

RAM

-12

[section .data]

+1

__Thumbv6MABSLongThunk_best_effort_wfe_or_timeout

NEW

+52

pw::containers::size_report::GetContainer<>()::container

NEW

+39

pw::containers::size_report::GetItems<>()::items

NEW

+16

_ZZN2pw10containers11size_report12_GLOBAL__N_114MeasureDynamicIjTpTnRiJENSt3__211__wrap_iterIPjEEEEiT1_S9_jE11fixed_deque

NEW

+4

_ZGVZN2pw10containers11size_report12_GLOBAL__N_114MeasureDynamicIjTpTnRiJENSt3__211__wrap_iterIPjEEEEiT1_S9_jE11fixed_deque

+100

InlineDeque

FLASH

+192

[section .rodata]

+2

pw::allocator::Layout::Of<>()

+8

pw::containers::size_report::Measure()

-4

vClearInterruptMaskFromISR

NEW

+132

_ZN2pw10containers11size_report12MeasureDequeINS0_8internal20BasicInlineDequeImplIjNS3_16CountAndCapacityItEELj10EEETpTnRiJENSt3__211__wrap_iterIPjEEEEiRT_T1_SF_j

NEW

+68

pw::containers::internal::GenericDeque<>::try_resize()

NEW

+60

pw::containers::internal::GenericDeque<>::back()

NEW

+56

pw::containers::internal::GenericDeque<>::try_emplace_front<>()

NEW

+54

pw::containers::internal::GenericDeque<>::resize()

NEW

+46

pw::containers::size_report::MeasureContainer<>()

NEW

+44

pw::containers::internal::GenericDeque<>::front()

NEW

+44

pw::containers::internal::GenericDeque<>::pop_back()

NEW

+44

pw::containers::internal::GenericDeque<>::pop_front()

NEW

+40

pw::containers::internal::GenericDeque<>::push_back()

NEW

+40

pw::containers::internal::GenericDeque<>::push_front()

NEW

+38

pw::containers::internal::GenericDeque<>::try_emplace_back<>()

NEW

+34

_ZN2pw10containers8internal12GenericDequeINS1_20BasicInlineDequeImplIjNS1_16CountAndCapacityItEELj4294967295EEEjS5_E6assignINSt3__211__wrap_iterIPjEETpTnRiJEvEEvT_SE_

NEW

+24

pw::containers::internal::GenericDequeBase<>::PopFront()

NEW

+24

pw::containers::internal::GenericDequeBase<>::PushBack()

NEW

+22

pw::containers::internal::GenericDequeBase<>::PopBack()

NEW

+20

pw::containers::internal::GenericDeque<>::EmplaceBackUnchecked<>()

NEW

+20

pw::containers::internal::GenericDequeBase<>::PushFront()

+1,008

RAM

-8

[section .data]

+1

__Thumbv6MABSLongThunk_best_effort_wfe_or_timeout

NEW

+48

pw::containers::size_report::GetContainer<>()::container

NEW

+39

pw::containers::size_report::GetItems<>()::items

+80

Additional InlineDeque with different item type

FLASH

+68

pw::containers::internal::GenericDeque<>::try_resize()

+60

pw::containers::internal::GenericDeque<>::back()

+60

pw::containers::internal::GenericDeque<>::try_emplace_front<>()

+56

pw::containers::internal::GenericDeque<>::resize()

+46

pw::containers::size_report::MeasureContainer<>()

+44

pw::containers::internal::GenericDeque<>::front()

+44

pw::containers::internal::GenericDeque<>::pop_back()

+44

pw::containers::internal::GenericDeque<>::pop_front()

+40

pw::containers::internal::GenericDeque<>::push_back()

+40

pw::containers::internal::GenericDeque<>::push_front()

+38

pw::containers::internal::GenericDeque<>::try_emplace_back<>()

+28

pw::containers::size_report::Measure()

+26

pw::containers::internal::GenericDeque<>::EmplaceBackUnchecked<>()

-4

vClearInterruptMaskFromISR

NEW

+144

_ZN2pw10containers11size_report12MeasureDequeINS0_8internal20BasicInlineDequeImplIyNS3_16CountAndCapacityItEELj10EEETpTnRiJENSt3__211__wrap_iterIPyEEEEiRT_T1_SF_j

NEW

+34

_ZN2pw10containers8internal12GenericDequeINS1_20BasicInlineDequeImplIyNS1_16CountAndCapacityItEELj4294967295EEEyS5_E6assignINSt3__211__wrap_iterIPyEETpTnRiJEvEEvT_SE_

+768

RAM

+88

pw::containers::size_report::GetContainer<>()::container

+84

pw::containers::size_report::GetItems<>()::items

+4

[section .data]

+176

InlineQueue

FLASH

+172

[section .rodata]

+4

pw::containers::size_report::Measure()

+4

__bi_84

NEW

+92

_ZN2pw10containers11size_report18MeasureInlineQueueIjTpTnRiJENSt3__211__wrap_iterIPjEEEEiT1_S8_j

NEW

+44

pw::containers::internal::GenericDeque<>::front()

NEW

+44

pw::containers::internal::GenericDeque<>::pop_front()

NEW

+44

pw::containers::size_report::MeasureContainer<>()

NEW

+40

pw::containers::internal::GenericDeque<>::emplace_back<>()

NEW

+40

pw::containers::internal::GenericDeque<>::push_back()

NEW

+38

pw::containers::internal::GenericDeque<>::try_emplace_back<>()

NEW

+32

pw::containers::internal::BasicInlineQueueImpl<>::emplace_overwrite<>()

NEW

+26

pw::containers::internal::GenericDequeBase<>::PushBack()

NEW

+24

pw::containers::internal::GenericDequeBase<>::PopFront()

NEW

+20

pw::containers::internal::GenericDeque<>::EmplaceBackUnchecked<>()

+624

RAM

-8

[section .data]

+1

__Thumbv6MABSLongThunk_best_effort_wfe_or_timeout

NEW

+48

pw::containers::size_report::GetContainer<>()::container

NEW

+39

pw::containers::size_report::GetItems<>()::items

+80

Additional InlineQueue with different item type

FLASH

+44

pw::containers::internal::GenericDeque<>::front()

+44

pw::containers::internal::GenericDeque<>::pop_front()

+44

pw::containers::size_report::MeasureContainer<>()

+40

pw::containers::internal::GenericDeque<>::emplace_back<>()

+40

pw::containers::internal::GenericDeque<>::push_back()

+38

pw::containers::internal::GenericDeque<>::try_emplace_back<>()

+32

pw::containers::internal::BasicInlineQueueImpl<>::emplace_overwrite<>()

+20

pw::containers::size_report::Measure()

+26

pw::containers::internal::GenericDeque<>::EmplaceBackUnchecked<>()

-8

vClearInterruptMaskFromISR

NEW

+96

_ZN2pw10containers11size_report18MeasureInlineQueueIyTpTnRiJENSt3__211__wrap_iterIPyEEEEiT1_S8_j

+416

RAM

+88

pw::containers::size_report::GetContainer<>()::container

+84

pw::containers::size_report::GetItems<>()::items

+4

[section .data]

+176

InlineDeque and InlineQueue

FLASH

+204

[section .rodata]

+2

pw::allocator::Layout::Of<>()

+28

pw::containers::size_report::Measure()

-8

vClearInterruptMaskFromISR

+4

__bi_84

NEW

+132

_ZN2pw10containers11size_report12MeasureDequeINS0_8internal20BasicInlineDequeImplIjNS3_16CountAndCapacityItEELj10EEETpTnRiJENSt3__211__wrap_iterIPjEEEEiRT_T1_SF_j

NEW

+92

_ZN2pw10containers11size_report18MeasureInlineQueueIjTpTnRiJENSt3__211__wrap_iterIPjEEEEiT1_S8_j

NEW

+90

pw::containers::size_report::MeasureContainer<>()

NEW

+68

pw::containers::internal::GenericDeque<>::try_resize()

NEW

+60

pw::containers::internal::GenericDeque<>::back()

NEW

+56

pw::containers::internal::GenericDeque<>::try_emplace_front<>()

NEW

+54

pw::containers::internal::GenericDeque<>::resize()

NEW

+44

pw::containers::internal::GenericDeque<>::front()

NEW

+44

pw::containers::internal::GenericDeque<>::pop_back()

NEW

+44

pw::containers::internal::GenericDeque<>::pop_front()

NEW

+40

pw::containers::internal::GenericDeque<>::emplace_back<>()

NEW

+40

pw::containers::internal::GenericDeque<>::push_back()

NEW

+40

pw::containers::internal::GenericDeque<>::push_front()

NEW

+38

pw::containers::internal::GenericDeque<>::try_emplace_back<>()

NEW

+34

_ZN2pw10containers8internal12GenericDequeINS1_20BasicInlineDequeImplIjNS1_16CountAndCapacityItEELj4294967295EEEjS5_E6assignINSt3__211__wrap_iterIPjEETpTnRiJEvEEvT_SE_

NEW

+32

pw::containers::internal::BasicInlineQueueImpl<>::emplace_overwrite<>()

NEW

+24

pw::containers::internal::GenericDequeBase<>::PopFront()

NEW

+24

pw::containers::internal::GenericDequeBase<>::PushBack()

NEW

+22

pw::containers::internal::GenericDequeBase<>::PopBack()

NEW

+20

pw::containers::internal::GenericDeque<>::EmplaceBackUnchecked<>()

NEW

+20

pw::containers::internal::GenericDequeBase<>::PushFront()

+1,248

RAM

-8

[section .data]

+1

__Thumbv6MABSLongThunk_best_effort_wfe_or_timeout

NEW

+96

pw::containers::size_report::GetContainer<>()::container

NEW

+39

pw::containers::size_report::GetItems<>()::items

+128

API reference#

Moved: pw_containers_queues