@blackglory/structures 0.10.21 → 0.10.22

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.
@@ -6232,7 +6232,7 @@ function trailingZeros(value) {
6232
6232
  }
6233
6233
 
6234
6234
  class BitSet {
6235
- constructor(bitsPerElement = 31) {
6235
+ constructor(bitsPerElement = 8) {
6236
6236
  this.bitsPerElement = bitsPerElement;
6237
6237
  this.array = [];
6238
6238
  this.length = 0;
@@ -6337,8 +6337,8 @@ class TypedBitSet {
6337
6337
  const bitsPerElement = array.BYTES_PER_ELEMENT * 8;
6338
6338
  es2018Exports$1.assert(Number.isInteger(bitsPerElement), 'The parameter bitsPerElement must be an integer');
6339
6339
  es2018Exports$1.assert(bitsPerElement > 0, 'The parameter bitsPerElement must be greater than 0');
6340
- // `32`是该数据结构中能够处理的最大值
6341
- es2018Exports$1.assert(bitsPerElement <= 32, 'The mask of bitsPerElement must be less than or equal to 32');
6340
+ // `31`是该数据结构中能够处理的最大值
6341
+ es2018Exports$1.assert(bitsPerElement <= 31, 'The mask of bitsPerElement must be less than or equal to 31');
6342
6342
  this.bitsPerElement = bitsPerElement;
6343
6343
  }
6344
6344
  get [Symbol.toStringTag]() {
@@ -6354,26 +6354,15 @@ class TypedBitSet {
6354
6354
  if (this.length > 0) {
6355
6355
  // maxArrayLength = Math.ceil(this.length / this.bitsPerElement)
6356
6356
  const maxArrayLength = ~~(this.length / this.bitsPerElement) + 1;
6357
- const remainder = this.bitsPerElement
6358
- - (maxArrayLength * this.bitsPerElement - this.length);
6359
- const lastIndex = maxArrayLength - 1;
6360
- for (let index = 0; index < lastIndex; index++) {
6357
+ for (let index = 0; index < maxArrayLength; index++) {
6361
6358
  let element = this.array.internalTypedArray[index];
6362
- for (let bit = 0; bit < this.bitsPerElement; bit++) {
6363
- // if (isOdd(element)) {
6364
- if (element % 2) {
6365
- yield index * this.bitsPerElement + bit;
6366
- }
6367
- element >>= 1;
6368
- }
6369
- }
6370
- let lastElement = this.array.internalTypedArray[maxArrayLength - 1];
6371
- for (let bit = 0; bit < remainder; bit++) {
6372
- // if (isOdd(lastElement)) {
6373
- if (lastElement % 2) {
6374
- yield lastIndex * this.bitsPerElement + bit;
6359
+ let offset = 0;
6360
+ let indexOfBit;
6361
+ while ((indexOfBit = trailingZeros(element)) !== 32) {
6362
+ yield index * this.bitsPerElement + offset + indexOfBit;
6363
+ offset += indexOfBit + 1;
6364
+ element >>= indexOfBit + 1;
6375
6365
  }
6376
- lastElement >>= 1;
6377
6366
  }
6378
6367
  }
6379
6368
  }