diff --git a/core/builtins/native/kotlin/Array.kt b/core/builtins/native/kotlin/Array.kt new file mode 100644 index 00000000000..a95293629f4 --- /dev/null +++ b/core/builtins/native/kotlin/Array.kt @@ -0,0 +1,10 @@ +package kotlin + +public class Array(public val size: Int, init: Function1) { + public fun get(index: Int): T + public fun set(index: Int, value: T): Unit + + public fun iterator(): Iterator + + public val indices: IntRange +} diff --git a/core/builtins/native/kotlin/Arrays.kt b/core/builtins/native/kotlin/Arrays.kt index e8e4c5ab1b6..3090550d74f 100644 --- a/core/builtins/native/kotlin/Arrays.kt +++ b/core/builtins/native/kotlin/Arrays.kt @@ -1,84 +1,92 @@ +/* + * Copyright 2010-2014 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +// Auto-generated file. DO NOT EDIT! + package kotlin -public fun arrayOfNulls(size : Int) : Array +public class ByteArray(public val size: Int) { + public fun get(index: Int): Byte + public fun set(index: Int, value: Byte): Unit -public class Array(public val size : Int, init : Function1) { - public fun get(index : Int) : T - public fun set(index : Int, value : T) : Unit + public fun iterator(): ByteIterator - public fun iterator() : Iterator - - public val indices : IntRange + public val indices: IntRange } -public class ByteArray(public val size : Int) { - public fun get(index : Int) : Byte - public fun set(index : Int, value : Byte) : Unit +public class CharArray(public val size: Int) { + public fun get(index: Int): Char + public fun set(index: Int, value: Char): Unit - public fun iterator() : ByteIterator + public fun iterator(): CharIterator - public val indices : IntRange + public val indices: IntRange } -public class ShortArray(public val size : Int) { - public fun get(index : Int) : Short - public fun set(index : Int, value : Short) : Unit +public class ShortArray(public val size: Int) { + public fun get(index: Int): Short + public fun set(index: Int, value: Short): Unit - public fun iterator() : ShortIterator + public fun iterator(): ShortIterator - public val indices : IntRange + public val indices: IntRange } -public class IntArray(public val size : Int) { - public fun get(index : Int) : Int - public fun set(index : Int, value : Int) : Unit +public class IntArray(public val size: Int) { + public fun get(index: Int): Int + public fun set(index: Int, value: Int): Unit - public fun iterator() : IntIterator + public fun iterator(): IntIterator - public val indices : IntRange + public val indices: IntRange } -public class LongArray(public val size : Int) { - public fun get(index : Int) : Long - public fun set(index : Int, value : Long) : Unit +public class LongArray(public val size: Int) { + public fun get(index: Int): Long + public fun set(index: Int, value: Long): Unit - public fun iterator() : LongIterator + public fun iterator(): LongIterator - public val indices : IntRange + public val indices: IntRange } -public class FloatArray(public val size : Int) { - public fun get(index : Int) : Float - public fun set(index : Int, value : Float) : Unit +public class FloatArray(public val size: Int) { + public fun get(index: Int): Float + public fun set(index: Int, value: Float): Unit - public fun iterator() : FloatIterator + public fun iterator(): FloatIterator - public val indices : IntRange + public val indices: IntRange } -public class DoubleArray(public val size : Int) { - public fun get(index : Int) : Double - public fun set(index : Int, value : Double) : Unit +public class DoubleArray(public val size: Int) { + public fun get(index: Int): Double + public fun set(index: Int, value: Double): Unit - public fun iterator() : DoubleIterator + public fun iterator(): DoubleIterator - public val indices : IntRange + public val indices: IntRange } -public class CharArray(public val size : Int) { - public fun get(index : Int) : Char - public fun set(index : Int, value : Char) : Unit +public class BooleanArray(public val size: Int) { + public fun get(index: Int): Boolean + public fun set(index: Int, value: Boolean): Unit - public fun iterator() : CharIterator + public fun iterator(): BooleanIterator - public val indices : IntRange + public val indices: IntRange } -public class BooleanArray(public val size : Int) { - public fun get(index : Int) : Boolean - public fun set(index : Int, value : Boolean) : Unit - - public fun iterator() : BooleanIterator - - public val indices : IntRange -} diff --git a/core/builtins/native/kotlin/Library.kt b/core/builtins/native/kotlin/Library.kt index bc49ecefc07..c1363bde888 100644 --- a/core/builtins/native/kotlin/Library.kt +++ b/core/builtins/native/kotlin/Library.kt @@ -8,3 +8,5 @@ public fun Any?.equals(other: Any?): Boolean public fun Any?.toString(): String public fun String?.plus(other: Any?): String + +public fun arrayOfNulls(size: Int): Array diff --git a/generators/src/org/jetbrains/jet/generators/builtins/arrayIterators.kt b/generators/src/org/jetbrains/jet/generators/builtins/arrayIterators.kt index 9871d464dd3..ddabcfdccdd 100644 --- a/generators/src/org/jetbrains/jet/generators/builtins/arrayIterators.kt +++ b/generators/src/org/jetbrains/jet/generators/builtins/arrayIterators.kt @@ -16,7 +16,7 @@ package org.jetbrains.jet.generators.builtins.arrayIterators -import org.jetbrains.jet.generators.builtins.IteratorKind +import org.jetbrains.jet.generators.builtins.PrimitiveType import org.jetbrains.jet.generators.builtins.generateBuiltIns.* import java.io.PrintWriter @@ -24,7 +24,7 @@ class GenerateArrayIterators(out: PrintWriter) : BuiltInsSourceGenerator(out) { override fun getPackage() = "kotlin.jvm.internal" override fun generateBody() { - for (kind in IteratorKind.values()) { + for (kind in PrimitiveType.values()) { val s = kind.capitalized out.println("private class Array${s}Iterator(private val array: ${s}Array) : ${s}Iterator() {") out.println(" private var index = 0") @@ -33,7 +33,7 @@ class GenerateArrayIterators(out: PrintWriter) : BuiltInsSourceGenerator(out) { out.println("}") out.println() } - for (kind in IteratorKind.values()) { + for (kind in PrimitiveType.values()) { val s = kind.capitalized out.println("public fun iterator(array: ${s}Array): ${s}Iterator = Array${s}Iterator(array)") } diff --git a/generators/src/org/jetbrains/jet/generators/builtins/arrays.kt b/generators/src/org/jetbrains/jet/generators/builtins/arrays.kt new file mode 100644 index 00000000000..5c55665edac --- /dev/null +++ b/generators/src/org/jetbrains/jet/generators/builtins/arrays.kt @@ -0,0 +1,40 @@ +/* + * Copyright 2010-2013 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.jetbrains.jet.generators.builtins.arrays + +import org.jetbrains.jet.generators.builtins.PrimitiveType +import org.jetbrains.jet.generators.builtins.generateBuiltIns.* +import java.io.PrintWriter + +class GenerateArrays(out: PrintWriter) : BuiltInsSourceGenerator(out) { + override fun getPackage() = "kotlin" + + override fun generateBody() { + for (kind in PrimitiveType.values()) { + val s = kind.capitalized + out.println("public class ${s}Array(public val size: Int) {") + out.println(" public fun get(index: Int): $s") + out.println(" public fun set(index: Int, value: $s): Unit") + out.println() + out.println(" public fun iterator(): ${s}Iterator") + out.println() + out.println(" public val indices: IntRange") + out.println("}") + out.println() + } + } +} diff --git a/generators/src/org/jetbrains/jet/generators/builtins/common.kt b/generators/src/org/jetbrains/jet/generators/builtins/common.kt index 037aa86211a..4fbc8ca5655 100644 --- a/generators/src/org/jetbrains/jet/generators/builtins/common.kt +++ b/generators/src/org/jetbrains/jet/generators/builtins/common.kt @@ -18,7 +18,7 @@ package org.jetbrains.jet.generators.builtins import org.jetbrains.jet.generators.builtins.ProgressionKind.* -enum class IteratorKind { +enum class PrimitiveType { BYTE CHAR SHORT @@ -40,7 +40,7 @@ enum class ProgressionKind { FLOAT DOUBLE - val capitalized = name().toLowerCase().capitalize() + val capitalized: String get() = name().toLowerCase().capitalize() } fun progressionIncrementType(kind: ProgressionKind) = when (kind) { diff --git a/generators/src/org/jetbrains/jet/generators/builtins/generateBuiltIns.kt b/generators/src/org/jetbrains/jet/generators/builtins/generateBuiltIns.kt index b02877b7476..39a1b5103c5 100644 --- a/generators/src/org/jetbrains/jet/generators/builtins/generateBuiltIns.kt +++ b/generators/src/org/jetbrains/jet/generators/builtins/generateBuiltIns.kt @@ -16,6 +16,7 @@ package org.jetbrains.jet.generators.builtins.generateBuiltIns +import org.jetbrains.jet.generators.builtins.arrays.* import org.jetbrains.jet.generators.builtins.arrayIterators.* import org.jetbrains.jet.generators.builtins.functions.* import org.jetbrains.jet.generators.builtins.iterators.* @@ -28,7 +29,8 @@ import java.io.File fun assertExists(file: File): Unit = if (!file.exists()) error("Output dir does not exist: ${file.getAbsolutePath()}") -val BUILT_INS_DIR = File("core/builtins/src/kotlin/") +val BUILT_INS_NATIVE_DIR = File("core/builtins/native/kotlin/") +val BUILT_INS_SRC_DIR = File("core/builtins/src/kotlin/") val RUNTIME_JVM_DIR = File("core/runtime.jvm/src/kotlin/") abstract class BuiltInsSourceGenerator(val out: PrintWriter) { @@ -50,19 +52,21 @@ abstract class BuiltInsSourceGenerator(val out: PrintWriter) { } fun generateBuiltIns(generate: (File, (PrintWriter) -> BuiltInsSourceGenerator) -> Unit) { - assertExists(BUILT_INS_DIR) + assertExists(BUILT_INS_NATIVE_DIR) + assertExists(BUILT_INS_SRC_DIR) assertExists(RUNTIME_JVM_DIR) for (kind in FunctionKind.values()) { - generate(File(BUILT_INS_DIR, kind.getFileName())) { GenerateFunctions(it, kind) } + generate(File(BUILT_INS_SRC_DIR, kind.getFileName())) { GenerateFunctions(it, kind) } generate(File(RUNTIME_JVM_DIR, kind.getImplFileName()), { GenerateFunctionsImpl(it, kind) }) } - generate(File(BUILT_INS_DIR, "Iterators.kt")) { GenerateIterators(it) } + generate(File(BUILT_INS_NATIVE_DIR, "Arrays.kt")) { GenerateArrays(it) } + generate(File(BUILT_INS_SRC_DIR, "Iterators.kt")) { GenerateIterators(it) } generate(File(RUNTIME_JVM_DIR, "jvm/internal/ArrayIterators.kt")) { GenerateArrayIterators(it) } - generate(File(BUILT_INS_DIR, "ProgressionIterators.kt")) { GenerateProgressionIterators(it) } - generate(File(BUILT_INS_DIR, "Progressions.kt")) { GenerateProgressions(it) } - generate(File(BUILT_INS_DIR, "Ranges.kt")) { GenerateRanges(it) } + generate(File(BUILT_INS_SRC_DIR, "ProgressionIterators.kt")) { GenerateProgressionIterators(it) } + generate(File(BUILT_INS_SRC_DIR, "Progressions.kt")) { GenerateProgressions(it) } + generate(File(BUILT_INS_SRC_DIR, "Ranges.kt")) { GenerateRanges(it) } } fun main(args: Array) { diff --git a/generators/src/org/jetbrains/jet/generators/builtins/iterators.kt b/generators/src/org/jetbrains/jet/generators/builtins/iterators.kt index a56c0d231d5..38c3611f9da 100644 --- a/generators/src/org/jetbrains/jet/generators/builtins/iterators.kt +++ b/generators/src/org/jetbrains/jet/generators/builtins/iterators.kt @@ -16,13 +16,13 @@ package org.jetbrains.jet.generators.builtins.iterators -import org.jetbrains.jet.generators.builtins.IteratorKind +import org.jetbrains.jet.generators.builtins.PrimitiveType import org.jetbrains.jet.generators.builtins.generateBuiltIns.* import java.io.PrintWriter class GenerateIterators(out: PrintWriter) : BuiltInsSourceGenerator(out) { override fun generateBody() { - for (kind in IteratorKind.values()) { + for (kind in PrimitiveType.values()) { val s = kind.capitalized out.println("public abstract class ${s}Iterator : Iterator<$s> {") out.println(" override final fun next() = next$s()")