@blackglory/structures 0.10.19 → 0.10.21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -1
- package/dist/es2015/index.min.mjs +2 -2
- package/dist/es2015/index.min.mjs.map +1 -1
- package/dist/es2015/index.mjs +46 -22
- package/dist/es2015/index.mjs.map +1 -1
- package/dist/es2015/index.umd.js +46 -22
- package/dist/es2015/index.umd.js.map +1 -1
- package/dist/es2015/index.umd.min.js +1 -1
- package/dist/es2015/index.umd.min.js.map +1 -1
- package/dist/es2018/index.min.mjs +2 -2
- package/dist/es2018/index.min.mjs.map +1 -1
- package/dist/es2018/index.mjs +46 -22
- package/dist/es2018/index.mjs.map +1 -1
- package/dist/es2018/index.umd.js +46 -22
- package/dist/es2018/index.umd.js.map +1 -1
- package/dist/es2018/index.umd.min.js +1 -1
- package/dist/es2018/index.umd.min.js.map +1 -1
- package/lib/es2015/bit-set.js +13 -18
- package/lib/es2015/bit-set.js.map +1 -1
- package/lib/es2015/dynamic-typed-array.d.ts +1 -0
- package/lib/es2015/dynamic-typed-array.js +3 -0
- package/lib/es2015/dynamic-typed-array.js.map +1 -1
- package/lib/es2015/typed-bit-set.js +8 -4
- package/lib/es2015/typed-bit-set.js.map +1 -1
- package/lib/es2015/utils/bit-scan.d.ts +1 -0
- package/lib/es2015/utils/bit-scan.js +14 -0
- package/lib/es2015/utils/bit-scan.js.map +1 -0
- package/lib/es2015/utils/trailing-zeros.d.ts +1 -0
- package/lib/es2015/utils/trailing-zeros.js +14 -0
- package/lib/es2015/utils/trailing-zeros.js.map +1 -0
- package/lib/es2018/bit-set.js +13 -18
- package/lib/es2018/bit-set.js.map +1 -1
- package/lib/es2018/dynamic-typed-array.d.ts +1 -0
- package/lib/es2018/dynamic-typed-array.js +3 -0
- package/lib/es2018/dynamic-typed-array.js.map +1 -1
- package/lib/es2018/typed-bit-set.js +8 -4
- package/lib/es2018/typed-bit-set.js.map +1 -1
- package/lib/es2018/utils/bit-scan.d.ts +1 -0
- package/lib/es2018/utils/bit-scan.js +14 -0
- package/lib/es2018/utils/bit-scan.js.map +1 -0
- package/lib/es2018/utils/trailing-zeros.d.ts +1 -0
- package/lib/es2018/utils/trailing-zeros.js +14 -0
- package/lib/es2018/utils/trailing-zeros.js.map +1 -0
- package/package.json +3 -2
package/lib/es2015/bit-set.js
CHANGED
|
@@ -2,12 +2,16 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.BitSet = void 0;
|
|
4
4
|
const errors_1 = require("@blackglory/errors");
|
|
5
|
+
const trailing_zeros_1 = require("./utils/trailing-zeros");
|
|
5
6
|
class BitSet {
|
|
6
|
-
constructor(bitsPerElement =
|
|
7
|
+
constructor(bitsPerElement = 31) {
|
|
7
8
|
this.bitsPerElement = bitsPerElement;
|
|
8
9
|
this.array = [];
|
|
9
10
|
this.length = 0;
|
|
10
11
|
this._size = 0;
|
|
12
|
+
(0, errors_1.assert)(Number.isInteger(bitsPerElement), 'The parameter bitsPerElement must be an integer');
|
|
13
|
+
(0, errors_1.assert)(bitsPerElement > 0, 'The parameter bitsPerElement must be greater than 0');
|
|
14
|
+
(0, errors_1.assert)(bitsPerElement <= 31, 'The mask of bitsPerElement must be less than or equal to 31');
|
|
11
15
|
}
|
|
12
16
|
get [Symbol.toStringTag]() {
|
|
13
17
|
return this.constructor.name;
|
|
@@ -20,26 +24,17 @@ class BitSet {
|
|
|
20
24
|
}
|
|
21
25
|
*values() {
|
|
22
26
|
if (this.length > 0) {
|
|
23
|
-
const maxArrayLength =
|
|
24
|
-
|
|
25
|
-
- (maxArrayLength * this.bitsPerElement - this.length);
|
|
26
|
-
const lastIndex = maxArrayLength - 1;
|
|
27
|
-
for (let index = 0; index < lastIndex; index++) {
|
|
27
|
+
const maxArrayLength = ~~(this.length / this.bitsPerElement) + 1;
|
|
28
|
+
for (let index = 0; index < maxArrayLength; index++) {
|
|
28
29
|
let element = this.array[index];
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
30
|
+
let offset = 0;
|
|
31
|
+
let indexOfBit;
|
|
32
|
+
while ((indexOfBit = (0, trailing_zeros_1.trailingZeros)(element)) !== 32) {
|
|
33
|
+
yield index * this.bitsPerElement + offset + indexOfBit;
|
|
34
|
+
offset += indexOfBit + 1;
|
|
35
|
+
element >>= indexOfBit + 1;
|
|
34
36
|
}
|
|
35
37
|
}
|
|
36
|
-
let lastElement = this.array[maxArrayLength - 1];
|
|
37
|
-
for (let bit = 0; bit < remainder; bit++) {
|
|
38
|
-
if (lastElement & 1) {
|
|
39
|
-
yield lastIndex * this.bitsPerElement + bit;
|
|
40
|
-
}
|
|
41
|
-
lastElement >>= 1;
|
|
42
|
-
}
|
|
43
38
|
}
|
|
44
39
|
}
|
|
45
40
|
_dumpBinaryStrings() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bit-set.js","sourceRoot":"","sources":["../../src/bit-set.ts"],"names":[],"mappings":";;;AAAA,+CAA2C;
|
|
1
|
+
{"version":3,"file":"bit-set.js","sourceRoot":"","sources":["../../src/bit-set.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,6 +10,7 @@ export declare class DynamicTypedArray<T extends TypedArrayConstructor> {
|
|
|
10
10
|
readonly growthFactor: number;
|
|
11
11
|
get internalTypedArray(): TypedArrayOfConstructor<T>;
|
|
12
12
|
get [Symbol.toStringTag](): string;
|
|
13
|
+
get BYTES_PER_ELEMENT(): number;
|
|
13
14
|
get capacity(): number;
|
|
14
15
|
get length(): number;
|
|
15
16
|
constructor(typedArrayConstructor: T, { capacity, growthFactor }?: IDynamicTypedArrayOptions);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dynamic-typed-array.js","sourceRoot":"","sources":["../../src/dynamic-typed-array.ts"],"names":[],"mappings":";;;AACA,+CAA2C;AAQ3C,MAAa,iBAAiB;
|
|
1
|
+
{"version":3,"file":"dynamic-typed-array.js","sourceRoot":"","sources":["../../src/dynamic-typed-array.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,9 +5,13 @@ const errors_1 = require("@blackglory/errors");
|
|
|
5
5
|
class TypedBitSet {
|
|
6
6
|
constructor(array) {
|
|
7
7
|
this.array = array;
|
|
8
|
-
this.bitsPerElement = this.array.internalTypedArray.BYTES_PER_ELEMENT * 8;
|
|
9
8
|
this.length = 0;
|
|
10
9
|
this._size = 0;
|
|
10
|
+
const bitsPerElement = array.BYTES_PER_ELEMENT * 8;
|
|
11
|
+
(0, errors_1.assert)(Number.isInteger(bitsPerElement), 'The parameter bitsPerElement must be an integer');
|
|
12
|
+
(0, errors_1.assert)(bitsPerElement > 0, 'The parameter bitsPerElement must be greater than 0');
|
|
13
|
+
(0, errors_1.assert)(bitsPerElement <= 32, 'The mask of bitsPerElement must be less than or equal to 32');
|
|
14
|
+
this.bitsPerElement = bitsPerElement;
|
|
11
15
|
}
|
|
12
16
|
get [Symbol.toStringTag]() {
|
|
13
17
|
return this.constructor.name;
|
|
@@ -20,14 +24,14 @@ class TypedBitSet {
|
|
|
20
24
|
}
|
|
21
25
|
*values() {
|
|
22
26
|
if (this.length > 0) {
|
|
23
|
-
const maxArrayLength =
|
|
27
|
+
const maxArrayLength = ~~(this.length / this.bitsPerElement) + 1;
|
|
24
28
|
const remainder = this.bitsPerElement
|
|
25
29
|
- (maxArrayLength * this.bitsPerElement - this.length);
|
|
26
30
|
const lastIndex = maxArrayLength - 1;
|
|
27
31
|
for (let index = 0; index < lastIndex; index++) {
|
|
28
32
|
let element = this.array.internalTypedArray[index];
|
|
29
33
|
for (let bit = 0; bit < this.bitsPerElement; bit++) {
|
|
30
|
-
if (element
|
|
34
|
+
if (element % 2) {
|
|
31
35
|
yield index * this.bitsPerElement + bit;
|
|
32
36
|
}
|
|
33
37
|
element >>= 1;
|
|
@@ -35,7 +39,7 @@ class TypedBitSet {
|
|
|
35
39
|
}
|
|
36
40
|
let lastElement = this.array.internalTypedArray[maxArrayLength - 1];
|
|
37
41
|
for (let bit = 0; bit < remainder; bit++) {
|
|
38
|
-
if (lastElement
|
|
42
|
+
if (lastElement % 2) {
|
|
39
43
|
yield lastIndex * this.bitsPerElement + bit;
|
|
40
44
|
}
|
|
41
45
|
lastElement >>= 1;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"typed-bit-set.js","sourceRoot":"","sources":["../../src/typed-bit-set.ts"],"names":[],"mappings":";;;AAEA,+CAA2C;AAE3C,MAAa,WAAW;IAKtB,YAAoB,KAA2B;QAA3B,UAAK,GAAL,KAAK,CAAsB;
|
|
1
|
+
{"version":3,"file":"typed-bit-set.js","sourceRoot":"","sources":["../../src/typed-bit-set.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function bitScan(value: number): number;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.bitScan = void 0;
|
|
4
|
+
const mod37BitPositions = [
|
|
5
|
+
32, 0, 1, 26, 2, 23, 27, 0, 3, 16,
|
|
6
|
+
24, 30, 28, 11, 0, 13, 4, 7, 17, 0,
|
|
7
|
+
25, 22, 31, 15, 29, 10, 12, 6, 0, 21,
|
|
8
|
+
14, 9, 5, 20, 8, 19, 18
|
|
9
|
+
];
|
|
10
|
+
function bitScan(value) {
|
|
11
|
+
return mod37BitPositions[(-value & value) % 37];
|
|
12
|
+
}
|
|
13
|
+
exports.bitScan = bitScan;
|
|
14
|
+
//# sourceMappingURL=bit-scan.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bit-scan.js","sourceRoot":"","sources":["../../../src/utils/bit-scan.ts"],"names":[],"mappings":";;;AAAA,MAAM,iBAAiB,GAAa;IAClC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE;IACjC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC;IAClC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE;IACpC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE;CACxB,CAAA;AAGD,SAAgB,OAAO,CAAC,KAAa;IACnC,OAAO,iBAAiB,CAAC,CAAC,CAAC,KAAK,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,CAAA;AACjD,CAAC;AAFD,0BAEC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function trailingZeros(value: number): number;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.trailingZeros = void 0;
|
|
4
|
+
const mod37BitPositions = [
|
|
5
|
+
32, 0, 1, 26, 2, 23, 27, 0, 3, 16,
|
|
6
|
+
24, 30, 28, 11, 0, 13, 4, 7, 17, 0,
|
|
7
|
+
25, 22, 31, 15, 29, 10, 12, 6, 0, 21,
|
|
8
|
+
14, 9, 5, 20, 8, 19, 18
|
|
9
|
+
];
|
|
10
|
+
function trailingZeros(value) {
|
|
11
|
+
return mod37BitPositions[(-value & value) % 37];
|
|
12
|
+
}
|
|
13
|
+
exports.trailingZeros = trailingZeros;
|
|
14
|
+
//# sourceMappingURL=trailing-zeros.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"trailing-zeros.js","sourceRoot":"","sources":["../../../src/utils/trailing-zeros.ts"],"names":[],"mappings":";;;AACA,MAAM,iBAAiB,GAAa;IAClC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE;IACjC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC;IAClC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE;IACpC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE;CACxB,CAAA;AAMD,SAAgB,aAAa,CAAC,KAAa;IACzC,OAAO,iBAAiB,CAAC,CAAC,CAAC,KAAK,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,CAAA;AACjD,CAAC;AAFD,sCAEC"}
|
package/lib/es2018/bit-set.js
CHANGED
|
@@ -2,12 +2,16 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.BitSet = void 0;
|
|
4
4
|
const errors_1 = require("@blackglory/errors");
|
|
5
|
+
const trailing_zeros_1 = require("./utils/trailing-zeros");
|
|
5
6
|
class BitSet {
|
|
6
|
-
constructor(bitsPerElement =
|
|
7
|
+
constructor(bitsPerElement = 31) {
|
|
7
8
|
this.bitsPerElement = bitsPerElement;
|
|
8
9
|
this.array = [];
|
|
9
10
|
this.length = 0;
|
|
10
11
|
this._size = 0;
|
|
12
|
+
(0, errors_1.assert)(Number.isInteger(bitsPerElement), 'The parameter bitsPerElement must be an integer');
|
|
13
|
+
(0, errors_1.assert)(bitsPerElement > 0, 'The parameter bitsPerElement must be greater than 0');
|
|
14
|
+
(0, errors_1.assert)(bitsPerElement <= 31, 'The mask of bitsPerElement must be less than or equal to 31');
|
|
11
15
|
}
|
|
12
16
|
get [Symbol.toStringTag]() {
|
|
13
17
|
return this.constructor.name;
|
|
@@ -20,26 +24,17 @@ class BitSet {
|
|
|
20
24
|
}
|
|
21
25
|
*values() {
|
|
22
26
|
if (this.length > 0) {
|
|
23
|
-
const maxArrayLength =
|
|
24
|
-
|
|
25
|
-
- (maxArrayLength * this.bitsPerElement - this.length);
|
|
26
|
-
const lastIndex = maxArrayLength - 1;
|
|
27
|
-
for (let index = 0; index < lastIndex; index++) {
|
|
27
|
+
const maxArrayLength = ~~(this.length / this.bitsPerElement) + 1;
|
|
28
|
+
for (let index = 0; index < maxArrayLength; index++) {
|
|
28
29
|
let element = this.array[index];
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
30
|
+
let offset = 0;
|
|
31
|
+
let indexOfBit;
|
|
32
|
+
while ((indexOfBit = (0, trailing_zeros_1.trailingZeros)(element)) !== 32) {
|
|
33
|
+
yield index * this.bitsPerElement + offset + indexOfBit;
|
|
34
|
+
offset += indexOfBit + 1;
|
|
35
|
+
element >>= indexOfBit + 1;
|
|
34
36
|
}
|
|
35
37
|
}
|
|
36
|
-
let lastElement = this.array[maxArrayLength - 1];
|
|
37
|
-
for (let bit = 0; bit < remainder; bit++) {
|
|
38
|
-
if (lastElement & 1) {
|
|
39
|
-
yield lastIndex * this.bitsPerElement + bit;
|
|
40
|
-
}
|
|
41
|
-
lastElement >>= 1;
|
|
42
|
-
}
|
|
43
38
|
}
|
|
44
39
|
}
|
|
45
40
|
_dumpBinaryStrings() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bit-set.js","sourceRoot":"","sources":["../../src/bit-set.ts"],"names":[],"mappings":";;;AAAA,+CAA2C;
|
|
1
|
+
{"version":3,"file":"bit-set.js","sourceRoot":"","sources":["../../src/bit-set.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,6 +10,7 @@ export declare class DynamicTypedArray<T extends TypedArrayConstructor> {
|
|
|
10
10
|
readonly growthFactor: number;
|
|
11
11
|
get internalTypedArray(): TypedArrayOfConstructor<T>;
|
|
12
12
|
get [Symbol.toStringTag](): string;
|
|
13
|
+
get BYTES_PER_ELEMENT(): number;
|
|
13
14
|
get capacity(): number;
|
|
14
15
|
get length(): number;
|
|
15
16
|
constructor(typedArrayConstructor: T, { capacity, growthFactor }?: IDynamicTypedArrayOptions);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dynamic-typed-array.js","sourceRoot":"","sources":["../../src/dynamic-typed-array.ts"],"names":[],"mappings":";;;AACA,+CAA2C;AAQ3C,MAAa,iBAAiB;
|
|
1
|
+
{"version":3,"file":"dynamic-typed-array.js","sourceRoot":"","sources":["../../src/dynamic-typed-array.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,9 +5,13 @@ const errors_1 = require("@blackglory/errors");
|
|
|
5
5
|
class TypedBitSet {
|
|
6
6
|
constructor(array) {
|
|
7
7
|
this.array = array;
|
|
8
|
-
this.bitsPerElement = this.array.internalTypedArray.BYTES_PER_ELEMENT * 8;
|
|
9
8
|
this.length = 0;
|
|
10
9
|
this._size = 0;
|
|
10
|
+
const bitsPerElement = array.BYTES_PER_ELEMENT * 8;
|
|
11
|
+
(0, errors_1.assert)(Number.isInteger(bitsPerElement), 'The parameter bitsPerElement must be an integer');
|
|
12
|
+
(0, errors_1.assert)(bitsPerElement > 0, 'The parameter bitsPerElement must be greater than 0');
|
|
13
|
+
(0, errors_1.assert)(bitsPerElement <= 32, 'The mask of bitsPerElement must be less than or equal to 32');
|
|
14
|
+
this.bitsPerElement = bitsPerElement;
|
|
11
15
|
}
|
|
12
16
|
get [Symbol.toStringTag]() {
|
|
13
17
|
return this.constructor.name;
|
|
@@ -20,14 +24,14 @@ class TypedBitSet {
|
|
|
20
24
|
}
|
|
21
25
|
*values() {
|
|
22
26
|
if (this.length > 0) {
|
|
23
|
-
const maxArrayLength =
|
|
27
|
+
const maxArrayLength = ~~(this.length / this.bitsPerElement) + 1;
|
|
24
28
|
const remainder = this.bitsPerElement
|
|
25
29
|
- (maxArrayLength * this.bitsPerElement - this.length);
|
|
26
30
|
const lastIndex = maxArrayLength - 1;
|
|
27
31
|
for (let index = 0; index < lastIndex; index++) {
|
|
28
32
|
let element = this.array.internalTypedArray[index];
|
|
29
33
|
for (let bit = 0; bit < this.bitsPerElement; bit++) {
|
|
30
|
-
if (element
|
|
34
|
+
if (element % 2) {
|
|
31
35
|
yield index * this.bitsPerElement + bit;
|
|
32
36
|
}
|
|
33
37
|
element >>= 1;
|
|
@@ -35,7 +39,7 @@ class TypedBitSet {
|
|
|
35
39
|
}
|
|
36
40
|
let lastElement = this.array.internalTypedArray[maxArrayLength - 1];
|
|
37
41
|
for (let bit = 0; bit < remainder; bit++) {
|
|
38
|
-
if (lastElement
|
|
42
|
+
if (lastElement % 2) {
|
|
39
43
|
yield lastIndex * this.bitsPerElement + bit;
|
|
40
44
|
}
|
|
41
45
|
lastElement >>= 1;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"typed-bit-set.js","sourceRoot":"","sources":["../../src/typed-bit-set.ts"],"names":[],"mappings":";;;AAEA,+CAA2C;AAE3C,MAAa,WAAW;IAKtB,YAAoB,KAA2B;QAA3B,UAAK,GAAL,KAAK,CAAsB;
|
|
1
|
+
{"version":3,"file":"typed-bit-set.js","sourceRoot":"","sources":["../../src/typed-bit-set.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function bitScan(value: number): number;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.bitScan = void 0;
|
|
4
|
+
const mod37BitPositions = [
|
|
5
|
+
32, 0, 1, 26, 2, 23, 27, 0, 3, 16,
|
|
6
|
+
24, 30, 28, 11, 0, 13, 4, 7, 17, 0,
|
|
7
|
+
25, 22, 31, 15, 29, 10, 12, 6, 0, 21,
|
|
8
|
+
14, 9, 5, 20, 8, 19, 18
|
|
9
|
+
];
|
|
10
|
+
function bitScan(value) {
|
|
11
|
+
return mod37BitPositions[(-value & value) % 37];
|
|
12
|
+
}
|
|
13
|
+
exports.bitScan = bitScan;
|
|
14
|
+
//# sourceMappingURL=bit-scan.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bit-scan.js","sourceRoot":"","sources":["../../../src/utils/bit-scan.ts"],"names":[],"mappings":";;;AAAA,MAAM,iBAAiB,GAAa;IAClC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE;IACjC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC;IAClC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE;IACpC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE;CACxB,CAAA;AAGD,SAAgB,OAAO,CAAC,KAAa;IACnC,OAAO,iBAAiB,CAAC,CAAC,CAAC,KAAK,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,CAAA;AACjD,CAAC;AAFD,0BAEC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function trailingZeros(value: number): number;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.trailingZeros = void 0;
|
|
4
|
+
const mod37BitPositions = [
|
|
5
|
+
32, 0, 1, 26, 2, 23, 27, 0, 3, 16,
|
|
6
|
+
24, 30, 28, 11, 0, 13, 4, 7, 17, 0,
|
|
7
|
+
25, 22, 31, 15, 29, 10, 12, 6, 0, 21,
|
|
8
|
+
14, 9, 5, 20, 8, 19, 18
|
|
9
|
+
];
|
|
10
|
+
function trailingZeros(value) {
|
|
11
|
+
return mod37BitPositions[(-value & value) % 37];
|
|
12
|
+
}
|
|
13
|
+
exports.trailingZeros = trailingZeros;
|
|
14
|
+
//# sourceMappingURL=trailing-zeros.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"trailing-zeros.js","sourceRoot":"","sources":["../../../src/utils/trailing-zeros.ts"],"names":[],"mappings":";;;AACA,MAAM,iBAAiB,GAAa;IAClC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE;IACjC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC;IAClC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE;IACpC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE;CACxB,CAAA;AAMD,SAAgB,aAAa,CAAC,KAAa;IACzC,OAAO,iBAAiB,CAAC,CAAC,CAAC,KAAK,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,CAAA;AACjD,CAAC;AAFD,sCAEC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@blackglory/structures",
|
|
3
|
-
"version": "0.10.
|
|
3
|
+
"version": "0.10.21",
|
|
4
4
|
"description": "",
|
|
5
5
|
"files": [
|
|
6
6
|
"lib",
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
"clean": "run-p clean:*",
|
|
22
22
|
"clean:build": "rimraf lib",
|
|
23
23
|
"clean:bundle": "rimraf dist",
|
|
24
|
-
"build": "run-
|
|
24
|
+
"build": "run-s build:*",
|
|
25
25
|
"build:es2015": "run-s build:es2015:*",
|
|
26
26
|
"build:es2015:compile": "tsc --project tsconfig.build.json --module commonjs --target es2015 --outDir lib/es2015",
|
|
27
27
|
"build:es2015:patch": "tscpaths -p tsconfig.build.json -s ./src -o ./lib/es2015",
|
|
@@ -56,6 +56,7 @@
|
|
|
56
56
|
"@typescript-eslint/parser": "^5.27.1",
|
|
57
57
|
"eslint": "^8.17.0",
|
|
58
58
|
"extra-benchmark": "^0.1.1",
|
|
59
|
+
"extra-generator": "^0.2.17",
|
|
59
60
|
"husky": "^4.3.8",
|
|
60
61
|
"jest": "^28.1.1",
|
|
61
62
|
"npm-run-all": "^4.1.5",
|