90 lines
2.9 KiB
Kotlin
90 lines
2.9 KiB
Kotlin
/*
|
|
* Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
|
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
|
*/
|
|
|
|
@file:Suppress("NOTHING_TO_INLINE")
|
|
|
|
package kotlin
|
|
|
|
import kotlin.js.*
|
|
|
|
/**
|
|
* Returns a string representation of the object. Can be called with a null receiver, in which case
|
|
* it returns the string "null".
|
|
*/
|
|
public fun Any?.toString(): String = this?.toString() ?: "null"
|
|
|
|
|
|
/**
|
|
* Concatenates this string with the string representation of the given [other] object. If either the receiver
|
|
* or the [other] object are null, they are represented as the string "null".
|
|
*/
|
|
public operator fun String?.plus(other: Any?): String =
|
|
(this?.toString() ?: "null").plus(other?.toString() ?: "null")
|
|
|
|
/**
|
|
* Returns an array of objects of the given type with the given [size], initialized with null values.
|
|
*/
|
|
public inline fun <T> arrayOfNulls(size: Int): Array<T?> = fillArrayVal<T?>(Array<T?>(size), null)
|
|
|
|
/**
|
|
* Returns an array containing the specified elements.
|
|
*/
|
|
public inline fun <T> arrayOf(vararg elements: T): Array<T> = elements.unsafeCast<Array<T>>()
|
|
|
|
/**
|
|
* Returns an array containing the specified [Double] numbers.
|
|
*/
|
|
public inline fun doubleArrayOf(vararg elements: Double): DoubleArray = elements
|
|
|
|
/**
|
|
* Returns an array containing the specified [Float] numbers.
|
|
*/
|
|
public inline fun floatArrayOf(vararg elements: Float): FloatArray = elements
|
|
|
|
/**
|
|
* Returns an array containing the specified [Long] numbers.
|
|
*/
|
|
public inline fun longArrayOf(vararg elements: Long): LongArray = elements
|
|
|
|
/**
|
|
* Returns an array containing the specified [Int] numbers.
|
|
*/
|
|
public inline fun intArrayOf(vararg elements: Int): IntArray = elements
|
|
|
|
/**
|
|
* Returns an array containing the specified characters.
|
|
*/
|
|
public inline fun charArrayOf(vararg elements: Char): CharArray = elements
|
|
|
|
/**
|
|
* Returns an array containing the specified [Short] numbers.
|
|
*/
|
|
public inline fun shortArrayOf(vararg elements: Short): ShortArray = elements
|
|
|
|
/**
|
|
* Returns an array containing the specified [Byte] numbers.
|
|
*/
|
|
public inline fun byteArrayOf(vararg elements: Byte): ByteArray = elements
|
|
|
|
/**
|
|
* Returns an array containing the specified boolean values.
|
|
*/
|
|
public inline fun booleanArrayOf(vararg elements: Boolean): BooleanArray = elements
|
|
|
|
// Use non-inline calls to enumValuesIntrinsic and enumValueOfIntrinsic calls in order
|
|
// for compiler to replace them with method calls of concrete enum classes after inlining.
|
|
// TODO: Figure out better solution (Inline hacks? Dynamic calls to stable mangled names?)
|
|
|
|
/**
|
|
* Returns an array containing enum T entries.
|
|
*/
|
|
@SinceKotlin("1.1")
|
|
public inline fun <reified T : Enum<T>> enumValues(): Array<T> = enumValuesIntrinsic<T>()
|
|
|
|
/**
|
|
* Returns an enum entry with specified name.
|
|
*/
|
|
@SinceKotlin("1.1")
|
|
public inline fun <reified T : Enum<T>> enumValueOf(name: String): T = enumValueOfIntrinsic<T>(name) |