summaryrefslogtreecommitdiff
path: root/desktop/node_modules/dir-compare/build/src/fs/Queue.js
diff options
context:
space:
mode:
Diffstat (limited to 'desktop/node_modules/dir-compare/build/src/fs/Queue.js')
-rw-r--r--desktop/node_modules/dir-compare/build/src/fs/Queue.js50
1 files changed, 50 insertions, 0 deletions
diff --git a/desktop/node_modules/dir-compare/build/src/fs/Queue.js b/desktop/node_modules/dir-compare/build/src/fs/Queue.js
new file mode 100644
index 0000000..f6e280c
--- /dev/null
+++ b/desktop/node_modules/dir-compare/build/src/fs/Queue.js
@@ -0,0 +1,50 @@
+/*
+
+Queue.js
+
+A function to represent a queue
+
+Created by Kate Morley - http://code.iamkate.com/ - and released under the terms
+of the CC0 1.0 Universal legal code:
+
+http://creativecommons.org/publicdomain/zero/1.0/legalcode
+
+*/
+const MAX_UNUSED_ARRAY_SIZE = 10000;
+/* Creates a new queue. A queue is a first-in-first-out (FIFO) data structure -
+ * items are added to the end of the queue and removed from the front.
+ */
+function Queue() {
+ // initialise the queue and offset
+ let queue = [];
+ let offset = 0;
+ // Returns the length of the queue.
+ this.getLength = () => (queue.length - offset);
+ /* Enqueues the specified item. The parameter is:
+ *
+ * item - the item to enqueue
+ */
+ this.enqueue = item => {
+ queue.push(item);
+ };
+ /* Dequeues an item and returns it. If the queue is empty, the value
+ * 'undefined' is returned.
+ */
+ this.dequeue = () => {
+ // if the queue is empty, return immediately
+ if (queue.length === 0) {
+ return undefined;
+ }
+ // store the item at the front of the queue
+ const item = queue[offset];
+ // increment the offset and remove the free space if necessary
+ if (++offset > MAX_UNUSED_ARRAY_SIZE) {
+ queue = queue.slice(offset);
+ offset = 0;
+ }
+ // return the dequeued item
+ return item;
+ };
+}
+module.exports = Queue;
+//# sourceMappingURL=Queue.js.map \ No newline at end of file