From 086e929e3211dada86474e2d17cbb4a4bfdd12d2 Mon Sep 17 00:00:00 2001 From: KotlinGeekDev Date: Wed, 7 Jan 2026 22:27:01 +0100 Subject: [PATCH] Make some modifications to CustomBitSet. --- .../quartz/utils/io/CustomBitSet.kt | 92 +------------------ 1 file changed, 5 insertions(+), 87 deletions(-) diff --git a/quartz/src/iosMain/kotlin/com/vitorpamplona/quartz/utils/io/CustomBitSet.kt b/quartz/src/iosMain/kotlin/com/vitorpamplona/quartz/utils/io/CustomBitSet.kt index 961062d1b..80f0cb86a 100644 --- a/quartz/src/iosMain/kotlin/com/vitorpamplona/quartz/utils/io/CustomBitSet.kt +++ b/quartz/src/iosMain/kotlin/com/vitorpamplona/quartz/utils/io/CustomBitSet.kt @@ -19,12 +19,10 @@ * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ package com.vitorpamplona.quartz.utils.io +// Credits: skolson, from https://github.com/skolson/KmpIO import kotlin.math.max -/** - * Most of the functionality of a java.util.BitSet - */ class CustomBitSet( val numberOfBits: Int, ) { @@ -50,47 +48,14 @@ class CustomBitSet( (BITS_PER_WORD - numberOfLeadingZeros(words[wordsInUse - 1])) } - /** - * Initializes a new bit set containing all the bits in the given byte - * buffer between its position and limit. - * - *

The byte buffer is not modified by this method, and no - * reference to the buffer is retained by the bit set. - * - * @param bytes a byte array containing a little-endian representation - * of a sequence of bits, to be - * used as the initial bits of the new bit set - */ constructor(bytes: ByteArray, bitsCount: Int = bytes.size * 8) : this(bitsCount) { transformBuffer(ByteBuffer(bytes)) } - /** - * Initializes a new bit set containing all the bits in the given byte - * buffer between its position and limit. - * - *

The byte buffer is not modified by this method, and no - * reference to the buffer is retained by the bit set. - * - * @param buffer a byte buffer containing a little-endian representation - * of a sequence of bits between its position and limit, to be - * used as the initial bits of the new bit set - */ - constructor(buffer: ByteBuffer, bitsCount: Int = buffer.remaining * 8) : this(bitsCount) { - transformBuffer(buffer) - } - - /** - * Initializes a new bit set containing all the bits in the given byte - * buffer between its position and limit. - * - *

The byte buffer content is not modified by this method, but the position ill be set to limit. - * Bitmask is treated as LittleEndian for the bytes containing the mask. - * - * @param buffer a byte buffer containing a little-endian representation - * of a sequence of bits between its position and limit, to be - * used as the initial bits of the new bit set - */ +// constructor(buffer: ByteBuffer, bitsCount: Int = buffer.remaining * 8) : this(bitsCount) { +// transformBuffer(buffer) +// } +// private fun transformBuffer(buffer: ByteBuffer) { words = LongArray((buffer.remaining + 7) / 8) { 0 } var i = 0 @@ -132,13 +97,6 @@ class CustomBitSet( return bytes } - /** - * Sets the bit at the specified index to the complement of its - * current value. - * - * @param bitIndex the index of the bit to flip - * @throws IndexOutOfBoundsException if the specified index is negative - */ fun flip(bitIndex: Int) { if (bitIndex < 0) throw IndexOutOfBoundsException("bitIndex < 0: $bitIndex") val wordIndex = wordIndex(bitIndex) @@ -147,18 +105,6 @@ class CustomBitSet( checkInvariants() } - /** - * Sets each bit from the specified `fromIndex` (inclusive) to the - * specified `toIndex` (exclusive) to the complement of its current - * value. - * - * @param fromIndex index of the first bit to flip - * @param toIndex index after the last bit to flip - * @throws IndexOutOfBoundsException if `fromIndex` is negative, - * or `toIndex` is negative, or `fromIndex` is - * larger than `toIndex` - * @since 1.4 - */ fun flip( fromIndex: Int, toIndex: Int, @@ -218,12 +164,6 @@ class CustomBitSet( checkInvariants() } - /** - * find all set bits at or after startIndex. For each bit, invoke the lambda passing the index - * of the set bit. The lamda can return true to continue, or false to stop iterating. - * - * @return number of bits set - */ fun iterateSetBits( startIndex: Int = 0, onSetBit: (Int) -> Boolean, @@ -251,12 +191,6 @@ class CustomBitSet( } } - /** - * find all set bits at or after startIndex. For each bit, invoke the lambda passing the index - * of the set bit. The lamda can return true to continue, or false to stop iterating. - * - * @return number of bits set - */ fun iterateClearBits( startIndex: Int = 0, onClearedBit: (Int) -> Boolean, @@ -284,12 +218,6 @@ class CustomBitSet( } } - /** - * Sets the bit specified by the index to `false`. - * - * @param bitIndex the index of the bit to be cleared - * @throws IndexOutOfBoundsException if the specified index is negative - */ fun clear(bitIndex: Int) { if (bitIndex < 0) throw IndexOutOfBoundsException("bitIndex < 0: $bitIndex") val wordIndex = wordIndex(bitIndex) @@ -298,9 +226,6 @@ class CustomBitSet( checkInvariants() } - /** - * Sets all of the bits in this CustomBitSet to `false`. - */ fun clear() { for (i in 0..words.size) words[i] = 0 } @@ -345,13 +270,6 @@ class CustomBitSet( return text } - /** - * Returns the number of bits of space actually in use by this - * `BitSet` to represent bit values. - * The maximum element in the set is the size - 1st element. - * - * @return the number of bits currently in this bit set - */ fun size(): Int = words.size * BITS_PER_WORD companion object {