6#include "queue_base.hpp"
7#include "queue_typed_base.hpp"
23template <
typename Data>
52 Queue(
size_t length, uint8_t* buffer) :
QueueBase(sizeof(Data), length, buffer) {}
const uint16_t ELEMENT_SIZE
单个元素的字节数。 Byte size of one element.
uint8_t * queue_array_
队列数据缓冲区。 Queue data buffer.
ErrorCode PopBatchBytes(void *data, size_t size)
按字节批量出队多个元素。
ErrorCode OverwriteBytes(const void *data)
清空当前状态后,用一个新元素覆盖队列内容。
ErrorCode PeekBatchBytes(void *data, size_t size)
按字节批量查看多个元素但不出队。
size_t MaxSize() const
获取队列最大容量。
ErrorCode PushBatchBytes(const void *data, size_t size)
按字节批量入队多个元素。
size_t length_
队列最大容量。 Maximum queue capacity.
size_t head_
当前队头物理槽位下标。 Physical slot index of the current head.
size_t tail_
下一个待写入物理槽位下标。 Physical slot index of the next enqueue position.
ErrorCode PeekBytes(void *data)
按字节查看队头元素但不出队。
ErrorCode PopBatch(Data *data, size_t size)
批量移除多个元素并复制到输出数组。
Queue(size_t length, uint8_t *buffer)
使用外部缓冲区构造强类型队列。
ErrorCode PeekBatch(Data *data, size_t size)
批量查看多个元素但不移除。
ErrorCode PushBatch(const Data *data, size_t size)
批量推入多个元素。
ErrorCode Peek(Data &data)
查看队头元素但不出队。
ErrorCode Overwrite(const Data &data)
清空当前状态后,用一个新元素覆盖队列内容。
size_t MaxSize() const
获取队列最大容量。
Queue(size_t length)
构造一个由内部缓冲区支撑的强类型队列。
Data & operator[](int32_t index)
按逻辑索引访问队列中的元素。
ErrorCode Push(const Data &item)