repositories
/
poolifier.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge branch 'master' of github.com:jerome-benoit/poolifier
[poolifier.git]
/
src
/
queue.ts
diff --git
a/src/queue.ts
b/src/queue.ts
index 11766e4e9109dc4356be0a4b589ee5e5ed9b7bd3..7682f65f952136743c1f81724a26e53264ac18ed 100644
(file)
--- a/
src/queue.ts
+++ b/
src/queue.ts
@@
-1,5
+1,9
@@
+// Copyright Jerome Benoit. 2021-2023. All Rights Reserved.
+
/**
* Queue
/**
* Queue
+ *
+ * @typeParam T - Type of queue items.
*/
export class Queue<T> {
private items: Record<number, T>
*/
export class Queue<T> {
private items: Record<number, T>
@@
-12,16
+16,33
@@
export class Queue<T> {
this.tail = 0
}
this.tail = 0
}
+ /**
+ * Get the size of the queue.
+ *
+ * @returns The size of the queue.
+ * @readonly
+ */
public get size (): number {
return this.tail - this.head
}
public get size (): number {
return this.tail - this.head
}
+ /**
+ * Enqueue an item.
+ *
+ * @param item - Item to enqueue.
+ * @returns The new size of the queue.
+ */
public enqueue (item: T): number {
this.items[this.tail] = item
this.tail++
return this.size
}
public enqueue (item: T): number {
this.items[this.tail] = item
this.tail++
return this.size
}
+ /**
+ * Dequeue an item.
+ *
+ * @returns The dequeued item or `undefined` if the queue is empty.
+ */
public dequeue (): T | undefined {
if (this.size <= 0) return undefined
const item = this.items[this.head]
public dequeue (): T | undefined {
if (this.size <= 0) return undefined
const item = this.items[this.head]
@@
-34,4
+55,12
@@
export class Queue<T> {
}
return item
}
}
return item
}
+
+ /**
+ * Peek at the first item.
+ */
+ public peek (): T | undefined {
+ if (this.size <= 0) return undefined
+ return this.items[this.head]
+ }
}
}