-
Notifications
You must be signed in to change notification settings - Fork 0
/
DataQueue.cpp
58 lines (47 loc) · 1.17 KB
/
DataQueue.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
#include "DataQueue.hpp"
#include <queue>
#include <stdexcept>
DataQueue &DataQueue::operator=(DataQueue&& rhs) noexcept {
if (this != &rhs) {
m_queue = std::move(rhs.m_queue);
}
return *this;
}
DataQueue &DataQueue::operator=(const DataQueue &rhs) {
if (this != &rhs) {
m_queue = rhs.m_queue;
}
return *this;
}
DataQueue::value_type DataQueue::front() const noexcept {
return m_queue.front();
}
DataQueue::value_type DataQueue::back() const noexcept {
return m_queue.back();
}
void DataQueue::push(const value_type& c) {
if (m_queue.size() >= m_capacity) {
throw std::runtime_error("DataQueue is full");
}
m_queue.push(c);
}
DataQueue::value_type& DataQueue::pop() {
if (empty()) {
throw std::runtime_error("DataQueue is empty");
}
auto& temp = m_queue.front();
m_queue.pop();
return temp;
}
bool DataQueue::empty() const noexcept {
return m_queue.empty();
}
bool DataQueue::full() const noexcept {
return m_queue.size() == m_capacity;
}
unsigned int DataQueue::capacity() const noexcept {
return m_capacity;
}
size_t DataQueue::size() const noexcept {
return m_queue.size();
}