Redefine primitive arrays
diff --git a/core/builtins/native/kotlin/Arrays.kt b/core/builtins/native/kotlin/Arrays.kt
index b57605e..b1ab157f 100644
--- a/core/builtins/native/kotlin/Arrays.kt
+++ b/core/builtins/native/kotlin/Arrays.kt
@@ -7,299 +7,19 @@
package kotlin
-/**
- * An array of bytes. When targeting the JVM, instances of this class are represented as `byte[]`.
- * @constructor Creates a new array of the specified [size], with all elements initialized to zero.
- */
-public class ByteArray(size: Int) {
- /**
- * Creates a new array of 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.
- */
- public inline constructor(size: Int, init: (Int) -> Byte)
-
- /**
- * Returns the array element at the given [index]. This method can be called using the index operator.
- *
- * If the [index] is out of bounds of this array, throws an [IndexOutOfBoundsException] except in Kotlin/JS
- * where the behavior is unspecified.
- */
- public operator fun get(index: Int): Byte
-
- /**
- * Sets the element at the given [index] to the given [value]. This method can be called using the index operator.
- *
- * If the [index] is out of bounds of this array, throws an [IndexOutOfBoundsException] except in Kotlin/JS
- * where the behavior is unspecified.
- */
- public operator fun set(index: Int, value: Byte): Unit
-
- /** Returns the number of elements in the array. */
- public val size: Int
-
- /** Creates an iterator over the elements of the array. */
- public operator fun iterator(): ByteIterator
-}
-
-/**
- * An array of chars. When targeting the JVM, instances of this class are represented as `char[]`.
- * @constructor Creates a new array of the specified [size], with all elements initialized to null char (`\u0000').
- */
-public class CharArray(size: Int) {
- /**
- * Creates a new array of 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.
- */
- public inline constructor(size: Int, init: (Int) -> Char)
-
- /**
- * Returns the array element at the given [index]. This method can be called using the index operator.
- *
- * If the [index] is out of bounds of this array, throws an [IndexOutOfBoundsException] except in Kotlin/JS
- * where the behavior is unspecified.
- */
- public operator fun get(index: Int): Char
-
- /**
- * Sets the element at the given [index] to the given [value]. This method can be called using the index operator.
- *
- * If the [index] is out of bounds of this array, throws an [IndexOutOfBoundsException] except in Kotlin/JS
- * where the behavior is unspecified.
- */
- public operator fun set(index: Int, value: Char): Unit
-
- /** Returns the number of elements in the array. */
- public val size: Int
-
- /** Creates an iterator over the elements of the array. */
- public operator fun iterator(): CharIterator
-}
-
-/**
- * An array of shorts. When targeting the JVM, instances of this class are represented as `short[]`.
- * @constructor Creates a new array of the specified [size], with all elements initialized to zero.
- */
-public class ShortArray(size: Int) {
- /**
- * Creates a new array of 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.
- */
- public inline constructor(size: Int, init: (Int) -> Short)
-
- /**
- * Returns the array element at the given [index]. This method can be called using the index operator.
- *
- * If the [index] is out of bounds of this array, throws an [IndexOutOfBoundsException] except in Kotlin/JS
- * where the behavior is unspecified.
- */
- public operator fun get(index: Int): Short
-
- /**
- * Sets the element at the given [index] to the given [value]. This method can be called using the index operator.
- *
- * If the [index] is out of bounds of this array, throws an [IndexOutOfBoundsException] except in Kotlin/JS
- * where the behavior is unspecified.
- */
- public operator fun set(index: Int, value: Short): Unit
-
- /** Returns the number of elements in the array. */
- public val size: Int
-
- /** Creates an iterator over the elements of the array. */
- public operator fun iterator(): ShortIterator
-}
-
-/**
- * An array of ints. When targeting the JVM, instances of this class are represented as `int[]`.
- * @constructor Creates a new array of the specified [size], with all elements initialized to zero.
- */
-public class IntArray(size: Int) {
- /**
- * Creates a new array of 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.
- */
- public inline constructor(size: Int, init: (Int) -> Int)
-
- /**
- * Returns the array element at the given [index]. This method can be called using the index operator.
- *
- * If the [index] is out of bounds of this array, throws an [IndexOutOfBoundsException] except in Kotlin/JS
- * where the behavior is unspecified.
- */
- public operator fun get(index: Int): Int
-
- /**
- * Sets the element at the given [index] to the given [value]. This method can be called using the index operator.
- *
- * If the [index] is out of bounds of this array, throws an [IndexOutOfBoundsException] except in Kotlin/JS
- * where the behavior is unspecified.
- */
- public operator fun set(index: Int, value: Int): Unit
-
- /** Returns the number of elements in the array. */
- public val size: Int
-
- /** Creates an iterator over the elements of the array. */
- public operator fun iterator(): IntIterator
-}
-
-/**
- * An array of longs. When targeting the JVM, instances of this class are represented as `long[]`.
- * @constructor Creates a new array of the specified [size], with all elements initialized to zero.
- */
-public class LongArray(size: Int) {
- /**
- * Creates a new array of 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.
- */
- public inline constructor(size: Int, init: (Int) -> Long)
-
- /**
- * Returns the array element at the given [index]. This method can be called using the index operator.
- *
- * If the [index] is out of bounds of this array, throws an [IndexOutOfBoundsException] except in Kotlin/JS
- * where the behavior is unspecified.
- */
- public operator fun get(index: Int): Long
-
- /**
- * Sets the element at the given [index] to the given [value]. This method can be called using the index operator.
- *
- * If the [index] is out of bounds of this array, throws an [IndexOutOfBoundsException] except in Kotlin/JS
- * where the behavior is unspecified.
- */
- public operator fun set(index: Int, value: Long): Unit
-
- /** Returns the number of elements in the array. */
- public val size: Int
-
- /** Creates an iterator over the elements of the array. */
- public operator fun iterator(): LongIterator
-}
-
-/**
- * An array of floats. When targeting the JVM, instances of this class are represented as `float[]`.
- * @constructor Creates a new array of the specified [size], with all elements initialized to zero.
- */
-public class FloatArray(size: Int) {
- /**
- * Creates a new array of 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.
- */
- public inline constructor(size: Int, init: (Int) -> Float)
-
- /**
- * Returns the array element at the given [index]. This method can be called using the index operator.
- *
- * If the [index] is out of bounds of this array, throws an [IndexOutOfBoundsException] except in Kotlin/JS
- * where the behavior is unspecified.
- */
- public operator fun get(index: Int): Float
-
- /**
- * Sets the element at the given [index] to the given [value]. This method can be called using the index operator.
- *
- * If the [index] is out of bounds of this array, throws an [IndexOutOfBoundsException] except in Kotlin/JS
- * where the behavior is unspecified.
- */
- public operator fun set(index: Int, value: Float): Unit
-
- /** Returns the number of elements in the array. */
- public val size: Int
-
- /** Creates an iterator over the elements of the array. */
- public operator fun iterator(): FloatIterator
-}
-
-/**
- * An array of doubles. When targeting the JVM, instances of this class are represented as `double[]`.
- * @constructor Creates a new array of the specified [size], with all elements initialized to zero.
- */
-public class DoubleArray(size: Int) {
- /**
- * Creates a new array of 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.
- */
- public inline constructor(size: Int, init: (Int) -> Double)
-
- /**
- * Returns the array element at the given [index]. This method can be called using the index operator.
- *
- * If the [index] is out of bounds of this array, throws an [IndexOutOfBoundsException] except in Kotlin/JS
- * where the behavior is unspecified.
- */
- public operator fun get(index: Int): Double
-
- /**
- * Sets the element at the given [index] to the given [value]. This method can be called using the index operator.
- *
- * If the [index] is out of bounds of this array, throws an [IndexOutOfBoundsException] except in Kotlin/JS
- * where the behavior is unspecified.
- */
- public operator fun set(index: Int, value: Double): Unit
-
- /** Returns the number of elements in the array. */
- public val size: Int
-
- /** Creates an iterator over the elements of the array. */
- public operator fun iterator(): DoubleIterator
-}
-
-/**
- * An array of booleans. When targeting the JVM, instances of this class are represented as `boolean[]`.
- * @constructor Creates a new array of the specified [size], with all elements initialized to `false`.
- */
-public class BooleanArray(size: Int) {
- /**
- * Creates a new array of 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.
- */
- public inline constructor(size: Int, init: (Int) -> Boolean)
-
- /**
- * Returns the array element at the given [index]. This method can be called using the index operator.
- *
- * If the [index] is out of bounds of this array, throws an [IndexOutOfBoundsException] except in Kotlin/JS
- * where the behavior is unspecified.
- */
- public operator fun get(index: Int): Boolean
-
- /**
- * Sets the element at the given [index] to the given [value]. This method can be called using the index operator.
- *
- * If the [index] is out of bounds of this array, throws an [IndexOutOfBoundsException] except in Kotlin/JS
- * where the behavior is unspecified.
- */
- public operator fun set(index: Int, value: Boolean): Unit
-
- /** Returns the number of elements in the array. */
- public val size: Int
-
- /** Creates an iterator over the elements of the array. */
- public operator fun iterator(): BooleanIterator
-}
-
+typealias ByteArray = VArray<Byte>
+typealias CharArray = VArray<Char>
+typealias ShortArray = VArray<Short>
+typealias IntArray = VArray<Int>
+typealias LongArray = VArray<Long>
+typealias FloatArray = VArray<Float>
+typealias DoubleArray = VArray<Double>
+typealias BooleanArray = VArray<Boolean>
+fun ByteArray(size : Int) = VArray(size) { 0.toByte() }
+fun CharArray(size : Int) = VArray(size) { '\u0000' }
+fun ShortArray(size : Int) = VArray(size) { 0.toShort() }
+fun IntArray(size : Int) = VArray(size) { 0.toInt() }
+fun LongArray(size : Int) = VArray(size) { 0.toLong() }
+fun FloatArray(size : Int) = VArray(size) { 0.toFloat() }
+fun DoubleArray(size : Int) = VArray(size) { 0.toDouble() }
+fun BooleanArray(size : Int) = VArray(size) { false }
\ No newline at end of file