/
lib.js
85 lines (79 loc) · 2.31 KB
/
lib.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
/*global mergeInto, HEAPU8, Module, LibraryManager */
mergeInto(LibraryManager.library,
{
databack: function(data)
{
function pointerStringify(offset)
{
let charCache = new Array(128); // Preallocate the cache for the common single byte chars
let charFromCodePt = String.fromCodePoint || String.fromCharCode;
let result = [];
let codePt, byte1;
result.length = 0;
while (HEAPU8[offset >> 0] !== 0)
{
byte1 = HEAPU8[(offset++) >> 0];
if (byte1 <= 0x7F)
{
codePt = byte1;
}
else if (byte1 <= 0xDF)
{
codePt = ((byte1 & 0x1F) << 6) | (HEAPU8[(offset++) >> 0] & 0x3F);
}
result.push(charCache[codePt >> 0] || (charCache[codePt >> 0] = charFromCodePt(codePt)));
}
return result.join("");
}
self.postMessage(pointerStringify(data));
},
stamp: function()
{
return Math.floor(new Date().getTime() / 1000);
},
tenths: function()
{
return Math.floor(new Date().getTime() / 100);
},
startSkipTest: function()
{
self.postMessage("51"); // Show Skip Test button on screen
},
endSkipTest: function()
{
self.postMessage("52"); // Hide Skip Test button from screen
},
getCunn: function(data)
{
function pointerStringify(offset)
{
let charCache = new Array(128); // Preallocate the cache for the common single byte chars
let charFromCodePt = String.fromCodePoint || String.fromCharCode;
let result = [];
let codePt, byte1;
result.length = 0;
while (HEAPU8[offset >> 0] !== 0)
{
byte1 = HEAPU8[(offset++) >> 0];
if (byte1 <= 0x7F)
{
codePt = byte1;
}
else if (byte1 <= 0xDF)
{
codePt = ((byte1 & 0x1F) << 6) | (HEAPU8[(offset++) >> 0] & 0x3F);
}
result.push(charCache[codePt >> 0] || (charCache[codePt >> 0] = charFromCodePt(codePt)));
}
return result.join("");
}
let copyString = Module.cwrap("copyString", "number", ["string"]);
let req = new XMLHttpRequest();
req.open("GET", pointerStringify(data), false);
req.send(null);
if (req.status === 200)
{
copyString(req.responseText);
}
}
});