scratch0-5 / plugins /KedamaPlugin2.js
soiz1's picture
Upload folder using huggingface_hub
8f3f8db verified
/* Smalltalk from Squeak4.5 with VMMaker 4.13.6 translated as JS source on 13 November 2014 7:11:01 pm */
/* Automatically generated by
JSPluginCodeGenerator VMMakerJS-bf.16 uuid: aa9fd3da-7901-4c62-ae34-c166f1492d3b
from
KedamaPlugin2 Kedama-Plugins-yo.1 uuid: 3fc7d691-0149-ba4d-a339-5d27cd44a2f8
*/
(function KedamaPlugin2() {
"use strict";
var VM_PROXY_MAJOR = 1;
var VM_PROXY_MINOR = 11;
/*** Functions ***/
function CLASSOF(obj) { return typeof obj === "number" ? interpreterProxy.classSmallInteger() : obj.sqClass }
function SIZEOF(obj) { return obj.pointers ? obj.pointers.length : obj.words ? obj.words.length : obj.bytes ? obj.bytes.length : 0 }
function BYTESIZEOF(obj) { return obj.bytes ? obj.bytes.length : obj.words ? obj.words.length * 4 : 0 }
function DIV(a, b) { return Math.floor(a / b) | 0; } // integer division
function MOD(a, b) { return a - DIV(a, b) * b | 0; } // signed modulus
function SHL(a, b) { return b > 31 ? 0 : a << b; } // fix JS shift
function SHR(a, b) { return b > 31 ? 0 : a >>> b; } // fix JS shift
function SHIFT(a, b) { return b < 0 ? (b < -31 ? 0 : a >>> (0-b) ) : (b > 31 ? 0 : a << b); }
/*** Variables ***/
var interpreterProxy = null;
var kedamaRandomSeed = 0;
var moduleName = "KedamaPlugin2 13 November 2014 (e)";
var randA = 0;
var randM = 0;
var randQ = 0;
var randR = 0;
function degreesFromXy(x, y) {
var tanVal;
var theta;
/* inline: true */;
if (x === 0.0) {
if (y >= 0.0) {
return 90.0;
} else {
return 270.0;
}
} else {
tanVal = y / x;
theta = Math.atan(tanVal);
if (x >= 0.0) {
if (y >= 0.0) {
return theta / 0.0174532925199433;
} else {
return 360.0 + (theta / 0.0174532925199433);
}
} else {
return 180.0 + (theta / 0.0174532925199433);
}
}
return 0.0;
}
function degreesToRadians(degrees) {
var deg;
var headingRadians;
var q;
/* inline: true */;
deg = 90.0 - degrees;
q = deg / 360.0|0;
if (deg < 0.0) {
--q;
}
headingRadians = (deg - (q * 360.0)) * 0.0174532925199433;
return headingRadians;
}
function drawTurtlesInArray() {
var bitsIndex;
var colorArray;
var colorOop;
var destBits;
var destHeight;
var destOop;
var destWidth;
var i;
var size;
var visible;
var visibleArray;
var visibleOop;
var x;
var xArray;
var xOop;
var y;
var yArray;
var yOop;
/* inline: true */;
visibleOop = interpreterProxy.stackValue(0);
colorOop = interpreterProxy.stackValue(1);
yOop = interpreterProxy.stackValue(2);
xOop = interpreterProxy.stackValue(3);
destHeight = interpreterProxy.stackIntegerValue(4);
destWidth = interpreterProxy.stackIntegerValue(5);
destOop = interpreterProxy.stackValue(6);
if (interpreterProxy.failed()) {
return null;
}
if (!interpreterProxy.isWords(destOop)) {
interpreterProxy.primitiveFail();
return null;
}
if (!interpreterProxy.isWords(xOop)) {
interpreterProxy.primitiveFail();
return null;
}
if (!interpreterProxy.isWords(yOop)) {
interpreterProxy.primitiveFail();
return null;
}
if (!interpreterProxy.isWords(colorOop)) {
interpreterProxy.primitiveFail();
return null;
}
if (!interpreterProxy.isBytes(visibleOop)) {
interpreterProxy.primitiveFail();
return null;
}
if ((destHeight * destWidth) !== SIZEOF(destOop)) {
interpreterProxy.primitiveFail();
return null;
}
size = SIZEOF(xOop);
if (SIZEOF(yOop) !== size) {
interpreterProxy.primitiveFail();
return null;
}
if (SIZEOF(colorOop) !== size) {
interpreterProxy.primitiveFail();
return null;
}
if (SIZEOF(visibleOop) !== size) {
interpreterProxy.primitiveFail();
return null;
}
xArray = xOop.wordsAsFloat32Array();
yArray = yOop.wordsAsFloat32Array();
colorArray = colorOop.words;
visibleArray = visibleOop.bytes;
destBits = destOop.words;
for (i = 0; i <= (size - 1); i++) {
x = (xArray[i]|0);
;
y = (yArray[i]|0);
;
visible = visibleArray[i];
if ((visible !== 0) && (((x >= 0) && (y >= 0)) && ((x < destWidth) && (y < destHeight)))) {
bitsIndex = (y * destWidth) + x;
destBits[bitsIndex] = colorArray[i];
}
}
if (interpreterProxy.failed()) {
return null;
}
interpreterProxy.pop(7);
}
function getHeadingArrayInto() {
var heading;
var headingArray;
var headingOop;
var i;
var resultArray;
var resultOop;
var size;
/* inline: true */;
resultOop = interpreterProxy.stackValue(0);
headingOop = interpreterProxy.stackValue(1);
if (interpreterProxy.failed()) {
return null;
}
if (!interpreterProxy.isWords(headingOop)) {
interpreterProxy.primitiveFail();
return null;
}
if (!interpreterProxy.isWords(resultOop)) {
interpreterProxy.primitiveFail();
return null;
}
size = SIZEOF(headingOop);
if (SIZEOF(resultOop) !== size) {
interpreterProxy.primitiveFail();
return null;
}
headingArray = headingOop.wordsAsFloat32Array();
resultArray = resultOop.wordsAsFloat32Array();
for (i = 0; i <= (size - 1); i++) {
heading = headingArray[i];
heading = heading / 0.0174532925199433;
heading = 90.0 - heading;
if (!(heading > 0.0)) {
heading += 360.0;
}
resultArray[i] = heading;
}
if (interpreterProxy.failed()) {
return null;
}
interpreterProxy.pop(2);
}
/* Note: This is hardcoded so it can be run from Squeak.
The module name is used for validating a module *after*
it is loaded to check if it does really contain the module
we're thinking it contains. This is important! */
function getModuleName() {
return moduleName;
}
function getScalarHeading() {
var heading;
var headingArray;
var headingOop;
var index;
/* inline: true */;
headingOop = interpreterProxy.stackValue(0);
index = interpreterProxy.stackIntegerValue(1);
if (interpreterProxy.failed()) {
return null;
}
if (!interpreterProxy.isWords(headingOop)) {
interpreterProxy.primitiveFail();
return null;
}
if (SIZEOF(headingOop) < index) {
interpreterProxy.primitiveFail();
return null;
}
headingArray = headingOop.wordsAsFloat32Array();
heading = headingArray[index - 1];
heading = radiansToDegrees(heading);
if (interpreterProxy.failed()) {
return null;
}
interpreterProxy.pop(3);
interpreterProxy.pushFloat(heading);
}
function halt() {
;
}
function initialiseModule() {
kedamaRandomSeed = 17;
/* magic constant = 16807 */
randA = 16807;
/* magic constant = 2147483647 */
randM = 2147483647;
randQ = DIV(randM, randA);
randR = MOD(randM, randA);
}
function kedamaRandom2(range) {
var hi;
var lo;
var r;
var v;
var val;
/* inline: true */;
if (range < 0) {
r = 0 - range;
} else {
r = range;
}
hi = DIV(kedamaRandomSeed, randQ);
lo = MOD(kedamaRandomSeed, randQ);
kedamaRandomSeed = (randA * lo) - (randR * hi);
v = kedamaRandomSeed & 65535;
val = (v * (r + 1)) >>> 16;
if (range < 0) {
return 0 - val;
} else {
return val;
}
}
function kedamaSetRandomSeed() {
var seed;
/* inline: true */;
seed = interpreterProxy.stackIntegerValue(0);
if (interpreterProxy.failed()) {
return null;
}
kedamaRandomSeed = seed & 65536;
interpreterProxy.pop(1);
}
function makeMask() {
var alpha;
var dOrigin;
var data;
var dataBits;
var dataSize;
var highMask;
var i;
var mOrigin;
var maskBits;
var maskSize;
var pixel;
var shiftAmount;
/* inline: true */;
shiftAmount = interpreterProxy.stackIntegerValue(0);
pixel = interpreterProxy.stackIntegerValue(1);
maskBits = interpreterProxy.stackValue(2);
dataBits = interpreterProxy.stackValue(3);
if (interpreterProxy.failed()) {
return null;
}
dataSize = SIZEOF(dataBits);
maskSize = SIZEOF(maskBits);
if (dataSize !== maskSize) {
interpreterProxy.primitiveFail();
return null;
}
if (shiftAmount < -32) {
interpreterProxy.primitiveFail();
return null;
}
if (shiftAmount > 8) {
interpreterProxy.primitiveFail();
return null;
}
dOrigin = dataBits.words;
mOrigin = maskBits.words;
highMask = 4278190080;
for (i = 0; i <= (dataSize - 1); i++) {
data = dOrigin[i];
alpha = SHIFT(data, shiftAmount);
if (alpha > 255) {
alpha = 255;
}
if (alpha < 0) {
alpha = 0;
}
mOrigin[i] = (((alpha << 24) & highMask) | pixel);
}
interpreterProxy.pop(4);
}
function makeMaskLog() {
var alpha;
var dOrigin;
var data;
var dataBits;
var dataSize;
var highMask;
var i;
var mOrigin;
var maskBits;
var maskSize;
var max;
var maxFirst;
var maxLog;
var maxOop;
var pixel;
/* inline: true */;
maxOop = interpreterProxy.stackValue(0);
pixel = interpreterProxy.stackIntegerValue(1);
maskBits = interpreterProxy.stackValue(2);
dataBits = interpreterProxy.stackValue(3);
if (interpreterProxy.failed()) {
return null;
}
maxFirst = maxOop.words;
max = maxFirst[0];
if (interpreterProxy.failed()) {
return null;
}
maxLog = Math.log(max);
dataSize = SIZEOF(dataBits);
maskSize = SIZEOF(maskBits);
if (dataSize !== maskSize) {
interpreterProxy.primitiveFail();
return null;
}
dOrigin = dataBits.words;
mOrigin = maskBits.words;
highMask = 4278190080;
for (i = 0; i <= (dataSize - 1); i++) {
data = dOrigin[i];
if (data === 0) {
alpha = 0;
} else {
alpha = (((255.0 / maxLog) * Math.log(data))|0);
}
if (alpha > 255) {
alpha = 255;
}
mOrigin[i] = (((alpha << 24) & highMask) | pixel);
}
interpreterProxy.pop(4);
}
function makeTurtlesMap() {
var height;
var index;
var map;
var mapIndex;
var mapOop;
var size;
var whoArray;
var whoOop;
var width;
var x;
var xArray;
var xOop;
var y;
var yArray;
var yOop;
/* inline: true */;
height = interpreterProxy.stackIntegerValue(0);
width = interpreterProxy.stackIntegerValue(1);
yOop = interpreterProxy.stackValue(2);
xOop = interpreterProxy.stackValue(3);
whoOop = interpreterProxy.stackValue(4);
mapOop = interpreterProxy.stackValue(5);
if (!interpreterProxy.isWords(yOop)) {
interpreterProxy.primitiveFail();
return null;
}
if (!interpreterProxy.isWords(xOop)) {
interpreterProxy.primitiveFail();
return null;
}
if (!interpreterProxy.isWords(whoOop)) {
interpreterProxy.primitiveFail();
return null;
}
if (!interpreterProxy.isWords(mapOop)) {
interpreterProxy.primitiveFail();
return null;
}
size = SIZEOF(whoOop);
if (SIZEOF(xOop) !== size) {
interpreterProxy.primitiveFail();
return null;
}
if (SIZEOF(yOop) !== size) {
interpreterProxy.primitiveFail();
return null;
}
if (SIZEOF(mapOop) !== (height * width)) {
interpreterProxy.primitiveFail();
return null;
}
xArray = xOop.wordsAsFloat32Array();
yArray = yOop.wordsAsFloat32Array();
whoArray = whoOop.words;
map = mapOop.words;
for (index = 0; index <= ((height * width) - 1); index++) {
map[index] = 0;
}
for (index = 0; index <= (size - 1); index++) {
x = xArray[index];
y = yArray[index];
mapIndex = (width * y) + x;
if ((mapIndex >= 0) && (mapIndex < (height * width))) {
map[mapIndex] = whoArray[index];
}
}
if (interpreterProxy.failed()) {
return null;
}
interpreterProxy.pop(6);
}
function primPixelAtXY() {
var bits;
var bitsOop;
var height;
var index;
var ret;
var width;
var x;
var xPos;
var y;
var yPos;
/* inline: true */;
height = interpreterProxy.stackIntegerValue(0);
width = interpreterProxy.stackIntegerValue(1);
yPos = interpreterProxy.stackFloatValue(2);
xPos = interpreterProxy.stackFloatValue(3);
bitsOop = interpreterProxy.stackValue(4);
if (interpreterProxy.failed()) {
return null;
}
if (!interpreterProxy.isWords(bitsOop)) {
interpreterProxy.primitiveFail();
return null;
}
if (SIZEOF(bitsOop) !== (height * width)) {
interpreterProxy.primitiveFail();
return null;
}
x = xPos|0;
y = yPos|0;
bits = bitsOop.words;
if ((((x >= 0) && (x < width)) && (y >= 0)) && (y < height)) {
index = (y * width) + x;
ret = bits[index];
} else {
ret = 0;
}
if (interpreterProxy.failed()) {
return null;
}
interpreterProxy.pop(6);
interpreterProxy.pushInteger(ret);
}
function primPixelAtXYPut() {
var bits;
var bitsOop;
var height;
var index;
var v;
var value;
var width;
var x;
var xPos;
var y;
var yPos;
/* inline: true */;
height = interpreterProxy.stackIntegerValue(0);
width = interpreterProxy.stackIntegerValue(1);
value = interpreterProxy.stackIntegerValue(2);
yPos = interpreterProxy.stackFloatValue(3);
xPos = interpreterProxy.stackFloatValue(4);
bitsOop = interpreterProxy.stackValue(5);
if (interpreterProxy.failed()) {
return null;
}
if (!interpreterProxy.isWords(bitsOop)) {
interpreterProxy.primitiveFail();
return null;
}
if (SIZEOF(bitsOop) !== (height * width)) {
interpreterProxy.primitiveFail();
return null;
}
x = xPos|0;
y = yPos|0;
v = value;
if (v > 1073741823) {
v = 1073741823;
}
if (v < 0) {
v = 0;
}
bits = bitsOop.words;
if ((((x >= 0) && (x < width)) && (y >= 0)) && (y < height)) {
index = (y * width) + x;
bits[index] = v;
}
if (interpreterProxy.failed()) {
return null;
}
interpreterProxy.pop(6);
}
function primPixelsAtXY() {
var bits;
var bitsHeight;
var bitsIndex;
var bitsOop;
var bitsWidth;
var destWords;
var destWordsOop;
var i;
var size;
var x;
var xArray;
var xArrayOop;
var y;
var yArray;
var yArrayOop;
/* inline: true */;
destWordsOop = interpreterProxy.stackValue(0);
bitsHeight = interpreterProxy.stackIntegerValue(1);
bitsWidth = interpreterProxy.stackIntegerValue(2);
bitsOop = interpreterProxy.stackValue(3);
yArrayOop = interpreterProxy.stackValue(4);
xArrayOop = interpreterProxy.stackValue(5);
if (interpreterProxy.failed()) {
return null;
}
if (!interpreterProxy.isWords(destWordsOop)) {
interpreterProxy.primitiveFail();
return null;
}
if (!interpreterProxy.isWords(xArrayOop)) {
interpreterProxy.primitiveFail();
return null;
}
if (!interpreterProxy.isWords(yArrayOop)) {
interpreterProxy.primitiveFail();
return null;
}
if (!interpreterProxy.isWords(bitsOop)) {
interpreterProxy.primitiveFail();
return null;
}
if ((bitsHeight * bitsWidth) !== SIZEOF(bitsOop)) {
interpreterProxy.primitiveFail();
return null;
}
size = SIZEOF(xArrayOop);
if (SIZEOF(yArrayOop) !== size) {
interpreterProxy.primitiveFail();
return null;
}
if (SIZEOF(destWordsOop) !== size) {
interpreterProxy.primitiveFail();
return null;
}
xArray = xArrayOop.wordsAsFloat32Array();
yArray = yArrayOop.wordsAsFloat32Array();
destWords = destWordsOop.words;
bits = bitsOop.words;
for (i = 0; i <= (size - 1); i++) {
x = (xArray[i]|0);
;
y = (yArray[i]|0);
;
if (((x >= 0) && (y >= 0)) && ((x < bitsWidth) && (y < bitsHeight))) {
bitsIndex = (y * bitsWidth) + x;
destWords[i] = bits[bitsIndex];
}
}
if (interpreterProxy.failed()) {
return null;
}
interpreterProxy.pop(6);
}
function primScalarForward() {
var bottomEdgeMode;
var destHeight;
var destWidth;
var dist;
var headingArray;
var headingOop;
var i;
var index;
var leftEdgeMode;
var newX;
var newY;
var rightEdgeMode;
var size;
var topEdgeMode;
var val;
var xArray;
var xOop;
var yArray;
var yOop;
/* inline: true */;
bottomEdgeMode = interpreterProxy.stackIntegerValue(0);
topEdgeMode = interpreterProxy.stackIntegerValue(1);
rightEdgeMode = interpreterProxy.stackIntegerValue(2);
leftEdgeMode = interpreterProxy.stackIntegerValue(3);
destHeight = interpreterProxy.stackFloatValue(4);
destWidth = interpreterProxy.stackFloatValue(5);
val = interpreterProxy.stackFloatValue(6);
headingOop = interpreterProxy.stackValue(7);
yOop = interpreterProxy.stackValue(8);
xOop = interpreterProxy.stackValue(9);
index = interpreterProxy.stackIntegerValue(10);
if (interpreterProxy.failed()) {
return null;
}
if (!interpreterProxy.isWords(xOop)) {
interpreterProxy.primitiveFail();
return null;
}
if (!interpreterProxy.isWords(yOop)) {
interpreterProxy.primitiveFail();
return null;
}
if (!interpreterProxy.isWords(headingOop)) {
interpreterProxy.primitiveFail();
return null;
}
size = SIZEOF(xOop);
if (SIZEOF(yOop) !== size) {
interpreterProxy.primitiveFail();
return null;
}
if (SIZEOF(headingOop) !== size) {
interpreterProxy.primitiveFail();
return null;
}
xArray = xOop.wordsAsFloat32Array();
yArray = yOop.wordsAsFloat32Array();
headingArray = headingOop.wordsAsFloat32Array();
dist = val;
i = index - 1;
newX = xArray[i] + (dist * Math.cos(headingArray[i]));
newY = yArray[i] - (dist * Math.sin(headingArray[i]));
scalarXAtxArrayheadingArrayvaluedestWidthleftEdgeModerightEdgeMode(i, xArray, headingArray, newX, destWidth, leftEdgeMode, rightEdgeMode);
scalarYAtyArrayheadingArrayvaluedestHeighttopEdgeModebottomEdgeMode(i, yArray, headingArray, newY, destHeight, topEdgeMode, bottomEdgeMode);
if (interpreterProxy.failed()) {
return null;
}
interpreterProxy.pop(11);
}
function primSetPixelsAtXY() {
var bits;
var bitsHeight;
var bitsIndex;
var bitsOop;
var bitsWidth;
var floatsValue;
var fv;
var i;
var intValue;
var isValueInt;
var isValueWordArray;
var pArray;
var pArrayOop;
var size;
var value;
var valueOop;
var wordsValue;
var x;
var xArray;
var xArrayOop;
var y;
var yArray;
var yArrayOop;
/* inline: true */;
valueOop = interpreterProxy.stackValue(0);
bitsHeight = interpreterProxy.stackIntegerValue(1);
bitsWidth = interpreterProxy.stackIntegerValue(2);
bitsOop = interpreterProxy.stackValue(3);
yArrayOop = interpreterProxy.stackValue(4);
xArrayOop = interpreterProxy.stackValue(5);
pArrayOop = interpreterProxy.stackValue(6);
if (interpreterProxy.failed()) {
return null;
}
if (!interpreterProxy.isBytes(pArrayOop)) {
interpreterProxy.primitiveFail();
return null;
}
if (!interpreterProxy.isWords(xArrayOop)) {
interpreterProxy.primitiveFail();
return null;
}
if (!interpreterProxy.isWords(yArrayOop)) {
interpreterProxy.primitiveFail();
return null;
}
if (!interpreterProxy.isWords(bitsOop)) {
interpreterProxy.primitiveFail();
return null;
}
if ((bitsHeight * bitsWidth) !== SIZEOF(bitsOop)) {
interpreterProxy.primitiveFail();
return null;
}
size = SIZEOF(xArrayOop);
if (SIZEOF(pArrayOop) !== size) {
interpreterProxy.primitiveFail();
return null;
}
if (SIZEOF(yArrayOop) !== size) {
interpreterProxy.primitiveFail();
return null;
}
pArray = pArrayOop.bytes;
xArray = xArrayOop.wordsAsFloat32Array();
yArray = yArrayOop.wordsAsFloat32Array();
isValueInt = typeof valueOop === "number";
if (isValueInt) {
intValue = valueOop;
value = intValue;
} else {
if (SIZEOF(valueOop) !== size) {
interpreterProxy.primitiveFail();
return null;
}
isValueWordArray = interpreterProxy.isMemberOf(valueOop, "WordArray");
if (isValueWordArray) {
wordsValue = valueOop.words;
} else {
floatsValue = valueOop.wordsAsFloat32Array();
}
}
bits = bitsOop.words;
for (i = 0; i <= (size - 1); i++) {
if (pArray[i] === 1) {
x = (xArray[i]|0);
;
y = (yArray[i]|0);
;
if (((x >= 0) && (y >= 0)) && ((x < bitsWidth) && (y < bitsHeight))) {
bitsIndex = (y * bitsWidth) + x;
if (isValueInt) {
bits[bitsIndex] = value;
} else {
if (isValueWordArray) {
bits[bitsIndex] = wordsValue[i];
} else {
fv = floatsValue[i];
;
bits[bitsIndex] = fv;
}
}
}
}
}
if (interpreterProxy.failed()) {
return null;
}
interpreterProxy.pop(7);
}
function primTurtlesForward() {
var bottomEdgeMode;
var destHeight;
var destWidth;
var dist;
var headingArray;
var headingOop;
var i;
var isValVector;
var leftEdgeMode;
var newX;
var newY;
var pArray;
var pOop;
var rightEdgeMode;
var size;
var topEdgeMode;
var val;
var valArray;
var valOop;
var xArray;
var xOop;
var yArray;
var yOop;
/* inline: true */;
bottomEdgeMode = interpreterProxy.stackIntegerValue(0);
topEdgeMode = interpreterProxy.stackIntegerValue(1);
rightEdgeMode = interpreterProxy.stackIntegerValue(2);
leftEdgeMode = interpreterProxy.stackIntegerValue(3);
destHeight = interpreterProxy.stackFloatValue(4);
destWidth = interpreterProxy.stackFloatValue(5);
valOop = interpreterProxy.stackValue(6);
headingOop = interpreterProxy.stackValue(7);
yOop = interpreterProxy.stackValue(8);
xOop = interpreterProxy.stackValue(9);
pOop = interpreterProxy.stackValue(10);
if (interpreterProxy.failed()) {
return null;
}
if (!interpreterProxy.isBytes(pOop)) {
interpreterProxy.primitiveFail();
return null;
}
if (!interpreterProxy.isWords(xOop)) {
interpreterProxy.primitiveFail();
return null;
}
if (!interpreterProxy.isWords(yOop)) {
interpreterProxy.primitiveFail();
return null;
}
if (!interpreterProxy.isWords(headingOop)) {
interpreterProxy.primitiveFail();
return null;
}
if (valOop.isFloat) {
isValVector = false;
} else {
if (interpreterProxy.isWords(valOop)) {
isValVector = true;
} else {
interpreterProxy.primitiveFail();
return null;
}
}
size = SIZEOF(xOop);
if (SIZEOF(yOop) !== size) {
interpreterProxy.primitiveFail();
return null;
}
if (SIZEOF(headingOop) !== size) {
interpreterProxy.primitiveFail();
return null;
}
if (SIZEOF(pOop) !== size) {
interpreterProxy.primitiveFail();
return null;
}
if (isValVector) {
if (SIZEOF(valOop) !== size) {
interpreterProxy.primitiveFail();
return null;
}
}
pArray = pOop.bytes;
xArray = xOop.wordsAsFloat32Array();
yArray = yOop.wordsAsFloat32Array();
headingArray = headingOop.wordsAsFloat32Array();
if (isValVector) {
valArray = valOop.wordsAsFloat32Array();
} else {
val = interpreterProxy.floatValueOf(valOop);
}
for (i = 0; i <= (size - 1); i++) {
if (pArray[i] === 1) {
if (isValVector) {
dist = valArray[i];
} else {
dist = val;
}
newX = xArray[i] + (dist * Math.cos(headingArray[i]));
newY = yArray[i] - (dist * Math.sin(headingArray[i]));
scalarXAtxArrayheadingArrayvaluedestWidthleftEdgeModerightEdgeMode(i, xArray, headingArray, newX, destWidth, leftEdgeMode, rightEdgeMode);
scalarYAtyArrayheadingArrayvaluedestHeighttopEdgeModebottomEdgeMode(i, yArray, headingArray, newY, destHeight, topEdgeMode, bottomEdgeMode);
}
}
if (interpreterProxy.failed()) {
return null;
}
interpreterProxy.pop(11);
}
function primUpHill() {
var bits;
var bitsOop;
var endX;
var endY;
var height;
var maxVal;
var maxValX;
var maxValY;
var ret;
var rowOffset;
var sniffRange;
var startX;
var startY;
var tH;
var tX;
var tY;
var thisVal;
var turtleX;
var turtleY;
var width;
var x;
var y;
/* inline: true */;
sniffRange = interpreterProxy.stackIntegerValue(0);
height = interpreterProxy.stackIntegerValue(1);
width = interpreterProxy.stackIntegerValue(2);
bitsOop = interpreterProxy.stackValue(3);
tH = interpreterProxy.stackFloatValue(4);
tY = interpreterProxy.stackFloatValue(5);
tX = interpreterProxy.stackFloatValue(6);
if (interpreterProxy.failed()) {
return null;
}
if (!interpreterProxy.isWords(bitsOop)) {
interpreterProxy.primitiveFail();
return null;
}
if (SIZEOF(bitsOop) !== (height * width)) {
interpreterProxy.primitiveFail();
return null;
}
bits = bitsOop.words;
turtleX = tX;
turtleY = tY;
turtleX = Math.max(turtleX, 0);
turtleY = Math.max(turtleY, 0);
turtleX = Math.min(turtleX, (width - 1));
turtleY = Math.min(turtleY, (height - 1));
startX = Math.max((turtleX - sniffRange), 0);
endX = Math.min((turtleX + sniffRange), (width - 1));
startY = Math.max((turtleY - sniffRange), 0);
endY = Math.min((turtleY + sniffRange), (height - 1));
maxVal = bits[(turtleY * width) + turtleX];
maxValX = -1;
for (y = startY; y <= endY; y++) {
rowOffset = y * width;
for (x = startX; x <= endX; x++) {
thisVal = bits[rowOffset + x];
if (thisVal > maxVal) {
maxValX = x;
maxValY = y;
maxVal = thisVal;
}
}
}
if (-1 === maxValX) {
ret = radiansToDegrees(tH);
} else {
ret = degreesFromXy((maxValX - turtleX), (maxValY - turtleY)) + 90.0|0;
}
if (interpreterProxy.failed()) {
return null;
}
interpreterProxy.pop(8);
interpreterProxy.pushFloat(ret);
}
function primitiveAddArrays() {
var argOop;
var floatsArg;
var floatsRcvr;
var floatsResult;
var i;
var isArgWords;
var isRcvrWords;
var length;
var rcvrOop;
var resultOop;
var wordsArg;
var wordsRcvr;
var wordsResult;
/* inline: true */;
resultOop = interpreterProxy.stackObjectValue(0);
argOop = interpreterProxy.stackObjectValue(1);
rcvrOop = interpreterProxy.stackObjectValue(2);
if (interpreterProxy.failed()) {
return null;
}
interpreterProxy.success(interpreterProxy.isWords(argOop));
interpreterProxy.success(interpreterProxy.isWords(rcvrOop));
interpreterProxy.success(interpreterProxy.isWords(resultOop));
if (interpreterProxy.failed()) {
return null;
}
length = SIZEOF(argOop);
interpreterProxy.success(length === SIZEOF(rcvrOop));
interpreterProxy.success(length === SIZEOF(resultOop));
if (interpreterProxy.failed()) {
return null;
}
isArgWords = interpreterProxy.isMemberOf(argOop, "WordArray");
isRcvrWords = interpreterProxy.isMemberOf(rcvrOop, "WordArray");
if (isArgWords && isRcvrWords) {
if (!interpreterProxy.isMemberOf(resultOop, "WordArray")) {
interpreterProxy.primitiveFail();
return null;
}
} else {
if (!interpreterProxy.isMemberOf(resultOop, "KedamaFloatArray")) {
interpreterProxy.primitiveFail();
return null;
}
}
if (isRcvrWords) {
if (isArgWords) {
wordsRcvr = rcvrOop.words;
wordsArg = argOop.words;
wordsResult = resultOop.words;
for (i = 0; i <= (length - 1); i++) {
wordsResult[i] = (wordsRcvr[i] + wordsArg[i]);
}
} else {
wordsRcvr = rcvrOop.words;
floatsArg = argOop.wordsAsFloat32Array();
floatsResult = resultOop.wordsAsFloat32Array();
for (i = 0; i <= (length - 1); i++) {
floatsResult[i] = (wordsRcvr[i] + floatsArg[i]);
}
}
} else {
if (isArgWords) {
floatsRcvr = rcvrOop.wordsAsFloat32Array();
wordsArg = argOop.words;
floatsResult = resultOop.wordsAsFloat32Array();
for (i = 0; i <= (length - 1); i++) {
floatsResult[i] = (floatsRcvr[i] + wordsArg[i]);
}
} else {
floatsRcvr = rcvrOop.wordsAsFloat32Array();
floatsArg = argOop.wordsAsFloat32Array();
floatsResult = resultOop.wordsAsFloat32Array();
for (i = 0; i <= (length - 1); i++) {
floatsResult[i] = (floatsRcvr[i] + floatsArg[i]);
}
}
}
interpreterProxy.pop(4);
interpreterProxy.push(resultOop);
}
function primitiveAddScalar() {
var argOop;
var floatArg;
var floatsRcvr;
var floatsResult;
var i;
var intArg;
var isArgInt;
var isRcvrWords;
var length;
var rcvrOop;
var resultOop;
var wordsRcvr;
var wordsResult;
/* inline: true */;
resultOop = interpreterProxy.stackObjectValue(0);
argOop = interpreterProxy.stackValue(1);
rcvrOop = interpreterProxy.stackObjectValue(2);
if (interpreterProxy.failed()) {
return null;
}
interpreterProxy.success(interpreterProxy.isWords(rcvrOop));
interpreterProxy.success(interpreterProxy.isWords(resultOop));
if (interpreterProxy.failed()) {
return null;
}
length = SIZEOF(rcvrOop);
interpreterProxy.success(length === SIZEOF(resultOop));
if (interpreterProxy.failed()) {
return null;
}
isArgInt = typeof argOop === "number";
isRcvrWords = interpreterProxy.isMemberOf(rcvrOop, "WordArray");
if (isArgInt && isRcvrWords) {
if (!interpreterProxy.isMemberOf(resultOop, "WordArray")) {
interpreterProxy.primitiveFail();
return null;
}
} else {
if (!interpreterProxy.isMemberOf(resultOop, "KedamaFloatArray")) {
interpreterProxy.primitiveFail();
return null;
}
}
if (isRcvrWords) {
if (isArgInt) {
wordsRcvr = rcvrOop.words;
intArg = argOop;
wordsResult = resultOop.words;
for (i = 0; i <= (length - 1); i++) {
wordsResult[i] = (wordsRcvr[i] + intArg);
}
} else {
wordsRcvr = rcvrOop.words;
floatArg = interpreterProxy.floatValueOf(argOop);
floatsResult = resultOop.wordsAsFloat32Array();
for (i = 0; i <= (length - 1); i++) {
floatsResult[i] = (wordsRcvr[i] + floatArg);
}
}
} else {
if (isArgInt) {
floatsRcvr = rcvrOop.wordsAsFloat32Array();
intArg = argOop;
floatsResult = resultOop.wordsAsFloat32Array();
for (i = 0; i <= (length - 1); i++) {
floatsResult[i] = (floatsRcvr[i] + intArg);
}
} else {
floatsRcvr = rcvrOop.wordsAsFloat32Array();
floatArg = interpreterProxy.floatValueOf(argOop);
floatsResult = resultOop.wordsAsFloat32Array();
for (i = 0; i <= (length - 1); i++) {
floatsResult[i] = (floatsRcvr[i] + floatArg);
}
}
}
interpreterProxy.pop(4);
interpreterProxy.push(resultOop);
}
function primitiveAndByteArray() {
var i;
var length;
var length1;
var length2;
var otherArray;
var otherOop;
var rcvrArray;
var rcvrOop;
/* inline: true */;
otherOop = interpreterProxy.stackObjectValue(0);
rcvrOop = interpreterProxy.stackValue(1);
if (interpreterProxy.failed()) {
return null;
}
interpreterProxy.success(interpreterProxy.isBytes(rcvrOop));
interpreterProxy.success(interpreterProxy.isBytes(otherOop));
if (interpreterProxy.failed()) {
return null;
}
length1 = SIZEOF(rcvrOop);
length2 = SIZEOF(otherOop);
if (interpreterProxy.failed()) {
return null;
}
length = length1;
if (length1 > length2) {
length = length2;
}
otherArray = otherOop.bytes;
rcvrArray = rcvrOop.bytes;
for (i = 0; i <= (length - 1); i++) {
rcvrArray[i] = ((rcvrArray[i] + otherArray[i]) === 2);
}
interpreterProxy.pop(1);
}
function primitiveDivArrays() {
var argOop;
var floatsArg;
var floatsRcvr;
var floatsResult;
var i;
var isArgWords;
var isRcvrWords;
var length;
var rcvrOop;
var resultOop;
var wordsArg;
var wordsRcvr;
var wordsResult;
/* inline: true */;
resultOop = interpreterProxy.stackObjectValue(0);
argOop = interpreterProxy.stackObjectValue(1);
rcvrOop = interpreterProxy.stackObjectValue(2);
if (interpreterProxy.failed()) {
return null;
}
interpreterProxy.success(interpreterProxy.isWords(argOop));
interpreterProxy.success(interpreterProxy.isWords(rcvrOop));
interpreterProxy.success(interpreterProxy.isWords(resultOop));
if (interpreterProxy.failed()) {
return null;
}
length = SIZEOF(argOop);
interpreterProxy.success(length === SIZEOF(rcvrOop));
interpreterProxy.success(length === SIZEOF(resultOop));
if (interpreterProxy.failed()) {
return null;
}
isArgWords = interpreterProxy.isMemberOf(argOop, "WordArray");
isRcvrWords = interpreterProxy.isMemberOf(rcvrOop, "WordArray");
if (isArgWords && isRcvrWords) {
if (!interpreterProxy.isMemberOf(resultOop, "WordArray")) {
interpreterProxy.primitiveFail();
return null;
}
} else {
if (!interpreterProxy.isMemberOf(resultOop, "KedamaFloatArray")) {
interpreterProxy.primitiveFail();
return null;
}
}
if (isRcvrWords) {
if (isArgWords) {
wordsRcvr = rcvrOop.words;
wordsArg = argOop.words;
wordsResult = resultOop.words;
for (i = 0; i <= (length - 1); i++) {
wordsResult[i] = (wordsRcvr[i] / wordsArg[i]);
}
} else {
wordsRcvr = rcvrOop.words;
floatsArg = argOop.wordsAsFloat32Array();
floatsResult = resultOop.wordsAsFloat32Array();
for (i = 0; i <= (length - 1); i++) {
floatsResult[i] = (wordsRcvr[i] / floatsArg[i]);
}
}
} else {
if (isArgWords) {
floatsRcvr = rcvrOop.wordsAsFloat32Array();
wordsArg = argOop.words;
floatsResult = resultOop.wordsAsFloat32Array();
for (i = 0; i <= (length - 1); i++) {
floatsResult[i] = (floatsRcvr[i] / wordsArg[i]);
}
} else {
floatsRcvr = rcvrOop.wordsAsFloat32Array();
floatsArg = argOop.wordsAsFloat32Array();
floatsResult = resultOop.wordsAsFloat32Array();
for (i = 0; i <= (length - 1); i++) {
floatsResult[i] = (floatsRcvr[i] / floatsArg[i]);
}
}
}
interpreterProxy.pop(4);
interpreterProxy.push(resultOop);
}
function primitiveDivScalar() {
var argOop;
var floatArg;
var floatsRcvr;
var floatsResult;
var i;
var intArg;
var isArgInt;
var isRcvrWords;
var length;
var rcvrOop;
var resultOop;
var wordsRcvr;
var wordsResult;
/* inline: true */;
resultOop = interpreterProxy.stackObjectValue(0);
argOop = interpreterProxy.stackValue(1);
rcvrOop = interpreterProxy.stackObjectValue(2);
if (interpreterProxy.failed()) {
return null;
}
interpreterProxy.success(interpreterProxy.isWords(rcvrOop));
interpreterProxy.success(interpreterProxy.isWords(resultOop));
if (interpreterProxy.failed()) {
return null;
}
length = SIZEOF(rcvrOop);
interpreterProxy.success(length === SIZEOF(resultOop));
if (interpreterProxy.failed()) {
return null;
}
isArgInt = typeof argOop === "number";
isRcvrWords = interpreterProxy.isMemberOf(rcvrOop, "WordArray");
if (isArgInt && isRcvrWords) {
if (!interpreterProxy.isMemberOf(resultOop, "WordArray")) {
interpreterProxy.primitiveFail();
return null;
}
} else {
if (!interpreterProxy.isMemberOf(resultOop, "KedamaFloatArray")) {
interpreterProxy.primitiveFail();
return null;
}
}
if (isRcvrWords) {
if (isArgInt) {
wordsRcvr = rcvrOop.words;
intArg = argOop;
wordsResult = resultOop.words;
for (i = 0; i <= (length - 1); i++) {
wordsResult[i] = (DIV(wordsRcvr[i], intArg));
}
} else {
wordsRcvr = rcvrOop.words;
floatArg = interpreterProxy.floatValueOf(argOop);
floatsResult = resultOop.wordsAsFloat32Array();
for (i = 0; i <= (length - 1); i++) {
floatsResult[i] = (wordsRcvr[i] / floatArg);
}
}
} else {
if (isArgInt) {
floatsRcvr = rcvrOop.wordsAsFloat32Array();
intArg = argOop;
floatsResult = resultOop.wordsAsFloat32Array();
for (i = 0; i <= (length - 1); i++) {
floatsResult[i] = (floatsRcvr[i] / intArg);
}
} else {
floatsRcvr = rcvrOop.wordsAsFloat32Array();
floatArg = interpreterProxy.floatValueOf(argOop);
floatsResult = resultOop.wordsAsFloat32Array();
for (i = 0; i <= (length - 1); i++) {
floatsResult[i] = (floatsRcvr[i] / floatArg);
}
}
}
interpreterProxy.pop(4);
interpreterProxy.push(resultOop);
}
function primitiveEQArrays() {
var argOop;
var bytesResult;
var floatsArg;
var floatsRcvr;
var i;
var isArgWords;
var isRcvrWords;
var length;
var rcvrOop;
var resultOop;
var wordsArg;
var wordsRcvr;
/* inline: true */;
resultOop = interpreterProxy.stackObjectValue(0);
argOop = interpreterProxy.stackObjectValue(1);
rcvrOop = interpreterProxy.stackObjectValue(2);
if (interpreterProxy.failed()) {
return null;
}
interpreterProxy.success(interpreterProxy.isWords(argOop));
interpreterProxy.success(interpreterProxy.isWords(rcvrOop));
interpreterProxy.success(interpreterProxy.isBytes(resultOop));
if (interpreterProxy.failed()) {
return null;
}
length = SIZEOF(argOop);
interpreterProxy.success(length === SIZEOF(rcvrOop));
interpreterProxy.success(length === SIZEOF(resultOop));
if (interpreterProxy.failed()) {
return null;
}
isArgWords = interpreterProxy.isMemberOf(argOop, "WordArray");
isRcvrWords = interpreterProxy.isMemberOf(rcvrOop, "WordArray");
if (isRcvrWords) {
if (isArgWords) {
wordsRcvr = rcvrOop.words;
wordsArg = argOop.words;
bytesResult = resultOop.bytes;
for (i = 0; i <= (length - 1); i++) {
bytesResult[i] = (wordsRcvr[i] === wordsArg[i]);
}
} else {
wordsRcvr = rcvrOop.words;
floatsArg = argOop.wordsAsFloat32Array();
bytesResult = resultOop.bytes;
for (i = 0; i <= (length - 1); i++) {
bytesResult[i] = (wordsRcvr[i] === floatsArg[i]);
}
}
} else {
if (isArgWords) {
floatsRcvr = rcvrOop.wordsAsFloat32Array();
wordsArg = argOop.words;
bytesResult = resultOop.bytes;
for (i = 0; i <= (length - 1); i++) {
bytesResult[i] = (floatsRcvr[i] === wordsArg[i]);
}
} else {
floatsRcvr = rcvrOop.wordsAsFloat32Array();
floatsArg = argOop.wordsAsFloat32Array();
bytesResult = resultOop.bytes;
for (i = 0; i <= (length - 1); i++) {
bytesResult[i] = (floatsRcvr[i] === floatsArg[i]);
}
}
}
interpreterProxy.pop(4);
interpreterProxy.push(resultOop);
}
function primitiveEQScalar() {
var argOop;
var bytesResult;
var floatArg;
var floatsRcvr;
var i;
var intArg;
var isArgInt;
var isRcvrWords;
var length;
var rcvrOop;
var resultOop;
var wordsRcvr;
/* inline: true */;
resultOop = interpreterProxy.stackObjectValue(0);
argOop = interpreterProxy.stackValue(1);
rcvrOop = interpreterProxy.stackObjectValue(2);
if (interpreterProxy.failed()) {
return null;
}
interpreterProxy.success(interpreterProxy.isWords(rcvrOop));
interpreterProxy.success(interpreterProxy.isBytes(resultOop));
if (interpreterProxy.failed()) {
return null;
}
length = SIZEOF(rcvrOop);
interpreterProxy.success(length === SIZEOF(resultOop));
if (interpreterProxy.failed()) {
return null;
}
isArgInt = typeof argOop === "number";
isRcvrWords = interpreterProxy.isMemberOf(rcvrOop, "WordArray");
if (isRcvrWords) {
if (isArgInt) {
wordsRcvr = rcvrOop.words;
intArg = argOop;
bytesResult = resultOop.bytes;
for (i = 0; i <= (length - 1); i++) {
bytesResult[i] = (wordsRcvr[i] === intArg);
}
} else {
wordsRcvr = rcvrOop.words;
floatArg = interpreterProxy.floatValueOf(argOop);
bytesResult = resultOop.bytes;
for (i = 0; i <= (length - 1); i++) {
bytesResult[i] = (wordsRcvr[i] === floatArg);
}
}
} else {
if (isArgInt) {
floatsRcvr = rcvrOop.wordsAsFloat32Array();
intArg = argOop;
bytesResult = resultOop.bytes;
for (i = 0; i <= (length - 1); i++) {
bytesResult[i] = (floatsRcvr[i] === intArg);
}
} else {
floatsRcvr = rcvrOop.wordsAsFloat32Array();
floatArg = interpreterProxy.floatValueOf(argOop);
bytesResult = resultOop.bytes;
for (i = 0; i <= (length - 1); i++) {
bytesResult[i] = (floatsRcvr[i] === floatArg);
}
}
}
interpreterProxy.pop(4);
interpreterProxy.push(resultOop);
}
function primitiveGEArrays() {
var argOop;
var bytesResult;
var floatsArg;
var floatsRcvr;
var i;
var isArgWords;
var isRcvrWords;
var length;
var rcvrOop;
var resultOop;
var wordsArg;
var wordsRcvr;
/* inline: true */;
resultOop = interpreterProxy.stackObjectValue(0);
argOop = interpreterProxy.stackObjectValue(1);
rcvrOop = interpreterProxy.stackObjectValue(2);
if (interpreterProxy.failed()) {
return null;
}
interpreterProxy.success(interpreterProxy.isWords(argOop));
interpreterProxy.success(interpreterProxy.isWords(rcvrOop));
interpreterProxy.success(interpreterProxy.isBytes(resultOop));
if (interpreterProxy.failed()) {
return null;
}
length = SIZEOF(argOop);
interpreterProxy.success(length === SIZEOF(rcvrOop));
interpreterProxy.success(length === SIZEOF(resultOop));
if (interpreterProxy.failed()) {
return null;
}
isArgWords = interpreterProxy.isMemberOf(argOop, "WordArray");
isRcvrWords = interpreterProxy.isMemberOf(rcvrOop, "WordArray");
if (isRcvrWords) {
if (isArgWords) {
wordsRcvr = rcvrOop.words;
wordsArg = argOop.words;
bytesResult = resultOop.bytes;
for (i = 0; i <= (length - 1); i++) {
bytesResult[i] = (wordsRcvr[i] >= wordsArg[i]);
}
} else {
wordsRcvr = rcvrOop.words;
floatsArg = argOop.wordsAsFloat32Array();
bytesResult = resultOop.bytes;
for (i = 0; i <= (length - 1); i++) {
bytesResult[i] = (wordsRcvr[i] >= floatsArg[i]);
}
}
} else {
if (isArgWords) {
floatsRcvr = rcvrOop.wordsAsFloat32Array();
wordsArg = argOop.words;
bytesResult = resultOop.bytes;
for (i = 0; i <= (length - 1); i++) {
bytesResult[i] = (floatsRcvr[i] >= wordsArg[i]);
}
} else {
floatsRcvr = rcvrOop.wordsAsFloat32Array();
floatsArg = argOop.wordsAsFloat32Array();
bytesResult = resultOop.bytes;
for (i = 0; i <= (length - 1); i++) {
bytesResult[i] = (floatsRcvr[i] >= floatsArg[i]);
}
}
}
interpreterProxy.pop(4);
interpreterProxy.push(resultOop);
}
function primitiveGEScalar() {
var argOop;
var bytesResult;
var floatArg;
var floatsRcvr;
var i;
var intArg;
var isArgInt;
var isRcvrWords;
var length;
var rcvrOop;
var resultOop;
var wordsRcvr;
/* inline: true */;
resultOop = interpreterProxy.stackObjectValue(0);
argOop = interpreterProxy.stackValue(1);
rcvrOop = interpreterProxy.stackObjectValue(2);
if (interpreterProxy.failed()) {
return null;
}
interpreterProxy.success(interpreterProxy.isWords(rcvrOop));
interpreterProxy.success(interpreterProxy.isBytes(resultOop));
if (interpreterProxy.failed()) {
return null;
}
length = SIZEOF(rcvrOop);
interpreterProxy.success(length === SIZEOF(resultOop));
if (interpreterProxy.failed()) {
return null;
}
isArgInt = typeof argOop === "number";
isRcvrWords = interpreterProxy.isMemberOf(rcvrOop, "WordArray");
if (isRcvrWords) {
if (isArgInt) {
wordsRcvr = rcvrOop.words;
intArg = argOop;
bytesResult = resultOop.bytes;
for (i = 0; i <= (length - 1); i++) {
bytesResult[i] = (wordsRcvr[i] >= intArg);
}
} else {
wordsRcvr = rcvrOop.words;
floatArg = interpreterProxy.floatValueOf(argOop);
bytesResult = resultOop.bytes;
for (i = 0; i <= (length - 1); i++) {
bytesResult[i] = (wordsRcvr[i] >= floatArg);
}
}
} else {
if (isArgInt) {
floatsRcvr = rcvrOop.wordsAsFloat32Array();
intArg = argOop;
bytesResult = resultOop.bytes;
for (i = 0; i <= (length - 1); i++) {
bytesResult[i] = (floatsRcvr[i] >= intArg);
}
} else {
floatsRcvr = rcvrOop.wordsAsFloat32Array();
floatArg = interpreterProxy.floatValueOf(argOop);
bytesResult = resultOop.bytes;
for (i = 0; i <= (length - 1); i++) {
bytesResult[i] = (floatsRcvr[i] >= floatArg);
}
}
}
interpreterProxy.pop(4);
interpreterProxy.push(resultOop);
}
function primitiveGTArrays() {
var argOop;
var bytesResult;
var floatsArg;
var floatsRcvr;
var i;
var isArgWords;
var isRcvrWords;
var length;
var rcvrOop;
var resultOop;
var wordsArg;
var wordsRcvr;
/* inline: true */;
resultOop = interpreterProxy.stackObjectValue(0);
argOop = interpreterProxy.stackObjectValue(1);
rcvrOop = interpreterProxy.stackObjectValue(2);
if (interpreterProxy.failed()) {
return null;
}
interpreterProxy.success(interpreterProxy.isWords(argOop));
interpreterProxy.success(interpreterProxy.isWords(rcvrOop));
interpreterProxy.success(interpreterProxy.isBytes(resultOop));
if (interpreterProxy.failed()) {
return null;
}
length = SIZEOF(argOop);
interpreterProxy.success(length === SIZEOF(rcvrOop));
interpreterProxy.success(length === SIZEOF(resultOop));
if (interpreterProxy.failed()) {
return null;
}
isArgWords = interpreterProxy.isMemberOf(argOop, "WordArray");
isRcvrWords = interpreterProxy.isMemberOf(rcvrOop, "WordArray");
if (isRcvrWords) {
if (isArgWords) {
wordsRcvr = rcvrOop.words;
wordsArg = argOop.words;
bytesResult = resultOop.bytes;
for (i = 0; i <= (length - 1); i++) {
bytesResult[i] = (wordsRcvr[i] > wordsArg[i]);
}
} else {
wordsRcvr = rcvrOop.words;
floatsArg = argOop.wordsAsFloat32Array();
bytesResult = resultOop.bytes;
for (i = 0; i <= (length - 1); i++) {
bytesResult[i] = (wordsRcvr[i] > floatsArg[i]);
}
}
} else {
if (isArgWords) {
floatsRcvr = rcvrOop.wordsAsFloat32Array();
wordsArg = argOop.words;
bytesResult = resultOop.bytes;
for (i = 0; i <= (length - 1); i++) {
bytesResult[i] = (floatsRcvr[i] > wordsArg[i]);
}
} else {
floatsRcvr = rcvrOop.wordsAsFloat32Array();
floatsArg = argOop.wordsAsFloat32Array();
bytesResult = resultOop.bytes;
for (i = 0; i <= (length - 1); i++) {
bytesResult[i] = (floatsRcvr[i] > floatsArg[i]);
}
}
}
interpreterProxy.pop(4);
interpreterProxy.push(resultOop);
}
function primitiveGTScalar() {
var argOop;
var bytesResult;
var floatArg;
var floatsRcvr;
var i;
var intArg;
var isArgInt;
var isRcvrWords;
var length;
var rcvrOop;
var resultOop;
var wordsRcvr;
/* inline: true */;
resultOop = interpreterProxy.stackObjectValue(0);
argOop = interpreterProxy.stackValue(1);
rcvrOop = interpreterProxy.stackObjectValue(2);
if (interpreterProxy.failed()) {
return null;
}
interpreterProxy.success(interpreterProxy.isWords(rcvrOop));
interpreterProxy.success(interpreterProxy.isBytes(resultOop));
if (interpreterProxy.failed()) {
return null;
}
length = SIZEOF(rcvrOop);
interpreterProxy.success(length === SIZEOF(resultOop));
if (interpreterProxy.failed()) {
return null;
}
isArgInt = typeof argOop === "number";
isRcvrWords = interpreterProxy.isMemberOf(rcvrOop, "WordArray");
if (isRcvrWords) {
if (isArgInt) {
wordsRcvr = rcvrOop.words;
intArg = argOop;
bytesResult = resultOop.bytes;
for (i = 0; i <= (length - 1); i++) {
bytesResult[i] = (wordsRcvr[i] > intArg);
}
} else {
wordsRcvr = rcvrOop.words;
floatArg = interpreterProxy.floatValueOf(argOop);
bytesResult = resultOop.bytes;
for (i = 0; i <= (length - 1); i++) {
bytesResult[i] = (wordsRcvr[i] > floatArg);
}
}
} else {
if (isArgInt) {
floatsRcvr = rcvrOop.wordsAsFloat32Array();
intArg = argOop;
bytesResult = resultOop.bytes;
for (i = 0; i <= (length - 1); i++) {
bytesResult[i] = (floatsRcvr[i] > intArg);
}
} else {
floatsRcvr = rcvrOop.wordsAsFloat32Array();
floatArg = interpreterProxy.floatValueOf(argOop);
bytesResult = resultOop.bytes;
for (i = 0; i <= (length - 1); i++) {
bytesResult[i] = (floatsRcvr[i] > floatArg);
}
}
}
interpreterProxy.pop(4);
interpreterProxy.push(resultOop);
}
function primitiveLEArrays() {
var argOop;
var bytesResult;
var floatsArg;
var floatsRcvr;
var i;
var isArgWords;
var isRcvrWords;
var length;
var rcvrOop;
var resultOop;
var wordsArg;
var wordsRcvr;
/* inline: true */;
resultOop = interpreterProxy.stackObjectValue(0);
argOop = interpreterProxy.stackObjectValue(1);
rcvrOop = interpreterProxy.stackObjectValue(2);
if (interpreterProxy.failed()) {
return null;
}
interpreterProxy.success(interpreterProxy.isWords(argOop));
interpreterProxy.success(interpreterProxy.isWords(rcvrOop));
interpreterProxy.success(interpreterProxy.isBytes(resultOop));
if (interpreterProxy.failed()) {
return null;
}
length = SIZEOF(argOop);
interpreterProxy.success(length === SIZEOF(rcvrOop));
interpreterProxy.success(length === SIZEOF(resultOop));
if (interpreterProxy.failed()) {
return null;
}
isArgWords = interpreterProxy.isMemberOf(argOop, "WordArray");
isRcvrWords = interpreterProxy.isMemberOf(rcvrOop, "WordArray");
if (isRcvrWords) {
if (isArgWords) {
wordsRcvr = rcvrOop.words;
wordsArg = argOop.words;
bytesResult = resultOop.bytes;
for (i = 0; i <= (length - 1); i++) {
bytesResult[i] = (wordsRcvr[i] <= wordsArg[i]);
}
} else {
wordsRcvr = rcvrOop.words;
floatsArg = argOop.wordsAsFloat32Array();
bytesResult = resultOop.bytes;
for (i = 0; i <= (length - 1); i++) {
bytesResult[i] = (wordsRcvr[i] <= floatsArg[i]);
}
}
} else {
if (isArgWords) {
floatsRcvr = rcvrOop.wordsAsFloat32Array();
wordsArg = argOop.words;
bytesResult = resultOop.bytes;
for (i = 0; i <= (length - 1); i++) {
bytesResult[i] = (floatsRcvr[i] <= wordsArg[i]);
}
} else {
floatsRcvr = rcvrOop.wordsAsFloat32Array();
floatsArg = argOop.wordsAsFloat32Array();
bytesResult = resultOop.bytes;
for (i = 0; i <= (length - 1); i++) {
bytesResult[i] = (floatsRcvr[i] <= floatsArg[i]);
}
}
}
interpreterProxy.pop(4);
interpreterProxy.push(resultOop);
}
function primitiveLEScalar() {
var argOop;
var bytesResult;
var floatArg;
var floatsRcvr;
var i;
var intArg;
var isArgInt;
var isRcvrWords;
var length;
var rcvrOop;
var resultOop;
var wordsRcvr;
/* inline: true */;
resultOop = interpreterProxy.stackObjectValue(0);
argOop = interpreterProxy.stackValue(1);
rcvrOop = interpreterProxy.stackObjectValue(2);
if (interpreterProxy.failed()) {
return null;
}
interpreterProxy.success(interpreterProxy.isWords(rcvrOop));
interpreterProxy.success(interpreterProxy.isBytes(resultOop));
if (interpreterProxy.failed()) {
return null;
}
length = SIZEOF(rcvrOop);
interpreterProxy.success(length === SIZEOF(resultOop));
if (interpreterProxy.failed()) {
return null;
}
isArgInt = typeof argOop === "number";
isRcvrWords = interpreterProxy.isMemberOf(rcvrOop, "WordArray");
if (isRcvrWords) {
if (isArgInt) {
wordsRcvr = rcvrOop.words;
intArg = argOop;
bytesResult = resultOop.bytes;
for (i = 0; i <= (length - 1); i++) {
bytesResult[i] = (wordsRcvr[i] <= intArg);
}
} else {
wordsRcvr = rcvrOop.words;
floatArg = interpreterProxy.floatValueOf(argOop);
bytesResult = resultOop.bytes;
for (i = 0; i <= (length - 1); i++) {
bytesResult[i] = (wordsRcvr[i] <= floatArg);
}
}
} else {
if (isArgInt) {
floatsRcvr = rcvrOop.wordsAsFloat32Array();
intArg = argOop;
bytesResult = resultOop.bytes;
for (i = 0; i <= (length - 1); i++) {
bytesResult[i] = (floatsRcvr[i] <= intArg);
}
} else {
floatsRcvr = rcvrOop.wordsAsFloat32Array();
floatArg = interpreterProxy.floatValueOf(argOop);
bytesResult = resultOop.bytes;
for (i = 0; i <= (length - 1); i++) {
bytesResult[i] = (floatsRcvr[i] <= floatArg);
}
}
}
interpreterProxy.pop(4);
interpreterProxy.push(resultOop);
}
function primitiveLTArrays() {
var argOop;
var bytesResult;
var floatsArg;
var floatsRcvr;
var i;
var isArgWords;
var isRcvrWords;
var length;
var rcvrOop;
var resultOop;
var wordsArg;
var wordsRcvr;
/* inline: true */;
resultOop = interpreterProxy.stackObjectValue(0);
argOop = interpreterProxy.stackObjectValue(1);
rcvrOop = interpreterProxy.stackObjectValue(2);
if (interpreterProxy.failed()) {
return null;
}
interpreterProxy.success(interpreterProxy.isWords(argOop));
interpreterProxy.success(interpreterProxy.isWords(rcvrOop));
interpreterProxy.success(interpreterProxy.isBytes(resultOop));
if (interpreterProxy.failed()) {
return null;
}
length = SIZEOF(argOop);
interpreterProxy.success(length === SIZEOF(rcvrOop));
interpreterProxy.success(length === SIZEOF(resultOop));
if (interpreterProxy.failed()) {
return null;
}
isArgWords = interpreterProxy.isMemberOf(argOop, "WordArray");
isRcvrWords = interpreterProxy.isMemberOf(rcvrOop, "WordArray");
if (isRcvrWords) {
if (isArgWords) {
wordsRcvr = rcvrOop.words;
wordsArg = argOop.words;
bytesResult = resultOop.bytes;
for (i = 0; i <= (length - 1); i++) {
bytesResult[i] = (wordsRcvr[i] < wordsArg[i]);
}
} else {
wordsRcvr = rcvrOop.words;
floatsArg = argOop.wordsAsFloat32Array();
bytesResult = resultOop.bytes;
for (i = 0; i <= (length - 1); i++) {
bytesResult[i] = (wordsRcvr[i] < floatsArg[i]);
}
}
} else {
if (isArgWords) {
floatsRcvr = rcvrOop.wordsAsFloat32Array();
wordsArg = argOop.words;
bytesResult = resultOop.bytes;
for (i = 0; i <= (length - 1); i++) {
bytesResult[i] = (floatsRcvr[i] < wordsArg[i]);
}
} else {
floatsRcvr = rcvrOop.wordsAsFloat32Array();
floatsArg = argOop.wordsAsFloat32Array();
bytesResult = resultOop.bytes;
for (i = 0; i <= (length - 1); i++) {
bytesResult[i] = (floatsRcvr[i] < floatsArg[i]);
}
}
}
interpreterProxy.pop(4);
interpreterProxy.push(resultOop);
}
function primitiveLTScalar() {
var argOop;
var bytesResult;
var floatArg;
var floatsRcvr;
var i;
var intArg;
var isArgInt;
var isRcvrWords;
var length;
var rcvrOop;
var resultOop;
var wordsRcvr;
/* inline: true */;
resultOop = interpreterProxy.stackObjectValue(0);
argOop = interpreterProxy.stackValue(1);
rcvrOop = interpreterProxy.stackObjectValue(2);
if (interpreterProxy.failed()) {
return null;
}
interpreterProxy.success(interpreterProxy.isWords(rcvrOop));
interpreterProxy.success(interpreterProxy.isBytes(resultOop));
if (interpreterProxy.failed()) {
return null;
}
length = SIZEOF(rcvrOop);
interpreterProxy.success(length === SIZEOF(resultOop));
if (interpreterProxy.failed()) {
return null;
}
isArgInt = typeof argOop === "number";
isRcvrWords = interpreterProxy.isMemberOf(rcvrOop, "WordArray");
if (isRcvrWords) {
if (isArgInt) {
wordsRcvr = rcvrOop.words;
intArg = argOop;
bytesResult = resultOop.bytes;
for (i = 0; i <= (length - 1); i++) {
bytesResult[i] = (wordsRcvr[i] < intArg);
}
} else {
wordsRcvr = rcvrOop.words;
floatArg = interpreterProxy.floatValueOf(argOop);
bytesResult = resultOop.bytes;
for (i = 0; i <= (length - 1); i++) {
bytesResult[i] = (wordsRcvr[i] < floatArg);
}
}
} else {
if (isArgInt) {
floatsRcvr = rcvrOop.wordsAsFloat32Array();
intArg = argOop;
bytesResult = resultOop.bytes;
for (i = 0; i <= (length - 1); i++) {
bytesResult[i] = (floatsRcvr[i] < intArg);
}
} else {
floatsRcvr = rcvrOop.wordsAsFloat32Array();
floatArg = interpreterProxy.floatValueOf(argOop);
bytesResult = resultOop.bytes;
for (i = 0; i <= (length - 1); i++) {
bytesResult[i] = (floatsRcvr[i] < floatArg);
}
}
}
interpreterProxy.pop(4);
interpreterProxy.push(resultOop);
}
function primitiveMulArrays() {
var argOop;
var floatsArg;
var floatsRcvr;
var floatsResult;
var i;
var isArgWords;
var isRcvrWords;
var length;
var rcvrOop;
var resultOop;
var wordsArg;
var wordsRcvr;
var wordsResult;
/* inline: true */;
resultOop = interpreterProxy.stackObjectValue(0);
argOop = interpreterProxy.stackObjectValue(1);
rcvrOop = interpreterProxy.stackObjectValue(2);
if (interpreterProxy.failed()) {
return null;
}
interpreterProxy.success(interpreterProxy.isWords(argOop));
interpreterProxy.success(interpreterProxy.isWords(rcvrOop));
interpreterProxy.success(interpreterProxy.isWords(resultOop));
if (interpreterProxy.failed()) {
return null;
}
length = SIZEOF(argOop);
interpreterProxy.success(length === SIZEOF(rcvrOop));
interpreterProxy.success(length === SIZEOF(resultOop));
if (interpreterProxy.failed()) {
return null;
}
isArgWords = interpreterProxy.isMemberOf(argOop, "WordArray");
isRcvrWords = interpreterProxy.isMemberOf(rcvrOop, "WordArray");
if (isArgWords && isRcvrWords) {
if (!interpreterProxy.isMemberOf(resultOop, "WordArray")) {
interpreterProxy.primitiveFail();
return null;
}
} else {
if (!interpreterProxy.isMemberOf(resultOop, "KedamaFloatArray")) {
interpreterProxy.primitiveFail();
return null;
}
}
if (isRcvrWords) {
if (isArgWords) {
wordsRcvr = rcvrOop.words;
wordsArg = argOop.words;
wordsResult = resultOop.words;
for (i = 0; i <= (length - 1); i++) {
wordsResult[i] = (wordsRcvr[i] * wordsArg[i]);
}
} else {
wordsRcvr = rcvrOop.words;
floatsArg = argOop.wordsAsFloat32Array();
floatsResult = resultOop.wordsAsFloat32Array();
for (i = 0; i <= (length - 1); i++) {
floatsResult[i] = (wordsRcvr[i] * floatsArg[i]);
}
}
} else {
if (isArgWords) {
floatsRcvr = rcvrOop.wordsAsFloat32Array();
wordsArg = argOop.words;
floatsResult = resultOop.wordsAsFloat32Array();
for (i = 0; i <= (length - 1); i++) {
floatsResult[i] = (floatsRcvr[i] * wordsArg[i]);
}
} else {
floatsRcvr = rcvrOop.wordsAsFloat32Array();
floatsArg = argOop.wordsAsFloat32Array();
floatsResult = resultOop.wordsAsFloat32Array();
for (i = 0; i <= (length - 1); i++) {
floatsResult[i] = (floatsRcvr[i] * floatsArg[i]);
}
}
}
interpreterProxy.pop(4);
interpreterProxy.push(resultOop);
}
function primitiveMulScalar() {
var argOop;
var floatArg;
var floatsRcvr;
var floatsResult;
var i;
var intArg;
var isArgInt;
var isRcvrWords;
var length;
var rcvrOop;
var resultOop;
var wordsRcvr;
var wordsResult;
/* inline: true */;
resultOop = interpreterProxy.stackObjectValue(0);
argOop = interpreterProxy.stackValue(1);
rcvrOop = interpreterProxy.stackObjectValue(2);
if (interpreterProxy.failed()) {
return null;
}
interpreterProxy.success(interpreterProxy.isWords(rcvrOop));
interpreterProxy.success(interpreterProxy.isWords(resultOop));
if (interpreterProxy.failed()) {
return null;
}
length = SIZEOF(rcvrOop);
interpreterProxy.success(length === SIZEOF(resultOop));
if (interpreterProxy.failed()) {
return null;
}
isArgInt = typeof argOop === "number";
isRcvrWords = interpreterProxy.isMemberOf(rcvrOop, "WordArray");
if (isArgInt && isRcvrWords) {
if (!interpreterProxy.isMemberOf(resultOop, "WordArray")) {
interpreterProxy.primitiveFail();
return null;
}
} else {
if (!interpreterProxy.isMemberOf(resultOop, "KedamaFloatArray")) {
interpreterProxy.primitiveFail();
return null;
}
}
if (isRcvrWords) {
if (isArgInt) {
wordsRcvr = rcvrOop.words;
intArg = argOop;
wordsResult = resultOop.words;
for (i = 0; i <= (length - 1); i++) {
wordsResult[i] = (wordsRcvr[i] * intArg);
}
} else {
wordsRcvr = rcvrOop.words;
floatArg = interpreterProxy.floatValueOf(argOop);
floatsResult = resultOop.wordsAsFloat32Array();
for (i = 0; i <= (length - 1); i++) {
floatsResult[i] = (wordsRcvr[i] * floatArg);
}
}
} else {
if (isArgInt) {
floatsRcvr = rcvrOop.wordsAsFloat32Array();
intArg = argOop;
floatsResult = resultOop.wordsAsFloat32Array();
for (i = 0; i <= (length - 1); i++) {
floatsResult[i] = (floatsRcvr[i] * intArg);
}
} else {
floatsRcvr = rcvrOop.wordsAsFloat32Array();
floatArg = interpreterProxy.floatValueOf(argOop);
floatsResult = resultOop.wordsAsFloat32Array();
for (i = 0; i <= (length - 1); i++) {
floatsResult[i] = (floatsRcvr[i] * floatArg);
}
}
}
interpreterProxy.pop(4);
interpreterProxy.push(resultOop);
}
function primitiveNEArrays() {
var argOop;
var bytesResult;
var floatsArg;
var floatsRcvr;
var i;
var isArgWords;
var isRcvrWords;
var length;
var rcvrOop;
var resultOop;
var wordsArg;
var wordsRcvr;
/* inline: true */;
resultOop = interpreterProxy.stackObjectValue(0);
argOop = interpreterProxy.stackObjectValue(1);
rcvrOop = interpreterProxy.stackObjectValue(2);
if (interpreterProxy.failed()) {
return null;
}
interpreterProxy.success(interpreterProxy.isWords(argOop));
interpreterProxy.success(interpreterProxy.isWords(rcvrOop));
interpreterProxy.success(interpreterProxy.isBytes(resultOop));
if (interpreterProxy.failed()) {
return null;
}
length = SIZEOF(argOop);
interpreterProxy.success(length === SIZEOF(rcvrOop));
interpreterProxy.success(length === SIZEOF(resultOop));
if (interpreterProxy.failed()) {
return null;
}
isArgWords = interpreterProxy.isMemberOf(argOop, "WordArray");
isRcvrWords = interpreterProxy.isMemberOf(rcvrOop, "WordArray");
if (isRcvrWords) {
if (isArgWords) {
wordsRcvr = rcvrOop.words;
wordsArg = argOop.words;
bytesResult = resultOop.bytes;
for (i = 0; i <= (length - 1); i++) {
bytesResult[i] = (wordsRcvr[i] !== wordsArg[i]);
}
} else {
wordsRcvr = rcvrOop.words;
floatsArg = argOop.wordsAsFloat32Array();
bytesResult = resultOop.bytes;
for (i = 0; i <= (length - 1); i++) {
bytesResult[i] = (wordsRcvr[i] !== floatsArg[i]);
}
}
} else {
if (isArgWords) {
floatsRcvr = rcvrOop.wordsAsFloat32Array();
wordsArg = argOop.words;
bytesResult = resultOop.bytes;
for (i = 0; i <= (length - 1); i++) {
bytesResult[i] = (floatsRcvr[i] !== wordsArg[i]);
}
} else {
floatsRcvr = rcvrOop.wordsAsFloat32Array();
floatsArg = argOop.wordsAsFloat32Array();
bytesResult = resultOop.bytes;
for (i = 0; i <= (length - 1); i++) {
bytesResult[i] = (floatsRcvr[i] !== floatsArg[i]);
}
}
}
interpreterProxy.pop(4);
interpreterProxy.push(resultOop);
}
function primitiveNEScalar() {
var argOop;
var bytesResult;
var floatArg;
var floatsRcvr;
var i;
var intArg;
var isArgInt;
var isRcvrWords;
var length;
var rcvrOop;
var resultOop;
var wordsRcvr;
/* inline: true */;
resultOop = interpreterProxy.stackObjectValue(0);
argOop = interpreterProxy.stackValue(1);
rcvrOop = interpreterProxy.stackObjectValue(2);
if (interpreterProxy.failed()) {
return null;
}
interpreterProxy.success(interpreterProxy.isWords(rcvrOop));
interpreterProxy.success(interpreterProxy.isBytes(resultOop));
if (interpreterProxy.failed()) {
return null;
}
length = SIZEOF(rcvrOop);
interpreterProxy.success(length === SIZEOF(resultOop));
if (interpreterProxy.failed()) {
return null;
}
isArgInt = typeof argOop === "number";
isRcvrWords = interpreterProxy.isMemberOf(rcvrOop, "WordArray");
if (isRcvrWords) {
if (isArgInt) {
wordsRcvr = rcvrOop.words;
intArg = argOop;
bytesResult = resultOop.bytes;
for (i = 0; i <= (length - 1); i++) {
bytesResult[i] = (wordsRcvr[i] !== intArg);
}
} else {
wordsRcvr = rcvrOop.words;
floatArg = interpreterProxy.floatValueOf(argOop);
bytesResult = resultOop.bytes;
for (i = 0; i <= (length - 1); i++) {
bytesResult[i] = (wordsRcvr[i] !== floatArg);
}
}
} else {
if (isArgInt) {
floatsRcvr = rcvrOop.wordsAsFloat32Array();
intArg = argOop;
bytesResult = resultOop.bytes;
for (i = 0; i <= (length - 1); i++) {
bytesResult[i] = (floatsRcvr[i] !== intArg);
}
} else {
floatsRcvr = rcvrOop.wordsAsFloat32Array();
floatArg = interpreterProxy.floatValueOf(argOop);
bytesResult = resultOop.bytes;
for (i = 0; i <= (length - 1); i++) {
bytesResult[i] = (floatsRcvr[i] !== floatArg);
}
}
}
interpreterProxy.pop(4);
interpreterProxy.push(resultOop);
}
function primitiveNotByteArray() {
var i;
var length;
var rcvrArray;
var rcvrOop;
/* inline: true */;
rcvrOop = interpreterProxy.stackValue(0);
if (interpreterProxy.failed()) {
return null;
}
interpreterProxy.success(interpreterProxy.isBytes(rcvrOop));
if (interpreterProxy.failed()) {
return null;
}
length = SIZEOF(rcvrOop);
if (interpreterProxy.failed()) {
return null;
}
rcvrArray = rcvrOop.bytes;
for (i = 0; i <= (length - 1); i++) {
if (rcvrArray[i] === 0) {
rcvrArray[i] = 1;
} else {
rcvrArray[i] = 0;
}
}
}
function primitiveOrByteArray() {
var i;
var length;
var length1;
var length2;
var otherArray;
var otherOop;
var rcvrArray;
var rcvrOop;
/* inline: true */;
otherOop = interpreterProxy.stackObjectValue(0);
rcvrOop = interpreterProxy.stackValue(1);
if (interpreterProxy.failed()) {
return null;
}
interpreterProxy.success(interpreterProxy.isBytes(rcvrOop));
interpreterProxy.success(interpreterProxy.isBytes(otherOop));
if (interpreterProxy.failed()) {
return null;
}
length1 = SIZEOF(rcvrOop);
length2 = SIZEOF(otherOop);
if (interpreterProxy.failed()) {
return null;
}
length = length1;
if (length1 > length2) {
length = length2;
}
otherArray = otherOop.bytes;
rcvrArray = rcvrOop.bytes;
for (i = 0; i <= (length - 1); i++) {
rcvrArray[i] = ((rcvrArray[i] + otherArray[i]) > 0);
}
interpreterProxy.pop(1);
}
function primitivePredicateAtAllPutBoolean() {
var i;
var predicates;
var predicatesOop;
var rcvrOop;
var val;
var valOop;
var values;
var valuesOop;
/* inline: true */;
valOop = interpreterProxy.stackValue(0);
rcvrOop = interpreterProxy.stackObjectValue(1);
if (interpreterProxy.failed()) {
return null;
}
if (interpreterProxy.isIntegerValue(valOop)) {
val = valOop;
} else {
val = interpreterProxy.booleanValueOf(valOop);
}
valuesOop = interpreterProxy.fetchPointerofObject(1, rcvrOop);
predicatesOop = interpreterProxy.fetchPointerofObject(0, rcvrOop);
if (interpreterProxy.failed()) {
return null;
}
if (!interpreterProxy.isBytes(predicatesOop)) {
interpreterProxy.primitiveFail();
return null;
}
if (!interpreterProxy.isBytes(valuesOop)) {
interpreterProxy.primitiveFail();
return null;
}
values = valuesOop.bytes;
predicates = predicatesOop.bytes;
for (i = 0; i <= (SIZEOF(valuesOop) - 1); i++) {
if (predicates[i] === 1) {
values[i] = val;
}
}
interpreterProxy.pop(1);
}
function primitivePredicateAtAllPutColor() {
var i;
var predicates;
var predicatesOop;
var rcvrOop;
var val;
var values;
var valuesOop;
/* inline: true */;
val = interpreterProxy.stackIntegerValue(0);
rcvrOop = interpreterProxy.stackObjectValue(1);
if (interpreterProxy.failed()) {
return null;
}
val = val | 4278190080;
valuesOop = interpreterProxy.fetchPointerofObject(1, rcvrOop);
predicatesOop = interpreterProxy.fetchPointerofObject(0, rcvrOop);
if (interpreterProxy.failed()) {
return null;
}
if (!interpreterProxy.isBytes(predicatesOop)) {
interpreterProxy.primitiveFail();
return null;
}
if (!interpreterProxy.isWords(valuesOop)) {
interpreterProxy.primitiveFail();
return null;
}
values = valuesOop.words;
predicates = predicatesOop.bytes;
for (i = 0; i <= (SIZEOF(valuesOop) - 1); i++) {
if (predicates[i] === 1) {
values[i] = val;
}
}
interpreterProxy.pop(1);
}
function primitivePredicateAtAllPutNumber() {
var i;
var predicates;
var predicatesOop;
var rcvrOop;
var val;
var values;
var valuesOop;
/* inline: true */;
val = interpreterProxy.stackFloatValue(0);
rcvrOop = interpreterProxy.stackObjectValue(1);
if (interpreterProxy.failed()) {
return null;
}
valuesOop = interpreterProxy.fetchPointerofObject(1, rcvrOop);
predicatesOop = interpreterProxy.fetchPointerofObject(0, rcvrOop);
if (interpreterProxy.failed()) {
return null;
}
if (!interpreterProxy.isBytes(predicatesOop)) {
interpreterProxy.primitiveFail();
return null;
}
if (!interpreterProxy.isWords(valuesOop)) {
interpreterProxy.primitiveFail();
return null;
}
values = valuesOop.wordsAsFloat32Array();
predicates = predicatesOop.bytes;
for (i = 0; i <= (SIZEOF(valuesOop) - 1); i++) {
if (predicates[i] === 1) {
values[i] = val;
}
}
interpreterProxy.pop(1);
}
function primitivePredicateAtAllPutObject() {
var i;
var predicates;
var predicatesOop;
var rcvrOop;
var valOop;
var values;
var valuesOop;
/* inline: true */;
valOop = interpreterProxy.stackValue(0);
rcvrOop = interpreterProxy.stackObjectValue(1);
if (interpreterProxy.failed()) {
return null;
}
valuesOop = interpreterProxy.fetchPointerofObject(1, rcvrOop);
predicatesOop = interpreterProxy.fetchPointerofObject(0, rcvrOop);
if (interpreterProxy.failed()) {
return null;
}
if (!interpreterProxy.isBytes(predicatesOop)) {
interpreterProxy.primitiveFail();
return null;
}
if (!interpreterProxy.isPointers(valuesOop)) {
interpreterProxy.primitiveFail();
return null;
}
values = valuesOop.wordsAsInt32Array();
predicates = predicatesOop.bytes;
for (i = 0; i <= (SIZEOF(valuesOop) - 1); i++) {
if (predicates[i] === 1) {
values[i] = valOop;
}
}
interpreterProxy.pop(1);
}
function primitivePredicateReplaceBytes() {
var i;
var predicates;
var predicatesOop;
var predicatesSize;
var rcvrOop;
var repOop;
var repStart;
var replacement;
var replacementSize;
var start;
var stop;
var values;
var valuesOop;
var valuesSize;
/* inline: true */;
repStart = interpreterProxy.stackIntegerValue(0);
repOop = interpreterProxy.stackObjectValue(1);
stop = interpreterProxy.stackIntegerValue(2);
start = interpreterProxy.stackIntegerValue(3);
rcvrOop = interpreterProxy.stackObjectValue(4);
if (interpreterProxy.failed()) {
return null;
}
valuesOop = interpreterProxy.fetchPointerofObject(1, rcvrOop);
predicatesOop = interpreterProxy.fetchPointerofObject(0, rcvrOop);
if (interpreterProxy.failed()) {
return null;
}
if (!interpreterProxy.isBytes(predicatesOop)) {
interpreterProxy.primitiveFail();
return null;
}
if (!(interpreterProxy.isBytes(valuesOop) && (interpreterProxy.isBytes(repOop)))) {
interpreterProxy.primitiveFail();
return null;
}
values = valuesOop.bytes;
predicates = predicatesOop.bytes;
replacement = repOop.bytes;
valuesSize = SIZEOF(valuesOop);
predicatesSize = SIZEOF(predicatesOop);
replacementSize = SIZEOF(repOop);
if (start > stop) {
interpreterProxy.primitiveFail();
return null;
}
if (start < 1) {
interpreterProxy.primitiveFail();
return null;
}
if (start > valuesSize) {
interpreterProxy.primitiveFail();
return null;
}
if (start > predicatesSize) {
interpreterProxy.primitiveFail();
return null;
}
if (stop > valuesSize) {
interpreterProxy.primitiveFail();
return null;
}
if (stop > predicatesSize) {
interpreterProxy.primitiveFail();
return null;
}
if (repStart < 1) {
interpreterProxy.primitiveFail();
return null;
}
if (repStart > replacementSize) {
interpreterProxy.primitiveFail();
return null;
}
if (((replacementSize - repStart) + 1) < ((stop - start) + 1)) {
interpreterProxy.primitiveFail();
return null;
}
for (i = (start - 1); i <= (stop - 1); i++) {
if (predicates[i] === 1) {
values[i] = replacement[(repStart + i) - start];
}
}
interpreterProxy.pop(4);
}
function primitivePredicateReplaceWords() {
var floatReplacement;
var floatValues;
var fv;
var i;
var predicates;
var predicatesOop;
var predicatesSize;
var rIsFloat;
var rcvrOop;
var repOop;
var repStart;
var replacement;
var replacementSize;
var start;
var stop;
var vIsFloat;
var values;
var valuesOop;
var valuesSize;
/* inline: true */;
repStart = interpreterProxy.stackIntegerValue(0);
repOop = interpreterProxy.stackObjectValue(1);
stop = interpreterProxy.stackIntegerValue(2);
start = interpreterProxy.stackIntegerValue(3);
rcvrOop = interpreterProxy.stackObjectValue(4);
if (interpreterProxy.failed()) {
return null;
}
valuesOop = interpreterProxy.fetchPointerofObject(1, rcvrOop);
predicatesOop = interpreterProxy.fetchPointerofObject(0, rcvrOop);
if (interpreterProxy.failed()) {
return null;
}
if (!interpreterProxy.isBytes(predicatesOop)) {
interpreterProxy.primitiveFail();
return null;
}
if (!((interpreterProxy.isWords(valuesOop) && (interpreterProxy.isWords(repOop))) || (interpreterProxy.isPointers(valuesOop) && (interpreterProxy.isPointers(repOop))))) {
interpreterProxy.primitiveFail();
return null;
}
predicates = predicatesOop.bytes;
valuesSize = SIZEOF(valuesOop);
predicatesSize = SIZEOF(predicatesOop);
replacementSize = SIZEOF(repOop);
if (start > stop) {
interpreterProxy.primitiveFail();
return null;
}
if (start < 1) {
interpreterProxy.primitiveFail();
return null;
}
if (start > valuesSize) {
interpreterProxy.primitiveFail();
return null;
}
if (start > predicatesSize) {
interpreterProxy.primitiveFail();
return null;
}
if (stop > valuesSize) {
interpreterProxy.primitiveFail();
return null;
}
if (stop > predicatesSize) {
interpreterProxy.primitiveFail();
return null;
}
if (repStart < 1) {
interpreterProxy.primitiveFail();
return null;
}
if (repStart > replacementSize) {
interpreterProxy.primitiveFail();
return null;
}
if (((replacementSize - repStart) + 1) < ((stop - start) + 1)) {
interpreterProxy.primitiveFail();
return null;
}
vIsFloat = interpreterProxy.isMemberOf(valuesOop, "KedamaFloatArray");
rIsFloat = interpreterProxy.isMemberOf(repOop, "KedamaFloatArray");
if (vIsFloat && (rIsFloat)) {
floatValues = valuesOop.wordsAsFloat32Array();
floatReplacement = repOop.wordsAsFloat32Array();
for (i = (start - 1); i <= (stop - 1); i++) {
if (predicates[i] === 1) {
floatValues[i] = floatReplacement[(repStart + i) - start];
}
}
}
if (vIsFloat && (!rIsFloat)) {
floatValues = valuesOop.wordsAsFloat32Array();
replacement = repOop.words;
for (i = (start - 1); i <= (stop - 1); i++) {
if (predicates[i] === 1) {
floatValues[i] = replacement[(repStart + i) - start];
}
}
}
if (!vIsFloat && (rIsFloat)) {
values = valuesOop.words;
floatReplacement = repOop.wordsAsFloat32Array();
for (i = (start - 1); i <= (stop - 1); i++) {
if (predicates[i] === 1) {
fv = (floatReplacement[(repStart + i) - start]>>>0);
;
values[i] = fv;
}
}
}
if (!vIsFloat && (!rIsFloat)) {
values = valuesOop.words;
replacement = repOop.words;
for (i = (start - 1); i <= (stop - 1); i++) {
if (predicates[i] === 1) {
values[i] = replacement[(repStart + i) - start];
}
}
}
interpreterProxy.pop(4);
}
function primitiveRemArrays() {
var argOop;
var floatArg;
var floatRcvr;
var floatResult;
var floatsArg;
var floatsRcvr;
var floatsResult;
var i;
var isArgWords;
var isRcvrWords;
var length;
var rcvrOop;
var resultOop;
var wordArg;
var wordRcvr;
var wordResult;
var wordsArg;
var wordsRcvr;
var wordsResult;
/* inline: true */;
resultOop = interpreterProxy.stackObjectValue(0);
argOop = interpreterProxy.stackObjectValue(1);
rcvrOop = interpreterProxy.stackObjectValue(2);
if (interpreterProxy.failed()) {
return null;
}
interpreterProxy.success(interpreterProxy.isWords(argOop));
interpreterProxy.success(interpreterProxy.isWords(rcvrOop));
interpreterProxy.success(interpreterProxy.isWords(resultOop));
if (interpreterProxy.failed()) {
return null;
}
length = SIZEOF(argOop);
interpreterProxy.success(length === SIZEOF(rcvrOop));
interpreterProxy.success(length === SIZEOF(resultOop));
if (interpreterProxy.failed()) {
return null;
}
isArgWords = interpreterProxy.isMemberOf(argOop, "WordArray");
isRcvrWords = interpreterProxy.isMemberOf(rcvrOop, "WordArray");
if (isArgWords && isRcvrWords) {
if (!interpreterProxy.isMemberOf(resultOop, "WordArray")) {
interpreterProxy.primitiveFail();
return null;
}
} else {
if (!interpreterProxy.isMemberOf(resultOop, "KedamaFloatArray")) {
interpreterProxy.primitiveFail();
return null;
}
}
if (isRcvrWords) {
if (isArgWords) {
wordsRcvr = rcvrOop.words;
wordsArg = argOop.words;
wordsResult = resultOop.words;
for (i = 0; i <= (length - 1); i++) {
wordRcvr = wordsRcvr[i];
wordArg = wordsArg[i];
/* In this primitive, words are supposed to be unsigned. */
wordResult = MOD(wordRcvr, wordArg);
wordsResult[i] = wordResult;
}
} else {
wordsRcvr = rcvrOop.words;
floatsArg = argOop.wordsAsFloat32Array();
floatsResult = resultOop.wordsAsFloat32Array();
for (i = 0; i <= (length - 1); i++) {
wordRcvr = wordsRcvr[i];
floatArg = floatsArg[i];
floatResult = wordRcvr / floatArg;
floatResult = Math.floor(floatResult);
floatsResult[i] = (wordRcvr - (floatResult * floatArg));
}
}
} else {
if (isArgWords) {
floatsRcvr = rcvrOop.wordsAsFloat32Array();
wordsArg = argOop.words;
floatsResult = resultOop.wordsAsFloat32Array();
for (i = 0; i <= (length - 1); i++) {
floatRcvr = floatsRcvr[i];
wordArg = wordsArg[i];
floatResult = floatRcvr / wordArg;
floatResult = Math.floor(floatResult);
floatsResult[i] = (floatRcvr - (floatResult * wordArg));
}
} else {
floatsRcvr = rcvrOop.wordsAsFloat32Array();
floatsArg = argOop.wordsAsFloat32Array();
floatsResult = resultOop.wordsAsFloat32Array();
for (i = 0; i <= (length - 1); i++) {
floatRcvr = floatsRcvr[i];
floatArg = floatsArg[i];
floatResult = floatRcvr / floatArg;
floatResult = Math.floor(floatResult);
floatsResult[i] = (floatRcvr - (floatResult * floatArg));
}
}
}
interpreterProxy.pop(4);
interpreterProxy.push(resultOop);
}
function primitiveRemScalar() {
var argOop;
var floatArg;
var floatRcvr;
var floatResult;
var floatsRcvr;
var floatsResult;
var i;
var intArg;
var isArgInt;
var isRcvrWords;
var length;
var rcvrOop;
var resultOop;
var wordRcvr;
var wordsRcvr;
var wordsResult;
/* inline: true */;
resultOop = interpreterProxy.stackObjectValue(0);
argOop = interpreterProxy.stackValue(1);
rcvrOop = interpreterProxy.stackObjectValue(2);
if (interpreterProxy.failed()) {
return null;
}
interpreterProxy.success(interpreterProxy.isWords(rcvrOop));
interpreterProxy.success(interpreterProxy.isWords(resultOop));
if (interpreterProxy.failed()) {
return null;
}
length = SIZEOF(rcvrOop);
interpreterProxy.success(length === SIZEOF(resultOop));
if (interpreterProxy.failed()) {
return null;
}
isArgInt = typeof argOop === "number";
isRcvrWords = interpreterProxy.isMemberOf(rcvrOop, "WordArray");
if (isArgInt && isRcvrWords) {
if (!interpreterProxy.isMemberOf(resultOop, "WordArray")) {
interpreterProxy.primitiveFail();
return null;
}
} else {
if (!interpreterProxy.isMemberOf(resultOop, "KedamaFloatArray")) {
interpreterProxy.primitiveFail();
return null;
}
}
if (isRcvrWords) {
if (isArgInt) {
wordsRcvr = rcvrOop.words;
intArg = argOop;
wordsResult = resultOop.words;
for (i = 0; i <= (length - 1); i++) {
wordsResult[i] = (MOD(wordsRcvr[i], intArg));
}
} else {
wordsRcvr = rcvrOop.words;
floatArg = interpreterProxy.floatValueOf(argOop);
floatsResult = resultOop.wordsAsFloat32Array();
for (i = 0; i <= (length - 1); i++) {
wordRcvr = wordsRcvr[i];
floatResult = wordRcvr / floatArg;
floatResult = Math.floor(floatResult);
floatsResult[i] = (wordRcvr - (floatResult * floatArg));
}
}
} else {
if (isArgInt) {
floatsRcvr = rcvrOop.wordsAsFloat32Array();
intArg = argOop;
floatsResult = resultOop.wordsAsFloat32Array();
for (i = 0; i <= (length - 1); i++) {
floatRcvr = floatsRcvr[i];
floatResult = floatRcvr / intArg;
floatResult = Math.floor(floatResult);
floatsResult[i] = (floatRcvr - (floatResult * intArg));
}
} else {
floatsRcvr = rcvrOop.wordsAsFloat32Array();
floatArg = interpreterProxy.floatValueOf(argOop);
floatsResult = resultOop.wordsAsFloat32Array();
for (i = 0; i <= (length - 1); i++) {
floatRcvr = floatsRcvr[i];
floatResult = floatRcvr / floatArg;
floatResult = Math.floor(floatResult);
floatsResult[i] = (floatRcvr - (floatResult * floatArg));
}
}
}
interpreterProxy.pop(4);
interpreterProxy.push(resultOop);
}
function primitiveSubArrays() {
var argOop;
var floatsArg;
var floatsRcvr;
var floatsResult;
var i;
var isArgWords;
var isRcvrWords;
var length;
var rcvrOop;
var resultOop;
var wordsArg;
var wordsRcvr;
var wordsResult;
/* inline: true */;
resultOop = interpreterProxy.stackObjectValue(0);
argOop = interpreterProxy.stackObjectValue(1);
rcvrOop = interpreterProxy.stackObjectValue(2);
if (interpreterProxy.failed()) {
return null;
}
interpreterProxy.success(interpreterProxy.isWords(argOop));
interpreterProxy.success(interpreterProxy.isWords(rcvrOop));
interpreterProxy.success(interpreterProxy.isWords(resultOop));
if (interpreterProxy.failed()) {
return null;
}
length = SIZEOF(argOop);
interpreterProxy.success(length === SIZEOF(rcvrOop));
interpreterProxy.success(length === SIZEOF(resultOop));
if (interpreterProxy.failed()) {
return null;
}
isArgWords = interpreterProxy.isMemberOf(argOop, "WordArray");
isRcvrWords = interpreterProxy.isMemberOf(rcvrOop, "WordArray");
if (isArgWords && isRcvrWords) {
if (!interpreterProxy.isMemberOf(resultOop, "WordArray")) {
interpreterProxy.primitiveFail();
return null;
}
} else {
if (!interpreterProxy.isMemberOf(resultOop, "KedamaFloatArray")) {
interpreterProxy.primitiveFail();
return null;
}
}
if (isRcvrWords) {
if (isArgWords) {
wordsRcvr = rcvrOop.words;
wordsArg = argOop.words;
wordsResult = resultOop.words;
for (i = 0; i <= (length - 1); i++) {
wordsResult[i] = (wordsRcvr[i] - wordsArg[i]);
}
} else {
wordsRcvr = rcvrOop.words;
floatsArg = argOop.wordsAsFloat32Array();
floatsResult = resultOop.wordsAsFloat32Array();
for (i = 0; i <= (length - 1); i++) {
floatsResult[i] = (wordsRcvr[i] - floatsArg[i]);
}
}
} else {
if (isArgWords) {
floatsRcvr = rcvrOop.wordsAsFloat32Array();
wordsArg = argOop.words;
floatsResult = resultOop.wordsAsFloat32Array();
for (i = 0; i <= (length - 1); i++) {
floatsResult[i] = (floatsRcvr[i] - wordsArg[i]);
}
} else {
floatsRcvr = rcvrOop.wordsAsFloat32Array();
floatsArg = argOop.wordsAsFloat32Array();
floatsResult = resultOop.wordsAsFloat32Array();
for (i = 0; i <= (length - 1); i++) {
floatsResult[i] = (floatsRcvr[i] - floatsArg[i]);
}
}
}
interpreterProxy.pop(4);
interpreterProxy.push(resultOop);
}
function primitiveSubScalar() {
var argOop;
var floatArg;
var floatsRcvr;
var floatsResult;
var i;
var intArg;
var isArgInt;
var isRcvrWords;
var length;
var rcvrOop;
var resultOop;
var wordsRcvr;
var wordsResult;
/* inline: true */;
resultOop = interpreterProxy.stackObjectValue(0);
argOop = interpreterProxy.stackValue(1);
rcvrOop = interpreterProxy.stackObjectValue(2);
if (interpreterProxy.failed()) {
return null;
}
interpreterProxy.success(interpreterProxy.isWords(rcvrOop));
interpreterProxy.success(interpreterProxy.isWords(resultOop));
if (interpreterProxy.failed()) {
return null;
}
length = SIZEOF(rcvrOop);
interpreterProxy.success(length === SIZEOF(resultOop));
if (interpreterProxy.failed()) {
return null;
}
isArgInt = typeof argOop === "number";
isRcvrWords = interpreterProxy.isMemberOf(rcvrOop, "WordArray");
if (isArgInt && isRcvrWords) {
if (!interpreterProxy.isMemberOf(resultOop, "WordArray")) {
interpreterProxy.primitiveFail();
return null;
}
} else {
if (!interpreterProxy.isMemberOf(resultOop, "KedamaFloatArray")) {
interpreterProxy.primitiveFail();
return null;
}
}
if (isRcvrWords) {
if (isArgInt) {
wordsRcvr = rcvrOop.words;
intArg = argOop;
wordsResult = resultOop.words;
for (i = 0; i <= (length - 1); i++) {
wordsResult[i] = (wordsRcvr[i] - intArg);
}
} else {
wordsRcvr = rcvrOop.words;
floatArg = interpreterProxy.floatValueOf(argOop);
floatsResult = resultOop.wordsAsFloat32Array();
for (i = 0; i <= (length - 1); i++) {
floatsResult[i] = (wordsRcvr[i] - floatArg);
}
}
} else {
if (isArgInt) {
floatsRcvr = rcvrOop.wordsAsFloat32Array();
intArg = argOop;
floatsResult = resultOop.wordsAsFloat32Array();
for (i = 0; i <= (length - 1); i++) {
floatsResult[i] = (floatsRcvr[i] - intArg);
}
} else {
floatsRcvr = rcvrOop.wordsAsFloat32Array();
floatArg = interpreterProxy.floatValueOf(argOop);
floatsResult = resultOop.wordsAsFloat32Array();
for (i = 0; i <= (length - 1); i++) {
floatsResult[i] = (floatsRcvr[i] - floatArg);
}
}
}
interpreterProxy.pop(4);
interpreterProxy.push(resultOop);
}
function radiansToDegrees(radians) {
var deg;
var degrees;
/* inline: true */;
degrees = radians / 0.0174532925199433;
deg = 90.0 - degrees;
if (!(deg > 0.0)) {
deg += 360.0;
}
return deg;
}
function randomIntoFloatArray() {
var factor;
var floatArray;
var floatArrayOop;
var from;
var index;
var range;
var size;
var to;
/* inline: true */;
factor = interpreterProxy.stackFloatValue(0);
floatArrayOop = interpreterProxy.stackValue(1);
to = interpreterProxy.stackIntegerValue(2);
from = interpreterProxy.stackIntegerValue(3);
range = interpreterProxy.stackIntegerValue(4);
if (interpreterProxy.failed()) {
return null;
}
if (!interpreterProxy.isWords(floatArrayOop)) {
interpreterProxy.primitiveFail();
return null;
}
size = SIZEOF(floatArrayOop);
if (!((size >= to) && ((from >= 1) && (to >= from)))) {
interpreterProxy.primitiveFail();
return null;
}
floatArray = floatArrayOop.wordsAsFloat32Array();
if (interpreterProxy.failed()) {
return null;
}
for (index = from; index <= to; index++) {
floatArray[index - 1] = (kedamaRandom2(range) * factor);
}
interpreterProxy.pop(5);
}
function randomIntoIntegerArray() {
var factor;
var from;
var index;
var integerArray;
var integerArrayOop;
var range;
var size;
var to;
/* inline: true */;
factor = interpreterProxy.stackFloatValue(0);
integerArrayOop = interpreterProxy.stackValue(1);
to = interpreterProxy.stackIntegerValue(2);
from = interpreterProxy.stackIntegerValue(3);
range = interpreterProxy.stackIntegerValue(4);
if (interpreterProxy.failed()) {
return null;
}
if (!interpreterProxy.isWords(integerArrayOop)) {
interpreterProxy.primitiveFail();
return null;
}
size = SIZEOF(integerArrayOop);
if (!((size >= to) && ((from >= 1) && (to >= from)))) {
interpreterProxy.primitiveFail();
return null;
}
integerArray = integerArrayOop.words;
if (interpreterProxy.failed()) {
return null;
}
for (index = from; index <= to; index++) {
integerArray[index - 1] = ((kedamaRandom2(range) * factor)|0);
}
interpreterProxy.pop(5);
}
function randomRange() {
var range;
var ret;
/* inline: true */;
range = interpreterProxy.stackIntegerValue(0);
if (interpreterProxy.failed()) {
return null;
}
ret = kedamaRandom2(range);
if (interpreterProxy.failed()) {
return null;
}
interpreterProxy.pop(2);
interpreterProxy.pushInteger(ret);
}
function scalarGetAngleTo() {
var fromX;
var fromY;
var r;
var toX;
var toY;
var x;
var y;
/* inline: true */;
fromY = interpreterProxy.stackFloatValue(0);
fromX = interpreterProxy.stackFloatValue(1);
toY = interpreterProxy.stackFloatValue(2);
toX = interpreterProxy.stackFloatValue(3);
if (interpreterProxy.failed()) {
return null;
}
x = toX - fromX;
y = toY - fromY;
r = degreesFromXy(x, y);
r += 90.0;
if (r > 360.0) {
r -= 360.0;
}
if (interpreterProxy.failed()) {
return null;
}
interpreterProxy.pop(5);
interpreterProxy.pushFloat(r);
}
function scalarGetDistanceTo() {
var fromX;
var fromY;
var r;
var toX;
var toY;
var x;
var y;
/* inline: true */;
fromY = interpreterProxy.stackFloatValue(0);
fromX = interpreterProxy.stackFloatValue(1);
toY = interpreterProxy.stackFloatValue(2);
toX = interpreterProxy.stackFloatValue(3);
if (interpreterProxy.failed()) {
return null;
}
x = fromX - toX;
y = fromY - toY;
r = Math.sqrt((x * x) + (y * y));
if (interpreterProxy.failed()) {
return null;
}
interpreterProxy.pop(5);
interpreterProxy.pushFloat(r);
}
function scalarXAtxArrayheadingArrayvaluedestWidthleftEdgeModerightEdgeMode(index, xArray, headingArray, val, destWidth, leftEdgeMode, rightEdgeMode) {
var headingRadians;
var newX;
/* inline: true */;
newX = val;
if (newX < 0.0) {
if (leftEdgeMode === 1) {
/* wrap */
newX += destWidth;
}
if (leftEdgeMode === 2) {
/* stick */
newX = 0.0;
}
if (leftEdgeMode === 3) {
/* bounce */
newX = 0.0 - newX;
headingRadians = headingArray[index];
if (headingRadians < 3.141592653589793) {
headingArray[index] = (3.141592653589793 - headingRadians);
} else {
headingArray[index] = (9.42477796076938 - headingRadians);
}
}
}
if (newX >= destWidth) {
if (rightEdgeMode === 1) {
newX -= destWidth;
}
if (rightEdgeMode === 2) {
newX = destWidth - 1.0e-6;
}
if (rightEdgeMode === 3) {
newX = (destWidth - 1.0e-6) - (newX - destWidth);
headingRadians = headingArray[index];
if (headingRadians < 3.141592653589793) {
headingArray[index] = (3.141592653589793 - headingRadians);
} else {
headingArray[index] = (9.42477796076938 - headingRadians);
}
}
}
xArray[index] = newX;
}
function scalarYAtyArrayheadingArrayvaluedestHeighttopEdgeModebottomEdgeMode(index, yArray, headingArray, val, destHeight, topEdgeMode, bottomEdgeMode) {
var newY;
/* inline: true */;
newY = val;
if (newY < 0.0) {
if (topEdgeMode === 1) {
/* wrap */
newY += destHeight;
}
if (topEdgeMode === 2) {
/* stick */
newY = 0.0;
}
if (topEdgeMode === 3) {
/* bounce */
newY = 0.0 - newY;
headingArray[index] = (6.283185307179586 - headingArray[index]);
}
}
if (newY >= destHeight) {
if (bottomEdgeMode === 1) {
newY -= destHeight;
}
if (bottomEdgeMode === 2) {
newY = destHeight - 1.0e-6;
}
if (bottomEdgeMode === 3) {
newY = (destHeight - 1.0e-6) - (newY - destHeight);
headingArray[index] = (6.283185307179586 - headingArray[index]);
}
}
yArray[index] = newY;
}
function setHeadingArrayFrom() {
var heading;
var headingArray;
var headingOop;
var i;
var isValVector;
var pArray;
var pOop;
var resultArray;
var resultOop;
var size;
/* inline: true */;
resultOop = interpreterProxy.stackValue(0);
headingOop = interpreterProxy.stackValue(1);
pOop = interpreterProxy.stackValue(2);
if (interpreterProxy.failed()) {
return null;
}
if (!interpreterProxy.isBytes(pOop)) {
interpreterProxy.primitiveFail();
return null;
}
if (!interpreterProxy.isWords(headingOop)) {
interpreterProxy.primitiveFail();
return null;
}
size = SIZEOF(headingOop);
if (resultOop.isFloat) {
isValVector = false;
} else {
if (interpreterProxy.isWords(resultOop)) {
if (SIZEOF(resultOop) !== size) {
interpreterProxy.primitiveFail();
return null;
}
isValVector = true;
} else {
interpreterProxy.primitiveFail();
return null;
}
}
pArray = pOop.bytes;
headingArray = headingOop.wordsAsFloat32Array();
if (isValVector) {
resultArray = resultOop.wordsAsFloat32Array();
} else {
heading = interpreterProxy.floatValueOf(resultOop);
heading = degreesToRadians(heading);
}
for (i = 0; i <= (size - 1); i++) {
if (pArray[i] === 1) {
if (isValVector) {
heading = resultArray[i];
heading = degreesToRadians(heading);
}
headingArray[i] = heading;
}
}
if (interpreterProxy.failed()) {
return null;
}
interpreterProxy.pop(3);
}
/* Note: This is coded so that is can be run from Squeak. */
function setInterpreter(anInterpreter) {
var ok;
interpreterProxy = anInterpreter;
ok = interpreterProxy.majorVersion() == VM_PROXY_MAJOR;
if (ok === false) {
return false;
}
ok = interpreterProxy.minorVersion() >= VM_PROXY_MINOR;
return ok;
}
function setScalarHeading() {
var heading;
var headingArray;
var headingOop;
var index;
/* inline: true */;
heading = interpreterProxy.stackFloatValue(0);
headingOop = interpreterProxy.stackValue(1);
index = interpreterProxy.stackIntegerValue(2);
if (interpreterProxy.failed()) {
return null;
}
if (!interpreterProxy.isWords(headingOop)) {
interpreterProxy.primitiveFail();
return null;
}
if (SIZEOF(headingOop) < index) {
interpreterProxy.primitiveFail();
return null;
}
headingArray = headingOop.wordsAsFloat32Array();
headingArray[index - 1] = degreesToRadians(heading);
if (interpreterProxy.failed()) {
return null;
}
interpreterProxy.pop(3);
}
function shutdownModule() {
return true;
}
function turtleScalarSetX() {
var destWidth;
var headingArray;
var headingOop;
var leftEdgeMode;
var rightEdgeMode;
var size;
var val;
var xArray;
var xIndex;
var xOop;
/* inline: true */;
rightEdgeMode = interpreterProxy.stackIntegerValue(0);
leftEdgeMode = interpreterProxy.stackIntegerValue(1);
destWidth = interpreterProxy.stackFloatValue(2);
val = interpreterProxy.stackFloatValue(3);
headingOop = interpreterProxy.stackValue(4);
xIndex = interpreterProxy.stackIntegerValue(5);
xOop = interpreterProxy.stackValue(6);
if (interpreterProxy.failed()) {
return null;
}
if (!interpreterProxy.isWords(xOop)) {
interpreterProxy.primitiveFail();
return null;
}
if (!interpreterProxy.isWords(headingOop)) {
interpreterProxy.primitiveFail();
return null;
}
size = SIZEOF(xOop);
if (SIZEOF(headingOop) !== size) {
interpreterProxy.primitiveFail();
return null;
}
xArray = xOop.wordsAsFloat32Array();
headingArray = headingOop.wordsAsFloat32Array();
scalarXAtxArrayheadingArrayvaluedestWidthleftEdgeModerightEdgeMode(xIndex - 1, xArray, headingArray, val, destWidth, leftEdgeMode, rightEdgeMode);
if (interpreterProxy.failed()) {
return null;
}
interpreterProxy.pop(7);
}
function turtleScalarSetY() {
var bottomEdgeMode;
var destHeight;
var headingArray;
var headingOop;
var size;
var topEdgeMode;
var val;
var yArray;
var yIndex;
var yOop;
/* inline: true */;
bottomEdgeMode = interpreterProxy.stackIntegerValue(0);
topEdgeMode = interpreterProxy.stackIntegerValue(1);
destHeight = interpreterProxy.stackFloatValue(2);
val = interpreterProxy.stackFloatValue(3);
headingOop = interpreterProxy.stackValue(4);
yIndex = interpreterProxy.stackIntegerValue(5);
yOop = interpreterProxy.stackValue(6);
if (interpreterProxy.failed()) {
return null;
}
if (!interpreterProxy.isWords(yOop)) {
interpreterProxy.primitiveFail();
return null;
}
if (!interpreterProxy.isWords(headingOop)) {
interpreterProxy.primitiveFail();
return null;
}
size = SIZEOF(yOop);
if (SIZEOF(headingOop) !== size) {
interpreterProxy.primitiveFail();
return null;
}
yArray = yOop.wordsAsFloat32Array();
headingArray = headingOop.wordsAsFloat32Array();
scalarYAtyArrayheadingArrayvaluedestHeighttopEdgeModebottomEdgeMode(yIndex - 1, yArray, headingArray, val, destHeight, topEdgeMode, bottomEdgeMode);
if (interpreterProxy.failed()) {
return null;
}
interpreterProxy.pop(7);
}
function turtlesSetX() {
var destWidth;
var headingArray;
var headingOop;
var i;
var isValVector;
var isWordVector;
var leftEdgeMode;
var newX;
var pArray;
var pOop;
var rightEdgeMode;
var size;
var val;
var valArray;
var valOop;
var wordValArray;
var xArray;
var xOop;
/* inline: true */;
rightEdgeMode = interpreterProxy.stackIntegerValue(0);
leftEdgeMode = interpreterProxy.stackIntegerValue(1);
destWidth = interpreterProxy.stackFloatValue(2);
valOop = interpreterProxy.stackValue(3);
headingOop = interpreterProxy.stackValue(4);
xOop = interpreterProxy.stackValue(5);
pOop = interpreterProxy.stackValue(6);
if (interpreterProxy.failed()) {
return null;
}
if (!interpreterProxy.isBytes(pOop)) {
interpreterProxy.primitiveFail();
return null;
}
if (!interpreterProxy.isWords(xOop)) {
interpreterProxy.primitiveFail();
return null;
}
if (!interpreterProxy.isWords(headingOop)) {
interpreterProxy.primitiveFail();
return null;
}
if (valOop.isFloat) {
isValVector = false;
} else {
if (interpreterProxy.isWords(valOop)) {
isValVector = true;
isWordVector = interpreterProxy.isMemberOf(valOop, "WordArray");
} else {
interpreterProxy.primitiveFail();
return null;
}
}
size = SIZEOF(xOop);
if (SIZEOF(pOop) !== size) {
interpreterProxy.primitiveFail();
return null;
}
if (SIZEOF(headingOop) !== size) {
interpreterProxy.primitiveFail();
return null;
}
if (isValVector) {
if (SIZEOF(valOop) !== size) {
interpreterProxy.primitiveFail();
return null;
}
}
pArray = pOop.bytes;
xArray = xOop.wordsAsFloat32Array();
headingArray = headingOop.wordsAsFloat32Array();
if (isValVector) {
if (isWordVector) {
wordValArray = valOop.words;
} else {
valArray = valOop.wordsAsFloat32Array();
}
} else {
val = interpreterProxy.floatValueOf(valOop);
}
for (i = 0; i <= (size - 1); i++) {
if (pArray[i] === 1) {
if (isValVector) {
if (isWordVector) {
newX = wordValArray[i];
;
} else {
newX = valArray[i];
}
} else {
newX = val;
}
scalarXAtxArrayheadingArrayvaluedestWidthleftEdgeModerightEdgeMode(i, xArray, headingArray, newX, destWidth, leftEdgeMode, rightEdgeMode);
}
}
if (interpreterProxy.failed()) {
return null;
}
interpreterProxy.pop(7);
}
function turtlesSetY() {
var bottomEdgeMode;
var destHeight;
var headingArray;
var headingOop;
var i;
var isValVector;
var isWordVector;
var newY;
var pArray;
var pOop;
var size;
var topEdgeMode;
var val;
var valArray;
var valOop;
var wordValArray;
var yArray;
var yOop;
/* inline: true */;
bottomEdgeMode = interpreterProxy.stackIntegerValue(0);
topEdgeMode = interpreterProxy.stackIntegerValue(1);
destHeight = interpreterProxy.stackFloatValue(2);
valOop = interpreterProxy.stackValue(3);
headingOop = interpreterProxy.stackValue(4);
yOop = interpreterProxy.stackValue(5);
pOop = interpreterProxy.stackValue(6);
if (interpreterProxy.failed()) {
return null;
}
if (!interpreterProxy.isBytes(pOop)) {
interpreterProxy.primitiveFail();
return null;
}
if (!interpreterProxy.isWords(yOop)) {
interpreterProxy.primitiveFail();
return null;
}
if (!interpreterProxy.isWords(headingOop)) {
interpreterProxy.primitiveFail();
return null;
}
if (valOop.isFloat) {
isValVector = false;
} else {
if (interpreterProxy.isWords(valOop)) {
isValVector = true;
isWordVector = interpreterProxy.isMemberOf(valOop, "WordArray");
} else {
interpreterProxy.primitiveFail();
return null;
}
}
size = SIZEOF(yOop);
if (SIZEOF(pOop) !== size) {
interpreterProxy.primitiveFail();
return null;
}
if (SIZEOF(headingOop) !== size) {
interpreterProxy.primitiveFail();
return null;
}
if (isValVector) {
if (SIZEOF(valOop) !== size) {
interpreterProxy.primitiveFail();
return null;
}
}
pArray = pOop.bytes;
yArray = yOop.wordsAsFloat32Array();
headingArray = headingOop.wordsAsFloat32Array();
if (isValVector) {
if (isWordVector) {
wordValArray = valOop.words;
} else {
valArray = valOop.wordsAsFloat32Array();
}
} else {
val = interpreterProxy.floatValueOf(valOop);
}
for (i = 0; i <= (size - 1); i++) {
if (pArray[i] === 1) {
if (isValVector) {
if (isWordVector) {
newY = wordValArray[i];
;
} else {
newY = valArray[i];
}
} else {
newY = val;
}
scalarYAtyArrayheadingArrayvaluedestHeighttopEdgeModebottomEdgeMode(i, yArray, headingArray, newY, destHeight, topEdgeMode, bottomEdgeMode);
}
}
if (interpreterProxy.failed()) {
return null;
}
interpreterProxy.pop(7);
}
function vectorGetAngleTo() {
var index;
var isVector;
var pX;
var pXOop;
var pY;
var pYOop;
var ppx;
var ppy;
var r;
var result;
var resultOop;
var size;
var x;
var xArray;
var xArrayOop;
var y;
var yArray;
var yArrayOop;
/* inline: true */;
resultOop = interpreterProxy.stackValue(0);
yArrayOop = interpreterProxy.stackValue(1);
xArrayOop = interpreterProxy.stackValue(2);
pYOop = interpreterProxy.stackValue(3);
pXOop = interpreterProxy.stackValue(4);
if (interpreterProxy.failed()) {
return null;
}
if (!interpreterProxy.isWords(resultOop)) {
interpreterProxy.primitiveFail();
return null;
}
if (!interpreterProxy.isWords(xArrayOop)) {
interpreterProxy.primitiveFail();
return null;
}
if (!interpreterProxy.isWords(yArrayOop)) {
interpreterProxy.primitiveFail();
return null;
}
size = SIZEOF(resultOop);
if (size < 0) {
interpreterProxy.primitiveFail();
return null;
}
if (SIZEOF(xArrayOop) !== size) {
interpreterProxy.primitiveFail();
return null;
}
if (SIZEOF(yArrayOop) !== size) {
interpreterProxy.primitiveFail();
return null;
}
if (pXOop.isFloat) {
if (pYOop.isFloat) {
isVector = false;
} else {
interpreterProxy.primitiveFail();
return null;
}
} else {
if (pYOop.isFloat) {
interpreterProxy.primitiveFail();
return null;
} else {
isVector = true;
}
}
if (isVector) {
if (SIZEOF(pXOop) !== size) {
interpreterProxy.primitiveFail();
return null;
}
if (SIZEOF(pYOop) !== size) {
interpreterProxy.primitiveFail();
return null;
}
}
result = resultOop.wordsAsFloat32Array();
xArray = xArrayOop.wordsAsFloat32Array();
yArray = yArrayOop.wordsAsFloat32Array();
if (isVector) {
pX = pXOop.wordsAsFloat32Array();
pY = pYOop.wordsAsFloat32Array();
}
if (!isVector) {
ppx = interpreterProxy.floatValueOf(pXOop);
ppy = interpreterProxy.floatValueOf(pYOop);
}
for (index = 0; index <= (size - 1); index++) {
if (isVector) {
ppx = pX[index];
ppy = pY[index];
}
x = ppx - xArray[index];
y = ppy - yArray[index];
r = degreesFromXy(x, y);
r += 90.0;
if (r > 360.0) {
r -= 360.0;
}
result[index] = r;
}
if (interpreterProxy.failed()) {
return null;
}
interpreterProxy.pop(6);
interpreterProxy.push(resultOop);
}
function vectorGetDistanceTo() {
var index;
var isVector;
var pX;
var pXOop;
var pY;
var pYOop;
var ppx;
var ppy;
var result;
var resultOop;
var size;
var x;
var xArray;
var xArrayOop;
var y;
var yArray;
var yArrayOop;
/* inline: true */;
resultOop = interpreterProxy.stackValue(0);
yArrayOop = interpreterProxy.stackValue(1);
xArrayOop = interpreterProxy.stackValue(2);
pYOop = interpreterProxy.stackValue(3);
pXOop = interpreterProxy.stackValue(4);
if (interpreterProxy.failed()) {
return null;
}
if (!interpreterProxy.isWords(resultOop)) {
interpreterProxy.primitiveFail();
return null;
}
if (!interpreterProxy.isWords(xArrayOop)) {
interpreterProxy.primitiveFail();
return null;
}
if (!interpreterProxy.isWords(yArrayOop)) {
interpreterProxy.primitiveFail();
return null;
}
size = SIZEOF(resultOop);
if (size < 0) {
interpreterProxy.primitiveFail();
return null;
}
if (SIZEOF(xArrayOop) !== size) {
interpreterProxy.primitiveFail();
return null;
}
if (SIZEOF(yArrayOop) !== size) {
interpreterProxy.primitiveFail();
return null;
}
if (pXOop.isFloat) {
if (pYOop.isFloat) {
isVector = false;
} else {
interpreterProxy.primitiveFail();
return null;
}
} else {
if (pYOop.isFloat) {
interpreterProxy.primitiveFail();
return null;
} else {
isVector = true;
}
}
if (isVector) {
if (SIZEOF(pXOop) !== size) {
interpreterProxy.primitiveFail();
return null;
}
if (SIZEOF(pYOop) !== size) {
interpreterProxy.primitiveFail();
return null;
}
}
result = resultOop.wordsAsFloat32Array();
xArray = xArrayOop.wordsAsFloat32Array();
yArray = yArrayOop.wordsAsFloat32Array();
if (isVector) {
pX = pXOop.wordsAsFloat32Array();
pY = pYOop.wordsAsFloat32Array();
}
if (!isVector) {
ppx = interpreterProxy.floatValueOf(pXOop);
ppy = interpreterProxy.floatValueOf(pYOop);
}
for (index = 0; index <= (size - 1); index++) {
if (isVector) {
ppx = pX[index];
ppy = pY[index];
}
x = ppx - xArray[index];
y = ppy - yArray[index];
result[index] = Math.sqrt((x * x) + (y * y));
}
if (interpreterProxy.failed()) {
return null;
}
interpreterProxy.pop(6);
interpreterProxy.push(resultOop);
}
function zoomBitmap() {
var bit;
var dOrigin;
var dst;
var dstIndex;
var dstSize;
var dummy;
var sHeight;
var sOrigin;
var sWidth;
var src;
var srcIndex;
var srcOrigin;
var srcSize;
var sx;
var sy;
var xFactor;
var y;
var yFactor;
/* inline: true */;
yFactor = interpreterProxy.stackIntegerValue(0);
xFactor = interpreterProxy.stackIntegerValue(1);
sHeight = interpreterProxy.stackIntegerValue(2);
sWidth = interpreterProxy.stackIntegerValue(3);
dst = interpreterProxy.stackValue(4);
src = interpreterProxy.stackValue(5);
if (interpreterProxy.failed()) {
return null;
}
srcSize = SIZEOF(src);
dstSize = SIZEOF(dst);
if ((sWidth * sHeight) !== srcSize) {
interpreterProxy.primitiveFail();
return null;
}
if (((srcSize * xFactor) * yFactor) !== dstSize) {
interpreterProxy.primitiveFail();
return null;
}
sOrigin = src.words;
dOrigin = dst.words;
srcIndex = 0;
srcOrigin = 0;
dstIndex = 0;
for (sy = 0; sy <= (sHeight - 1); sy++) {
for (y = 0; y <= (yFactor - 1); y++) {
for (sx = 0; sx <= (sWidth - 1); sx++) {
bit = sOrigin[srcIndex];
++srcIndex;
for (dummy = 0; dummy <= (xFactor - 1); dummy++) {
dOrigin[dstIndex] = bit;
++dstIndex;
}
}
srcIndex = srcOrigin;
}
srcOrigin += sWidth;
srcIndex = srcOrigin;
}
interpreterProxy.pop(6);
}
function registerPlugin() {
if (typeof Squeak === "object" && Squeak.registerExternalModule) {
Squeak.registerExternalModule("KedamaPlugin2", {
primitiveAddArrays: primitiveAddArrays,
getModuleName: getModuleName,
primitiveMulArrays: primitiveMulArrays,
drawTurtlesInArray: drawTurtlesInArray,
primitiveGTScalar: primitiveGTScalar,
setScalarHeading: setScalarHeading,
primitiveSubScalar: primitiveSubScalar,
turtleScalarSetY: turtleScalarSetY,
vectorGetAngleTo: vectorGetAngleTo,
primitiveRemArrays: primitiveRemArrays,
primitiveLTArrays: primitiveLTArrays,
primitiveAddScalar: primitiveAddScalar,
primPixelsAtXY: primPixelsAtXY,
primitiveMulScalar: primitiveMulScalar,
primSetPixelsAtXY: primSetPixelsAtXY,
setHeadingArrayFrom: setHeadingArrayFrom,
primPixelAtXYPut: primPixelAtXYPut,
makeMaskLog: makeMaskLog,
primitiveLTScalar: primitiveLTScalar,
scalarGetAngleTo: scalarGetAngleTo,
primitiveOrByteArray: primitiveOrByteArray,
primitiveLEArrays: primitiveLEArrays,
primitiveRemScalar: primitiveRemScalar,
getHeadingArrayInto: getHeadingArrayInto,
turtlesSetX: turtlesSetX,
primitivePredicateReplaceBytes: primitivePredicateReplaceBytes,
primitiveDivArrays: primitiveDivArrays,
makeMask: makeMask,
primitiveLEScalar: primitiveLEScalar,
kedamaSetRandomSeed: kedamaSetRandomSeed,
randomIntoIntegerArray: randomIntoIntegerArray,
setInterpreter: setInterpreter,
primitivePredicateAtAllPutColor: primitivePredicateAtAllPutColor,
makeTurtlesMap: makeTurtlesMap,
randomIntoFloatArray: randomIntoFloatArray,
primUpHill: primUpHill,
shutdownModule: shutdownModule,
primitiveDivScalar: primitiveDivScalar,
primitiveGEArrays: primitiveGEArrays,
primitiveNotByteArray: primitiveNotByteArray,
randomRange: randomRange,
initialiseModule: initialiseModule,
getScalarHeading: getScalarHeading,
primPixelAtXY: primPixelAtXY,
primitivePredicateAtAllPutNumber: primitivePredicateAtAllPutNumber,
primitiveEQArrays: primitiveEQArrays,
primitiveNEArrays: primitiveNEArrays,
primScalarForward: primScalarForward,
vectorGetDistanceTo: vectorGetDistanceTo,
turtlesSetY: turtlesSetY,
turtleScalarSetX: turtleScalarSetX,
primTurtlesForward: primTurtlesForward,
primitiveGEScalar: primitiveGEScalar,
primitiveAndByteArray: primitiveAndByteArray,
primitivePredicateReplaceWords: primitivePredicateReplaceWords,
primitiveGTArrays: primitiveGTArrays,
primitivePredicateAtAllPutObject: primitivePredicateAtAllPutObject,
primitiveEQScalar: primitiveEQScalar,
primitivePredicateAtAllPutBoolean: primitivePredicateAtAllPutBoolean,
zoomBitmap: zoomBitmap,
primitiveNEScalar: primitiveNEScalar,
scalarGetDistanceTo: scalarGetDistanceTo,
primitiveSubArrays: primitiveSubArrays,
});
} else self.setTimeout(registerPlugin, 100);
}
registerPlugin();
})(); // Register module/plugin