source: trip-planner-front/node_modules/pako/lib/utils/common.js@ b738035

Last change on this file since b738035 was 6a3a178, checked in by Ema <ema_spirova@…>, 3 years ago

initial commit

  • Property mode set to 100644
File size: 2.4 KB
RevLine 
[6a3a178]1'use strict';
2
3
4var TYPED_OK = (typeof Uint8Array !== 'undefined') &&
5 (typeof Uint16Array !== 'undefined') &&
6 (typeof Int32Array !== 'undefined');
7
8function _has(obj, key) {
9 return Object.prototype.hasOwnProperty.call(obj, key);
10}
11
12exports.assign = function (obj /*from1, from2, from3, ...*/) {
13 var sources = Array.prototype.slice.call(arguments, 1);
14 while (sources.length) {
15 var source = sources.shift();
16 if (!source) { continue; }
17
18 if (typeof source !== 'object') {
19 throw new TypeError(source + 'must be non-object');
20 }
21
22 for (var p in source) {
23 if (_has(source, p)) {
24 obj[p] = source[p];
25 }
26 }
27 }
28
29 return obj;
30};
31
32
33// reduce buffer size, avoiding mem copy
34exports.shrinkBuf = function (buf, size) {
35 if (buf.length === size) { return buf; }
36 if (buf.subarray) { return buf.subarray(0, size); }
37 buf.length = size;
38 return buf;
39};
40
41
42var fnTyped = {
43 arraySet: function (dest, src, src_offs, len, dest_offs) {
44 if (src.subarray && dest.subarray) {
45 dest.set(src.subarray(src_offs, src_offs + len), dest_offs);
46 return;
47 }
48 // Fallback to ordinary array
49 for (var i = 0; i < len; i++) {
50 dest[dest_offs + i] = src[src_offs + i];
51 }
52 },
53 // Join array of chunks to single array.
54 flattenChunks: function (chunks) {
55 var i, l, len, pos, chunk, result;
56
57 // calculate data length
58 len = 0;
59 for (i = 0, l = chunks.length; i < l; i++) {
60 len += chunks[i].length;
61 }
62
63 // join chunks
64 result = new Uint8Array(len);
65 pos = 0;
66 for (i = 0, l = chunks.length; i < l; i++) {
67 chunk = chunks[i];
68 result.set(chunk, pos);
69 pos += chunk.length;
70 }
71
72 return result;
73 }
74};
75
76var fnUntyped = {
77 arraySet: function (dest, src, src_offs, len, dest_offs) {
78 for (var i = 0; i < len; i++) {
79 dest[dest_offs + i] = src[src_offs + i];
80 }
81 },
82 // Join array of chunks to single array.
83 flattenChunks: function (chunks) {
84 return [].concat.apply([], chunks);
85 }
86};
87
88
89// Enable/Disable typed arrays use, for testing
90//
91exports.setTyped = function (on) {
92 if (on) {
93 exports.Buf8 = Uint8Array;
94 exports.Buf16 = Uint16Array;
95 exports.Buf32 = Int32Array;
96 exports.assign(exports, fnTyped);
97 } else {
98 exports.Buf8 = Array;
99 exports.Buf16 = Array;
100 exports.Buf32 = Array;
101 exports.assign(exports, fnUntyped);
102 }
103};
104
105exports.setTyped(TYPED_OK);
Note: See TracBrowser for help on using the repository browser.