aboutsummaryrefslogtreecommitdiff
path: root/node_modules/pako/lib/zlib/crc32.js
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/pako/lib/zlib/crc32.js')
-rw-r--r--node_modules/pako/lib/zlib/crc32.js41
1 files changed, 41 insertions, 0 deletions
diff --git a/node_modules/pako/lib/zlib/crc32.js b/node_modules/pako/lib/zlib/crc32.js
new file mode 100644
index 000000000..0768b1c3d
--- /dev/null
+++ b/node_modules/pako/lib/zlib/crc32.js
@@ -0,0 +1,41 @@
+'use strict';
+
+// Note: we can't get significant speed boost here.
+// So write code to minimize size - no pregenerated tables
+// and array tools dependencies.
+
+
+// Use ordinary array, since untyped makes no boost here
+function makeTable() {
+ var c, table = [];
+
+ for (var n = 0; n < 256; n++) {
+ c = n;
+ for (var k = 0; k < 8; k++) {
+ c = ((c & 1) ? (0xEDB88320 ^ (c >>> 1)) : (c >>> 1));
+ }
+ table[n] = c;
+ }
+
+ return table;
+}
+
+// Create table on load. Just 255 signed longs. Not a problem.
+var crcTable = makeTable();
+
+
+function crc32(crc, buf, len, pos) {
+ var t = crcTable,
+ end = pos + len;
+
+ crc ^= -1;
+
+ for (var i = pos; i < end; i++) {
+ crc = (crc >>> 8) ^ t[(crc ^ buf[i]) & 0xFF];
+ }
+
+ return (crc ^ (-1)); // >>> 0;
+}
+
+
+module.exports = crc32;