Nebula
Toggle main menu visibility
Loading...
Searching...
No Matches
arrayqueue.h
Go to the documentation of this file.
1
#pragma once
2
//------------------------------------------------------------------------------
14
#include "
core/types.h
"
15
#include "
util/array.h
"
16
17
//------------------------------------------------------------------------------
18
namespace
Util
19
{
20
template
<
class
TYPE>
class
ArrayQueue
21
{
22
public
:
24
ArrayQueue
();
26
ArrayQueue
(
const
ArrayQueue<TYPE>
& rhs);
28
ArrayQueue
(
ArrayQueue<TYPE>
&& rhs);
30
ArrayQueue
(
const
Array<TYPE>
& rhs);
31
33
void
operator=
(
const
ArrayQueue<TYPE>
& rhs);
35
void
operator=
(
ArrayQueue<TYPE>
&& rhs);
37
TYPE&
operator[]
(
IndexT
index)
const
;
39
bool
operator==
(
const
ArrayQueue<TYPE>
& rhs)
const
;
41
bool
operator!=
(
const
ArrayQueue<TYPE>
& rhs)
const
;
43
void
Reserve
(
SizeT
num);
45
SizeT
Size
()
const
;
47
bool
IsEmpty
()
const
;
49
void
Clear
();
51
bool
Contains
(
const
TYPE& e)
const
;
53
void
EraseIndex
(
const
IndexT
i);
54
56
void
Enqueue
(
const
TYPE& e);
58
TYPE
Dequeue
();
60
TYPE&
Peek
()
const
;
61
62
protected
:
63
Array<TYPE>
queueArray
;
64
};
65
66
//------------------------------------------------------------------------------
69
template
<
class
TYPE>
70
ArrayQueue<TYPE>::ArrayQueue
()
71
{
72
// empty
73
}
74
75
//------------------------------------------------------------------------------
78
template
<
class
TYPE>
79
ArrayQueue<TYPE>::ArrayQueue
(
const
ArrayQueue<TYPE>
& rhs)
80
{
81
this->
queueArray
= rhs.
queueArray
;
82
}
83
84
//------------------------------------------------------------------------------
87
template
<
class
TYPE>
88
ArrayQueue<TYPE>::ArrayQueue
(
ArrayQueue<TYPE>
&& rhs):
89
queueArray
(
std
::move(rhs.
queueArray
))
90
{
91
// empty
92
}
93
94
//------------------------------------------------------------------------------
97
template
<
class
TYPE>
98
Util::ArrayQueue<TYPE>::ArrayQueue
(
const
Array<TYPE>
& rhs)
99
{
100
this->
queueArray
= rhs;
101
}
102
103
//------------------------------------------------------------------------------
106
template
<
class
TYPE>
107
void
108
ArrayQueue<TYPE>::operator=
(
const
ArrayQueue<TYPE>
& rhs)
109
{
110
this->
queueArray
= rhs.
queueArray
;
111
}
112
113
//------------------------------------------------------------------------------
116
template
<
class
TYPE>
117
void
118
ArrayQueue<TYPE>::operator=
(
ArrayQueue<TYPE>
&& rhs)
119
{
120
this->
queueArray
= std::move(rhs.queueArray);
121
}
122
123
//------------------------------------------------------------------------------
126
template
<
class
TYPE>
127
TYPE&
128
ArrayQueue<TYPE>::operator[]
(
IndexT
index)
const
129
{
130
return
this->
queueArray
[index];
131
}
132
133
//------------------------------------------------------------------------------
136
template
<
class
TYPE>
137
bool
138
ArrayQueue<TYPE>::operator==
(
const
ArrayQueue<TYPE>
& rhs)
const
139
{
140
return
this->
queueArray
== rhs.
queueArray
;
141
}
142
143
//------------------------------------------------------------------------------
146
template
<
class
TYPE>
147
bool
148
ArrayQueue<TYPE>::operator!=
(
const
ArrayQueue<TYPE>
& rhs)
const
149
{
150
return
this->
queueArray
!= rhs.
queueArray
;
151
}
152
153
//------------------------------------------------------------------------------
156
template
<
class
TYPE>
157
bool
158
ArrayQueue<TYPE>::Contains
(
const
TYPE& e)
const
159
{
160
return
(
InvalidIndex
!= this->
queueArray
.FindIndex(e));
161
}
162
163
//------------------------------------------------------------------------------
166
template
<
class
TYPE>
167
void
168
Util::ArrayQueue<TYPE>::EraseIndex
(
const
IndexT
i)
169
{
170
this->
queueArray
.EraseIndex(i);
171
}
172
173
//------------------------------------------------------------------------------
176
template
<
class
TYPE>
177
void
178
ArrayQueue<TYPE>::Clear
()
179
{
180
this->
queueArray
.Clear();
181
}
182
183
//------------------------------------------------------------------------------
186
template
<
class
TYPE>
187
void
188
ArrayQueue<TYPE>::Reserve
(
SizeT
num)
189
{
190
this->
queueArray
.Reserve(num);
191
}
192
193
//------------------------------------------------------------------------------
196
template
<
class
TYPE>
197
SizeT
198
ArrayQueue<TYPE>::Size
()
const
199
{
200
return
this->
queueArray
.Size();
201
}
202
203
//------------------------------------------------------------------------------
206
template
<
class
TYPE>
207
bool
208
ArrayQueue<TYPE>::IsEmpty
()
const
209
{
210
return
this->
queueArray
.IsEmpty();
211
}
212
213
//------------------------------------------------------------------------------
216
template
<
class
TYPE>
217
void
218
ArrayQueue<TYPE>::Enqueue
(
const
TYPE& e)
219
{
220
this->
queueArray
.Append(e);
221
}
222
223
//------------------------------------------------------------------------------
226
template
<
class
TYPE>
227
TYPE
228
ArrayQueue<TYPE>::Dequeue
()
229
{
230
TYPE e = this->
queueArray
.Front();
231
this->
queueArray
.EraseIndex(0);
232
return
e;
233
}
234
235
//------------------------------------------------------------------------------
238
template
<
class
TYPE>
239
TYPE&
240
ArrayQueue<TYPE>::Peek
()
const
241
{
242
return
this->
queueArray
.Front();
243
}
244
245
}
// namespace Util
246
//------------------------------------------------------------------------------
array.h
Util::Array
Nebula's dynamic array class.
Definition
array.h:61
Util::ArrayQueue::Reserve
void Reserve(SizeT num)
increase capacity to fit N more elements into the queue
Definition
arrayqueue.h:188
Util::ArrayQueue::IsEmpty
bool IsEmpty() const
return true if queue is empty
Definition
arrayqueue.h:208
Util::ArrayQueue::EraseIndex
void EraseIndex(const IndexT i)
erase element at index
Definition
arrayqueue.h:168
Util::ArrayQueue::operator!=
bool operator!=(const ArrayQueue< TYPE > &rhs) const
inequality operator
Definition
arrayqueue.h:148
Util::ArrayQueue::ArrayQueue
ArrayQueue()
constructor
Definition
arrayqueue.h:70
Util::ArrayQueue::Clear
void Clear()
remove all elements from the queue
Definition
arrayqueue.h:178
Util::ArrayQueue::Enqueue
void Enqueue(const TYPE &e)
add element to the back of the queue
Definition
arrayqueue.h:218
Util::ArrayQueue::Peek
TYPE & Peek() const
access to element at front of queue without removing it
Definition
arrayqueue.h:240
Util::ArrayQueue::Size
SizeT Size() const
returns number of elements in the queue
Definition
arrayqueue.h:198
Util::ArrayQueue::queueArray
Array< TYPE > queueArray
Definition
arrayqueue.h:63
Util::ArrayQueue::Dequeue
TYPE Dequeue()
remove the element from the front of the queue
Definition
arrayqueue.h:228
Util::ArrayQueue::operator[]
TYPE & operator[](IndexT index) const
access element by index, 0 is the frontmost element (next to be dequeued)
Definition
arrayqueue.h:128
Util::ArrayQueue::Contains
bool Contains(const TYPE &e) const
return true if queue contains element
Definition
arrayqueue.h:158
Util::ArrayQueue::operator=
void operator=(const ArrayQueue< TYPE > &rhs)
assignment operator
Definition
arrayqueue.h:108
Util::ArrayQueue::operator==
bool operator==(const ArrayQueue< TYPE > &rhs) const
equality operator
Definition
arrayqueue.h:138
Util
A quad tree designed to return regions of free 2D space.
Definition
String.cs:6
std
Definition
half.h:491
types.h
InvalidIndex
static const int InvalidIndex
Definition
types.h:47
SizeT
int SizeT
Definition
types.h:42
IndexT
int IndexT
Definition
types.h:41
code
foundation
util
arrayqueue.h
Generated on
for Nebula. Dark theme by
Tilen Majerle
. All rights reserved.