diff options
| author | StapleButter <thetotalworm@gmail.com> | 2017-03-16 23:01:22 +0100 |
|---|---|---|
| committer | StapleButter <thetotalworm@gmail.com> | 2017-03-16 23:01:22 +0100 |
| commit | 8a4ed8f41ca54164fdb335343461ab5f9c3bd87f (patch) | |
| tree | 28ba71576603fef73dfcce5db33e157ec236e6c5 /FIFO.h | |
| parent | 10ca9b6f7f20f88dfcdfdf680daf1b04cb7f22c5 (diff) | |
reorganize repo, move shit around
Diffstat (limited to 'FIFO.h')
| -rw-r--r-- | FIFO.h | 93 |
1 files changed, 0 insertions, 93 deletions
@@ -1,93 +0,0 @@ -/* - Copyright 2016-2017 StapleButter - - This file is part of melonDS. - - melonDS is free software: you can redistribute it and/or modify it under - the terms of the GNU General Public License as published by the Free - Software Foundation, either version 3 of the License, or (at your option) - any later version. - - melonDS is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS - FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. - - You should have received a copy of the GNU General Public License along - with melonDS. If not, see http://www.gnu.org/licenses/. -*/ - -#ifndef FIFO_H -#define FIFO_H - -#include "types.h" - -template<typename T> -class FIFO -{ -public: - FIFO(u32 num) - { - NumEntries = num; - Entries = new T[num]; - Clear(); - } - - ~FIFO() - { - delete[] Entries; - } - - - void Clear() - { - NumOccupied = 0; - ReadPos = 0; - WritePos = 0; - memset(&Entries[ReadPos], 0, sizeof(T)); - } - - - void Write(T val) - { - if (IsFull()) return; - - Entries[WritePos] = val; - - WritePos++; - if (WritePos >= NumEntries) - WritePos = 0; - - NumOccupied++; - } - - T Read() - { - T ret = Entries[ReadPos]; - if (IsEmpty()) - return ret; - - ReadPos++; - if (ReadPos >= NumEntries) - ReadPos = 0; - - NumOccupied--; - return ret; - } - - T Peek() - { - return Entries[ReadPos]; - } - - u32 Level() { return NumOccupied; } - bool IsEmpty() { return NumOccupied == 0; } - bool IsFull() { return NumOccupied >= NumEntries; } - -private: - u32 NumEntries; - T* Entries; - u32 NumOccupied; - u32 ReadPos, WritePos; -}; - -#endif |