Merge pull request #232 from mipt-npm/commandertvis/buffer-to-array
Improve collection conversion functions for Buffer
This commit is contained in:
commit
0ed70cc960
@ -2314,6 +2314,7 @@ public final class space/kscience/kmath/structures/BufferKt {
|
||||
public static final fun asSequence (Lspace/kscience/kmath/structures/Buffer;)Lkotlin/sequences/Sequence;
|
||||
public static final fun getIndices (Lspace/kscience/kmath/structures/Buffer;)Lkotlin/ranges/IntRange;
|
||||
public static final fun toList (Lspace/kscience/kmath/structures/Buffer;)Ljava/util/List;
|
||||
public static final fun toMutableList (Lspace/kscience/kmath/structures/Buffer;)Ljava/util/List;
|
||||
}
|
||||
|
||||
public abstract interface class space/kscience/kmath/structures/FlaggedBuffer : space/kscience/kmath/structures/Buffer {
|
||||
@ -2376,7 +2377,7 @@ public final class space/kscience/kmath/structures/FloatBufferKt {
|
||||
public static final fun FloatBuffer (ILkotlin/jvm/functions/Function1;)[F
|
||||
public static final fun FloatBuffer ([F)[F
|
||||
public static final fun asBuffer ([F)[F
|
||||
public static final fun getArray (Lspace/kscience/kmath/structures/MutableBuffer;)[F
|
||||
public static final fun toFloatArray (Lspace/kscience/kmath/structures/Buffer;)[F
|
||||
}
|
||||
|
||||
public final class space/kscience/kmath/structures/IntBuffer : space/kscience/kmath/structures/MutableBuffer {
|
||||
@ -2412,7 +2413,7 @@ public final class space/kscience/kmath/structures/IntBufferKt {
|
||||
public static final fun IntBuffer (ILkotlin/jvm/functions/Function1;)[I
|
||||
public static final fun IntBuffer ([I)[I
|
||||
public static final fun asBuffer ([I)[I
|
||||
public static final fun getArray (Lspace/kscience/kmath/structures/MutableBuffer;)[I
|
||||
public static final fun toIntArray (Lspace/kscience/kmath/structures/Buffer;)[I
|
||||
}
|
||||
|
||||
public final class space/kscience/kmath/structures/ListBuffer : space/kscience/kmath/structures/Buffer {
|
||||
@ -2470,7 +2471,7 @@ public final class space/kscience/kmath/structures/LongBufferKt {
|
||||
public static final fun LongBuffer (ILkotlin/jvm/functions/Function1;)[J
|
||||
public static final fun LongBuffer ([J)[J
|
||||
public static final fun asBuffer ([J)[J
|
||||
public static final fun getArray (Lspace/kscience/kmath/structures/MutableBuffer;)[J
|
||||
public static final fun toLongArray (Lspace/kscience/kmath/structures/Buffer;)[J
|
||||
}
|
||||
|
||||
public class space/kscience/kmath/structures/MemoryBuffer : space/kscience/kmath/structures/Buffer {
|
||||
@ -2749,7 +2750,7 @@ public final class space/kscience/kmath/structures/RealBufferKt {
|
||||
public static final fun RealBuffer ([D)[D
|
||||
public static final fun asBuffer ([D)[D
|
||||
public static final fun contentEquals-2uVC2J0 ([D[D)Z
|
||||
public static final fun getArray (Lspace/kscience/kmath/structures/MutableBuffer;)[D
|
||||
public static final fun toDoubleArray (Lspace/kscience/kmath/structures/Buffer;)[D
|
||||
}
|
||||
|
||||
public final class space/kscience/kmath/structures/ShortBuffer : space/kscience/kmath/structures/MutableBuffer {
|
||||
@ -2785,7 +2786,7 @@ public final class space/kscience/kmath/structures/ShortBufferKt {
|
||||
public static final fun ShortBuffer (ILkotlin/jvm/functions/Function1;)[S
|
||||
public static final fun ShortBuffer ([S)[S
|
||||
public static final fun asBuffer ([S)[S
|
||||
public static final fun getArray (Lspace/kscience/kmath/structures/MutableBuffer;)[S
|
||||
public static final fun toShortArray (Lspace/kscience/kmath/structures/Buffer;)[S
|
||||
}
|
||||
|
||||
public final class space/kscience/kmath/structures/ValueFlag : java/lang/Enum {
|
||||
|
@ -100,9 +100,29 @@ public fun <T> Buffer<T>.asSequence(): Sequence<T> = Sequence(::iterator)
|
||||
public fun <T> Buffer<T>.asIterable(): Iterable<T> = Iterable(::iterator)
|
||||
|
||||
/**
|
||||
* Converts this [Buffer] to a new [List]
|
||||
* Returns a new [List] containing all elements of this buffer.
|
||||
*/
|
||||
public fun <T> Buffer<T>.toList(): List<T> = asSequence().toList()
|
||||
public fun <T> Buffer<T>.toList(): List<T> = when (this) {
|
||||
is ArrayBuffer<T> -> array.toList()
|
||||
is ListBuffer<T> -> list.toList()
|
||||
is MutableListBuffer<T> -> list.toList()
|
||||
else -> asSequence().toList()
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a new [MutableList] filled with all elements of this buffer.
|
||||
*/
|
||||
public fun <T> Buffer<T>.toMutableList(): MutableList<T> = when (this) {
|
||||
is ArrayBuffer<T> -> array.toMutableList()
|
||||
is ListBuffer<T> -> list.toMutableList()
|
||||
is MutableListBuffer<T> -> list.toMutableList()
|
||||
else -> asSequence().toMutableList()
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a new [Array] containing all elements of this buffer.
|
||||
*/
|
||||
public inline fun <reified T> Buffer<T>.toTypedArray(): Array<T> = asSequence().toList().toTypedArray()
|
||||
|
||||
/**
|
||||
* Returns an [IntRange] of the valid indices for this [Buffer].
|
||||
@ -222,7 +242,7 @@ public inline class MutableListBuffer<T>(public val list: MutableList<T>) : Muta
|
||||
* @param T the type of elements contained in the buffer.
|
||||
* @property array The underlying array.
|
||||
*/
|
||||
public class ArrayBuffer<T>(private val array: Array<T>) : MutableBuffer<T> {
|
||||
public class ArrayBuffer<T>(internal val array: Array<T>) : MutableBuffer<T> {
|
||||
// Can't inline because array is invariant
|
||||
override val size: Int
|
||||
get() = array.size
|
||||
|
@ -36,10 +36,12 @@ public inline fun FloatBuffer(size: Int, init: (Int) -> Float): FloatBuffer = Fl
|
||||
public fun FloatBuffer(vararg floats: Float): FloatBuffer = FloatBuffer(floats)
|
||||
|
||||
/**
|
||||
* Returns a [FloatArray] containing all of the elements of this [MutableBuffer].
|
||||
* Returns a new [FloatArray] containing all of the elements of this [Buffer].
|
||||
*/
|
||||
public val MutableBuffer<out Float>.array: FloatArray
|
||||
get() = (if (this is FloatBuffer) array else FloatArray(size) { get(it) })
|
||||
public fun Buffer<Float>.toFloatArray(): FloatArray = when(this) {
|
||||
is FloatBuffer -> array.copyOf()
|
||||
else -> FloatArray(size, ::get)
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns [FloatBuffer] over this array.
|
||||
|
@ -35,10 +35,12 @@ public inline fun IntBuffer(size: Int, init: (Int) -> Int): IntBuffer = IntBuffe
|
||||
public fun IntBuffer(vararg ints: Int): IntBuffer = IntBuffer(ints)
|
||||
|
||||
/**
|
||||
* Returns a [IntArray] containing all of the elements of this [MutableBuffer].
|
||||
* Returns a new [IntArray] containing all of the elements of this [Buffer].
|
||||
*/
|
||||
public val MutableBuffer<out Int>.array: IntArray
|
||||
get() = (if (this is IntBuffer) array else IntArray(size) { get(it) })
|
||||
public fun Buffer<Int>.toIntArray(): IntArray = when(this) {
|
||||
is IntBuffer -> array.copyOf()
|
||||
else -> IntArray(size, ::get)
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns [IntBuffer] over this array.
|
||||
|
@ -35,10 +35,12 @@ public inline fun LongBuffer(size: Int, init: (Int) -> Long): LongBuffer = LongB
|
||||
public fun LongBuffer(vararg longs: Long): LongBuffer = LongBuffer(longs)
|
||||
|
||||
/**
|
||||
* Returns a [IntArray] containing all of the elements of this [MutableBuffer].
|
||||
* Returns a new [LongArray] containing all of the elements of this [Buffer].
|
||||
*/
|
||||
public val MutableBuffer<out Long>.array: LongArray
|
||||
get() = (if (this is LongBuffer) array else LongArray(size) { get(it) })
|
||||
public fun Buffer<Long>.toLongArray(): LongArray = when(this) {
|
||||
is LongBuffer -> array.copyOf()
|
||||
else -> LongArray(size, ::get)
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns [LongBuffer] over this array.
|
||||
|
@ -40,10 +40,12 @@ public fun RealBuffer(vararg doubles: Double): RealBuffer = RealBuffer(doubles)
|
||||
public fun RealBuffer.contentEquals(vararg doubles: Double): Boolean = array.contentEquals(doubles)
|
||||
|
||||
/**
|
||||
* Returns a [DoubleArray] containing all of the elements of this [MutableBuffer].
|
||||
* Returns a new [DoubleArray] containing all of the elements of this [Buffer].
|
||||
*/
|
||||
public val MutableBuffer<out Double>.array: DoubleArray
|
||||
get() = (if (this is RealBuffer) array else DoubleArray(size) { get(it) })
|
||||
public fun Buffer<Double>.toDoubleArray(): DoubleArray = when(this) {
|
||||
is RealBuffer -> array.copyOf()
|
||||
else -> DoubleArray(size, ::get)
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns [RealBuffer] over this array.
|
||||
|
@ -33,10 +33,12 @@ public inline fun ShortBuffer(size: Int, init: (Int) -> Short): ShortBuffer = Sh
|
||||
public fun ShortBuffer(vararg shorts: Short): ShortBuffer = ShortBuffer(shorts)
|
||||
|
||||
/**
|
||||
* Returns a [ShortArray] containing all of the elements of this [MutableBuffer].
|
||||
* Returns a new [ShortArray] containing all of the elements of this [Buffer].
|
||||
*/
|
||||
public val MutableBuffer<out Short>.array: ShortArray
|
||||
get() = (if (this is ShortBuffer) array else ShortArray(size) { get(it) })
|
||||
public fun Buffer<Short>.toShortArray(): ShortArray = when(this) {
|
||||
is ShortBuffer -> array.copyOf()
|
||||
else -> ShortArray(size, ::get)
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns [ShortBuffer] over this array.
|
||||
|
Loading…
Reference in New Issue
Block a user