19 explicit RingQueue(
size_t capacity) : m_Capacity(capacity) {
20 assert(capacity <= preallocatedSize);
23 size_t count()
const {
26 size_t capacity()
const {
30 size_t push(
const T* items,
size_t count) {
31 if (count > m_Capacity - m_Count) {
32 count = m_Capacity - m_Count;
34 for (
size_t i = 0; i < count; ++i) {
35 m_Items[m_Write] = items[i];
36 if (++m_Write == m_Capacity) {
44 size_t pop(T* items,
size_t count) {
45 if (count > m_Count) {
48 for (
size_t i = 0; i < count; ++i) {
49 items[i] = m_Items[m_Read];
50 if (++m_Read == m_Capacity) {
61 const size_t m_Capacity;
62 T m_Items[preallocatedSize] = {};
72 explicit RingQueue(
size_t capacity) : m_Capacity(capacity) {}
74 size_t count()
const {
75 return m_Items.count();
77 size_t capacity()
const {
81 size_t push(
const T* items,
size_t count) {
82 if (count > m_Capacity - m_Items.count()) {
83 count = m_Capacity - m_Items.count();
85 for (
size_t i = 0; i < count; ++i) {
86 m_Items.pushBack(items[i]);
91 size_t pop(T* items,
size_t count) {
92 if (count > m_Items.count()) {
93 count = m_Items.count();
95 for (
size_t i = 0; i < count; ++i) {
96 items[i] = m_Items.popFront();
104 const size_t m_Capacity;