Extended documentation, code refactoring, API consistency changes #125

Merged
CommanderTvis merged 12 commits from more-docs into dev 2020-08-09 18:48:27 +03:00
3 changed files with 44 additions and 7 deletions
Showing only changes of commit 9f6bd116f6 - Show all commits

View File

@ -97,10 +97,13 @@ val Buffer<*>.indices: IntRange get() = 0 until size
* A generic mutable random-access structure for both primitives and objects. * A generic mutable random-access structure for both primitives and objects.
*/ */
interface MutableBuffer<T> : Buffer<T> { interface MutableBuffer<T> : Buffer<T> {
/**
* Sets the array element at the specified [index] to the specified [value].
*/
operator fun set(index: Int, value: T) operator fun set(index: Int, value: T)
/** /**
* A shallow copy of the buffer * Returns a shallow copy of the buffer.
*/ */
fun copy(): MutableBuffer<T> fun copy(): MutableBuffer<T>

View File

@ -21,6 +21,28 @@ inline class IntBuffer(val array: IntArray) : MutableBuffer<Int> {
} }
/**
* Creates a new [IntBuffer] with the specified [size], where each element is calculated by calling the specified
* [init] function.
*
* The function [init] is called for each array element sequentially starting from the first one.
* It should return the value for an array element given its index.
*/
@Suppress("FunctionName")
inline fun IntBuffer(size: Int, init: (Int) -> Int): IntBuffer = IntBuffer(IntArray(size) { init(it) })
/**
* Returns a new [IntBuffer] of given elements.
*/
@Suppress("FunctionName")
fun IntBuffer(vararg ints: Int): IntBuffer = IntBuffer(ints)
/**
* Returns a [IntArray] containing all of the elements of this [MutableBuffer].
*/
val MutableBuffer<out Int>.array: IntArray
get() = (if (this is IntBuffer) array else IntArray(size) { get(it) })
/** /**
* Returns [IntBuffer] over this array. * Returns [IntBuffer] over this array.
* *

View File

@ -15,20 +15,32 @@ inline class RealBuffer(val array: DoubleArray) : MutableBuffer<Double> {
RealBuffer(array.copyOf()) RealBuffer(array.copyOf())
} }
/**
* Creates a new array with the specified [size], where each element is calculated by calling the specified
* [init] function.
*
* The function [init] is called for each array element sequentially starting from the first one.
* It should return the value for an array element given its index.
*/
@Suppress("FunctionName") @Suppress("FunctionName")
inline fun RealBuffer(size: Int, init: (Int) -> Double): RealBuffer = RealBuffer(DoubleArray(size) { init(it) }) inline fun RealBuffer(size: Int, init: (Int) -> Double): RealBuffer = RealBuffer(DoubleArray(size) { init(it) })
/**
* Returns a new [RealBuffer] of given elements.
*/
@Suppress("FunctionName") @Suppress("FunctionName")
fun RealBuffer(vararg doubles: Double): RealBuffer = RealBuffer(doubles) fun RealBuffer(vararg doubles: Double): RealBuffer = RealBuffer(doubles)
/** /**
* Transform buffer of doubles into array for high performance operations * Returns a [DoubleArray] containing all of the elements of this [MutableBuffer].
*/ */
val MutableBuffer<out Double>.array: DoubleArray val MutableBuffer<out Double>.array: DoubleArray
get() = if (this is RealBuffer) { get() = (if (this is RealBuffer) array else DoubleArray(size) { get(it) })
array
} else {
DoubleArray(size) { get(it) }
}
/**
* Returns [RealBuffer] over this array.
*
* @receiver the array.
* @return the new buffer.
*/
fun DoubleArray.asBuffer(): RealBuffer = RealBuffer(this) fun DoubleArray.asBuffer(): RealBuffer = RealBuffer(this)