#include "pw_containers/internal/var_len_entry_queue_iterator.h"
#include "pw_preprocessor/util.h"
#include <cstddef>
#include <cstdint>
#include "pw_bytes/span.h"
#include "pw_containers/internal/generic_var_len_entry_queue.h"
#include "pw_containers/internal/raw_storage.h"
#include "pw_span/span.h"
#include "pw_toolchain/constexpr_tag.h"
Go to the source code of this file.
Classes | |
class | pw::BasicInlineVarLenEntryQueue< T, kMaxSizeBytes > |
class | pw::BasicInlineVarLenEntryQueue< T, containers::internal::kGenericSized > |
Namespaces | |
namespace | pw |
The Pigweed namespace. | |
Macros | |
#define | PW_VARIABLE_LENGTH_ENTRY_QUEUE_HEADER_SIZE_UINT32 (3) |
#define | _PW_VAR_QUEUE_SIZE_UINT32(max_size_bytes) |
#define | _PW_VAR_QUEUE_DATA_SIZE_UINT32(max_size_bytes) ((_PW_VAR_QUEUE_DATA_SIZE_BYTES(max_size_bytes) + 3 /* round up */) / 4) |
#define | _PW_VAR_QUEUE_DATA_SIZE_BYTES(max_size_bytes) |
#define | _PW_VAR_QUEUE_CHECK_SIZE(max_size_bytes) |
#define | PW_VARIABLE_LENGTH_ENTRY_QUEUE_DECLARE(variable, max_size_bytes) |
Functions | |
void | pw_InlineVarLenEntryQueue_Init (uint32_t array[], size_t array_size_uint32) |
pw_InlineVarLenEntryQueue_Iterator | pw_InlineVarLenEntryQueue_Begin (pw_InlineVarLenEntryQueue_Handle queue) |
pw_InlineVarLenEntryQueue_ConstIterator | pw_InlineVarLenEntryQueue_ConstBegin (pw_InlineVarLenEntryQueue_ConstHandle queue) |
pw_InlineVarLenEntryQueue_Iterator | pw_InlineVarLenEntryQueue_End (pw_InlineVarLenEntryQueue_Handle queue) |
pw_InlineVarLenEntryQueue_ConstIterator | pw_InlineVarLenEntryQueue_ConstEnd (pw_InlineVarLenEntryQueue_ConstHandle queue) |
bool | pw_InlineVarLenEntryQueue_Empty (pw_InlineVarLenEntryQueue_ConstHandle queue) |
uint32_t | pw_InlineVarLenEntryQueue_Size (pw_InlineVarLenEntryQueue_ConstHandle queue) |
uint32_t | pw_InlineVarLenEntryQueue_MaxSize (pw_InlineVarLenEntryQueue_ConstHandle queue) |
uint32_t | pw_InlineVarLenEntryQueue_SizeBytes (pw_InlineVarLenEntryQueue_ConstHandle queue) |
uint32_t | pw_InlineVarLenEntryQueue_MaxSizeBytes (pw_InlineVarLenEntryQueue_ConstHandle queue) |
void | pw_InlineVarLenEntryQueue_Push (pw_InlineVarLenEntryQueue_Handle queue, const void *data, uint32_t data_size_bytes) |
bool | pw_InlineVarLenEntryQueue_TryPush (pw_InlineVarLenEntryQueue_Handle queue, const void *data, const uint32_t data_size_bytes) |
void | pw_InlineVarLenEntryQueue_PushOverwrite (pw_InlineVarLenEntryQueue_Handle queue, const void *data, uint32_t data_size_bytes) |
void | pw_InlineVarLenEntryQueue_Pop (pw_InlineVarLenEntryQueue_Handle queue) |
void | pw_InlineVarLenEntryQueue_Clear (pw_InlineVarLenEntryQueue_Handle queue) |
uint32_t | pw_InlineVarLenEntryQueue_RawStorageSizeBytes (pw_InlineVarLenEntryQueue_ConstHandle queue) |
void | pw_InlineVarLenEntryQueue_CopyEntries (pw_InlineVarLenEntryQueue_ConstHandle from, pw_InlineVarLenEntryQueue_Handle to) |
void | pw_InlineVarLenEntryQueue_CopyEntriesOverwrite (pw_InlineVarLenEntryQueue_ConstHandle from, pw_InlineVarLenEntryQueue_Handle to) |
void | pw_InlineVarLenEntryQueue_MoveEntries (pw_InlineVarLenEntryQueue_Handle from, pw_InlineVarLenEntryQueue_Handle to) |
void | pw_InlineVarLenEntryQueue_MoveEntriesOverwrite (pw_InlineVarLenEntryQueue_Handle from, pw_InlineVarLenEntryQueue_Handle to) |
A 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.
The InlineVarLenEntryQueue
has a few interesting properties.
uint32_t
-aligned memory.uint32_t
. The memory is always in a valid state and may be parsed offline.This data structure is a much simpler version of
embed:rst:inline :cpp:class:`pw::ring_buffer::PrefixedEntryRingBuffer`
. Prefer this sized-entry ring buffer to PrefixedEntryRingBuffer
when:
InlineVarLenEntryQueue
provides complete C and C++ APIs. The InlineVarLenEntryQueue
C++ class is structured similarly to pw::InlineQueue
and pw::Vector
.