31 lines
677 B
Plaintext
31 lines
677 B
Plaintext
Queue :: struct(Value_Type : Type) {
|
|
count: s64;
|
|
|
|
values: [..] Value_Type;
|
|
}
|
|
|
|
enqueue :: (queue: *Queue, value: queue.Value_Type) {
|
|
array_add(*queue.values, value);
|
|
queue.count = queue.values.count;
|
|
}
|
|
|
|
dequeue :: (queue: *Queue) -> queue.Value_Type {
|
|
val : queue.Value_Type;
|
|
if queue.values.count > 0 {
|
|
val = queue.values[0];
|
|
if queue.values.count > 1 {
|
|
memcpy(*queue.values.data[0], *queue.values.data[1], (queue.values.count - 1) * size_of(queue.Value_Type));
|
|
}
|
|
|
|
queue.values.count -= 1;
|
|
queue.count = queue.values.count;
|
|
}
|
|
|
|
return val;
|
|
}
|
|
|
|
is_queue_empty :: (queue: Queue) -> bool {
|
|
return queue.count == 0;
|
|
}
|
|
|