time-to-botec/squiggle/node_modules/@rescript/std/lib/js/belt_MutableQueue.js
NunoSempere b6addc7f05 feat: add the node modules
Necessary in order to clearly see the squiggle hotwiring.
2022-12-03 12:44:49 +00:00

298 lines
5.1 KiB
JavaScript

'use strict';
var Curry = require("./curry.js");
var Caml_option = require("./caml_option.js");
function make(param) {
return {
length: 0,
first: undefined,
last: undefined
};
}
function clear(q) {
q.length = 0;
q.first = undefined;
q.last = undefined;
}
function add(q, x) {
var cell = {
content: x,
next: undefined
};
var last = q.last;
if (last !== undefined) {
q.length = q.length + 1 | 0;
last.next = cell;
q.last = cell;
} else {
q.length = 1;
q.first = cell;
q.last = cell;
}
}
function peek(q) {
var v = q.first;
if (v !== undefined) {
return Caml_option.some(v.content);
}
}
function peekUndefined(q) {
var v = q.first;
if (v !== undefined) {
return v.content;
}
}
function peekExn(q) {
var v = q.first;
if (v !== undefined) {
return v.content;
}
throw {
RE_EXN_ID: "Not_found",
Error: new Error()
};
}
function pop(q) {
var x = q.first;
if (x === undefined) {
return ;
}
var next = x.next;
if (next === undefined) {
clear(q);
return Caml_option.some(x.content);
} else {
q.length = q.length - 1 | 0;
q.first = next;
return Caml_option.some(x.content);
}
}
function popExn(q) {
var x = q.first;
if (x !== undefined) {
var next = x.next;
if (next === undefined) {
clear(q);
return x.content;
} else {
q.length = q.length - 1 | 0;
q.first = next;
return x.content;
}
}
throw {
RE_EXN_ID: "Not_found",
Error: new Error()
};
}
function popUndefined(q) {
var x = q.first;
if (x === undefined) {
return ;
}
var next = x.next;
if (next === undefined) {
clear(q);
return x.content;
} else {
q.length = q.length - 1 | 0;
q.first = next;
return x.content;
}
}
function copy(q) {
var qRes = {
length: q.length,
first: undefined,
last: undefined
};
var _prev;
var _cell = q.first;
while(true) {
var cell = _cell;
var prev = _prev;
if (cell !== undefined) {
var content = cell.content;
var res = {
content: content,
next: undefined
};
if (prev !== undefined) {
prev.next = res;
} else {
qRes.first = res;
}
_cell = cell.next;
_prev = res;
continue ;
}
qRes.last = prev;
return qRes;
};
}
function mapU(q, f) {
var qRes = {
length: q.length,
first: undefined,
last: undefined
};
var _prev;
var _cell = q.first;
while(true) {
var cell = _cell;
var prev = _prev;
if (cell !== undefined) {
var content = f(cell.content);
var res = {
content: content,
next: undefined
};
if (prev !== undefined) {
prev.next = res;
} else {
qRes.first = res;
}
_cell = cell.next;
_prev = res;
continue ;
}
qRes.last = prev;
return qRes;
};
}
function map(q, f) {
return mapU(q, Curry.__1(f));
}
function isEmpty(q) {
return q.length === 0;
}
function size(q) {
return q.length;
}
function forEachU(q, f) {
var _cell = q.first;
while(true) {
var cell = _cell;
if (cell === undefined) {
return ;
}
f(cell.content);
_cell = cell.next;
continue ;
};
}
function forEach(q, f) {
forEachU(q, Curry.__1(f));
}
function reduceU(q, accu, f) {
var _accu = accu;
var _cell = q.first;
while(true) {
var cell = _cell;
var accu$1 = _accu;
if (cell === undefined) {
return accu$1;
}
var accu$2 = f(accu$1, cell.content);
_cell = cell.next;
_accu = accu$2;
continue ;
};
}
function reduce(q, accu, f) {
return reduceU(q, accu, Curry.__2(f));
}
function transfer(q1, q2) {
if (q1.length <= 0) {
return ;
}
var l = q2.last;
if (l !== undefined) {
q2.length = q2.length + q1.length | 0;
l.next = q1.first;
q2.last = q1.last;
return clear(q1);
} else {
q2.length = q1.length;
q2.first = q1.first;
q2.last = q1.last;
return clear(q1);
}
}
function fillAux(_i, arr, _cell) {
while(true) {
var cell = _cell;
var i = _i;
if (cell === undefined) {
return ;
}
arr[i] = cell.content;
_cell = cell.next;
_i = i + 1 | 0;
continue ;
};
}
function toArray(x) {
var v = new Array(x.length);
fillAux(0, v, x.first);
return v;
}
function fromArray(arr) {
var q = {
length: 0,
first: undefined,
last: undefined
};
for(var i = 0 ,i_finish = arr.length; i < i_finish; ++i){
add(q, arr[i]);
}
return q;
}
exports.make = make;
exports.clear = clear;
exports.isEmpty = isEmpty;
exports.fromArray = fromArray;
exports.add = add;
exports.peek = peek;
exports.peekUndefined = peekUndefined;
exports.peekExn = peekExn;
exports.pop = pop;
exports.popUndefined = popUndefined;
exports.popExn = popExn;
exports.copy = copy;
exports.size = size;
exports.mapU = mapU;
exports.map = map;
exports.forEachU = forEachU;
exports.forEach = forEach;
exports.reduceU = reduceU;
exports.reduce = reduce;
exports.transfer = transfer;
exports.toArray = toArray;
/* No side effect */