common: Add a FIFOQueue helper class

This commit is contained in:
Connor McLaughlin
2019-09-17 19:22:23 +10:00
parent 2128a2984b
commit a0e7dff37c
4 changed files with 207 additions and 0 deletions

View File

@ -1,5 +1,6 @@
#pragma once
#include "YBaseLib/ByteStream.h"
#include "fifo_queue.h"
#include "types.h"
#include <cstring>
#include <deque>
@ -134,6 +135,29 @@ public:
}
}
template<typename T, u32 CAPACITY>
void Do(FIFOQueue<T, CAPACITY>* data)
{
u32 size = data->GetSize();
Do(&size);
if (m_mode == Mode::Read)
{
T* temp = new T[size];
DoArray(temp, size);
data->PushRange(temp, size);
delete[] temp;
}
else
{
for (u32 i = 0; i < size; i++)
{
T temp(data->Peek(i));
Do(&temp);
}
}
}
bool DoMarker(const char* marker);
private: