Ring buffer: Use as backing for std::queue uses

This commit is contained in:
Jonathan G Rennison
2023-08-19 15:28:45 +01:00
parent 2296b92ea2
commit e912cfc19d
7 changed files with 34 additions and 8 deletions

View File

@@ -29,6 +29,7 @@ add_files(
random_func.cpp
random_func.hpp
ring_buffer.hpp
ring_buffer_queue.hpp
serialisation.cpp
serialisation.hpp
smallstack_type.hpp

View File

@@ -192,6 +192,11 @@ public:
}
};
using difference_type = std::ptrdiff_t;
using size_type = size_t;
using value_type = T;
using reference = T &;
using const_reference = const T &;
typedef ring_buffer_iterator<T, false> iterator;
typedef ring_buffer_iterator<const T, false> const_iterator;
typedef ring_buffer_iterator<T, true> reverse_iterator;

View File

@@ -0,0 +1,20 @@
/*
* This file is part of OpenTTD.
* OpenTTD 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, version 2.
* OpenTTD 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 OpenTTD. If not, see <http://www.gnu.org/licenses/>.
*/
/** @file ring_buffer_queue.hpp std::queue backed by a ring buffer. */
#ifndef RING_BUFFER_QUEUE_HPP
#define RING_BUFFER_QUEUE_HPP
#include "ring_buffer.hpp"
#include <queue>
template<class T>
using ring_buffer_queue = std::queue<T, ring_buffer<T>>;
#endif /* RING_BUFFER_QUEUE_HPP */