Standard library documentation continued.

This commit is contained in:
Dmitry Jemerov
2015-02-27 20:50:11 +01:00
parent 7cd68c70d2
commit 2cc291efdb
18 changed files with 414 additions and 7 deletions
+4
View File
@@ -16,6 +16,10 @@
package kotlin
/**
* Represents a value which is either `true` or `false`. On the JVM, non-nullable values of this type are
* represented as values of the primitive type `boolean`.
*/
public class Boolean private () : Comparable<Boolean> {
public fun not(): Boolean
+4
View File
@@ -16,6 +16,10 @@
package kotlin
/**
* Represents a singe 16-bit Unicode character. On the JVM, non-nullable values of this type are represented
* as values of the primitive type `char`.
*/
public class Char private () : Comparable<Char> {
public fun compareTo(other: Double): Int
public fun compareTo(other: Float) : Int
@@ -16,10 +16,25 @@
package kotlin
/**
* Represents a readable sequence of [Char] values.
*/
public trait CharSequence {
/**
* Returns the length of this character sequence.
*/
public fun length(): Int
/**
* Returns the character at the specified [index] in the sequence.
*/
public fun charAt(index: Int): Char
/**
* Returns a subsequence of this sequence.
*
* @param start the start index (inclusive).
* @param end the end index (exclusive).
*/
public fun subSequence(start: Int, end: Int): CharSequence
}
+6
View File
@@ -16,6 +16,12 @@
package kotlin
/**
* Classes that inherit from this trait support creating field-by-field copies of their instances.
*/
public trait Cloneable {
/**
* Creates and returns a field-by-field copy of this object.
*/
protected fun clone(): Any { /* intrinsic */ }
}
+214
View File
@@ -16,40 +16,115 @@
package kotlin
/**
* Classes that inherit from this trait can be represented as a sequence of elements that can
* be iterated over.
* @param T the type of element being iterated over.
*/
public trait Iterable<out T> {
/**
* Returns an iterator over the elements of this object.
*/
public fun iterator(): Iterator<T>
}
/**
* Classes that inherit from this trait can be represented as a sequence of elements that can
* be iterated over and that supports removing elements during iteration.
*/
public trait MutableIterable<out T> : Iterable<T> {
/**
* Returns an iterator over the elementrs of this sequence that supports removing elements during iteration.
*/
override fun iterator(): MutableIterator<T>
}
/**
* A generic collection of elements. Methods in this trait support only read-only access to the collection;
* read/write access is supported through the [MutableCollection] trait.
* @param E the type of elements contained in the collection.
*/
public trait Collection<out E> : Iterable<E> {
// Query Operations
/**
* Returns the size of the collection.
*/
public fun size(): Int
/**
* Returns `true` if the collection is empty (contains no elements), `false` otherwise.
*/
public fun isEmpty(): Boolean
/**
* Checks if the specified element is contained in this collection.
*/
public fun contains(o: Any?): Boolean
override fun iterator(): Iterator<E>
// Bulk Operations
/**
* Checks if all elements in the specified collection are contained in this collection.
*/
public fun containsAll(c: Collection<Any?>): Boolean
}
/**
* A generic collection of elements that supports adding and removing elements.
*/
public trait MutableCollection<E> : Collection<E>, MutableIterable<E> {
// Query Operations
override fun iterator(): MutableIterator<E>
// Modification Operations
/**
* Adds the specified element to the collection.
*
* @return `true` if the element has been added, `false` if the collection does not support duplicates
* and the element is already contained in the collection.
*/
public fun add(e: E): Boolean
/**
* Removes the specified element from the collection.
*
* @return `true` if the element has been successfully removed; `false` if it was not present in the collection.
*/
public fun remove(o: Any?): Boolean
// Bulk Modification Operations
/**
* Adds all of the elements in the specified collection to this collection.
*
* @return `true` if any of the specified elements was added to the collection, `false` if the collection was not modified.
*/
public fun addAll(c: Collection<E>): Boolean
/**
* Removes all of the elements in the specified collection from this collection.
*
* @return `true` if any of the specified elements was removed from the collection, `false` if the collection was not modified.
*/
public fun removeAll(c: Collection<Any?>): Boolean
/**
* Removes all of the elements not contained in the specified collection from this collection.
*
* @return `true` if any element was removed from the collection, `false` if the collection was not modified.
*/
public fun retainAll(c: Collection<Any?>): Boolean
/**
* Removes all elements from this collection.
*/
public fun clear(): Unit
}
/**
* A generic ordered collection of elements. Methods in this trait support only read-only access to the list;
* read/write access is supported through the [MutableList] trait.
* @param E the type of elements contained in the list.
*/
public trait List<out E> : Collection<E> {
// Query Operations
override fun size(): Int
@@ -61,20 +136,47 @@ public trait List<out E> : Collection<E> {
override fun containsAll(c: Collection<Any?>): Boolean
// Positional Access Operations
/**
* Returns the element at the specified index in the list.
*/
public fun get(index: Int): E
// Search Operations
/**
* Returns the index of the first occurrence of the specified element in the list, or -1 if the specified
* element is not contained in the list.
*/
public fun indexOf(o: Any?): Int
/**
* Returns the index of the last occurrence of the specified element in the list, or -1 if the specified
* element is not contained in the list.
*/
public fun lastIndexOf(o: Any?): Int
// List Iterators
/**
* Returns a list iterator over the elements in this list (in proper sequence).
*/
public fun listIterator(): ListIterator<E>
/**
* Returns a list iterator over the elements in this list (in proper sequence), starting at the specified [index].
*/
public fun listIterator(index: Int): ListIterator<E>
// View
/**
* Returns a view of the portion of this list between the specified [fromIndex] (inclusive) and [toIndex] (exclusive).
* The returned list is backed by this list, so non-structural changes in the returned list are reflected in this list, and vice-versa.
*/
public fun subList(fromIndex: Int, toIndex: Int): List<E>
}
/**
* A generic ordered collection of elements that supports adding and removing elements.
* @param E the type of elements contained in the list.
*/
public trait MutableList<E> : List<E>, MutableCollection<E> {
// Modification Operations
override fun add(e: E): Boolean
@@ -82,14 +184,35 @@ public trait MutableList<E> : List<E>, MutableCollection<E> {
// Bulk Modification Operations
override fun addAll(c: Collection<E>): Boolean
/**
* Inserts all of the elements in the specified collection [c] into this list at the specified [index].
*
* @return `true` if the list was changed as the result of the operation.
*/
public fun addAll(index: Int, c: Collection<E>): Boolean
override fun removeAll(c: Collection<Any?>): Boolean
override fun retainAll(c: Collection<Any?>): Boolean
override fun clear(): Unit
// Positional Access Operations
/**
* Replaces the element at the specified position in this list with the specified element.
*
* @return the element previously at the specified position.
*/
public fun set(index: Int, element: E): E
/**
* Inserts an element into the list at the specified [index].
*/
public fun add(index: Int, element: E): Unit
/**
* Removes an element at the specified [index] from the list.
*
* @return the element that has been removed.
*/
public fun remove(index: Int): E
// List Iterators
@@ -100,6 +223,12 @@ public trait MutableList<E> : List<E>, MutableCollection<E> {
override fun subList(fromIndex: Int, toIndex: Int): MutableList<E>
}
/**
* A generic unordered collection of elements that does not support duplicate elements.
* Methods in this trait support only read-only access to the set;
* read/write access is supported through the [MutableSet] trait.
* @param E the type of elements contained in the set.
*/
public trait Set<out E> : Collection<E> {
// Query Operations
override fun size(): Int
@@ -111,6 +240,11 @@ public trait Set<out E> : Collection<E> {
override fun containsAll(c: Collection<Any?>): Boolean
}
/**
* A generic unordered collection of elements that does not support duplicate elements, and supports
* adding and removing elements.
* @param E the type of elements contained in the set.
*/
public trait MutableSet<E> : Set<E>, MutableCollection<E> {
// Query Operations
override fun iterator(): MutableIterator<E>
@@ -126,32 +260,104 @@ public trait MutableSet<E> : Set<E>, MutableCollection<E> {
override fun clear(): Unit
}
/**
* A collection that holds pairs of objects (keys and values) and supports efficiently retrieving
* the value corresponding to each key. Map keys are unique; the map holds only one value for each key.
* Methods in this trait support only read-only access to the map; read-write access is supported through
* the [MutableMap] trait.
* @param K the type of map keys.
* @param V the type of map values.
*/
public trait Map<K, out V> {
// Query Operations
/**
* Returns the number of key/value pairs in the map.
*/
public fun size(): Int
/**
* Returns `true` if the map is empty (contains no elements), `false` otherwise.
*/
public fun isEmpty(): Boolean
/**
* Returns `true` if the map contains the specified [key].
*/
public fun containsKey(key: Any?): Boolean
/**
* Returns `true` if the map maps one or more keys to the specified [value].
*/
public fun containsValue(value: Any?): Boolean
/**
* Returns the value corresponding to the given [key], or `null` if such a key is not present in the map.
*/
public fun get(key: Any?): V?
// Views
/**
* Returns a [Set] of all keys in this map.
*/
public fun keySet(): Set<K>
/**
* Returns a [Collection] of all values in this map. Note that this collection may contain duplicate values.
*/
public fun values(): Collection<V>
/**
* Returns a [Set] of all key/value pairs in this map.
*/
public fun entrySet(): Set<Map.Entry<K, V>>
/**
* Represents a key/value pair held by a [Map].
*/
public trait Entry<out K, out V> {
/**
* Returns the key of this key/value pair.
*/
public fun getKey(): K
/**
* Returns the value of this key/value pair.
*/
public fun getValue(): V
}
}
/**
* A modifiable collection that holds pairs of objects (keys and values) and supports efficiently retrieving
* the value corresponding to each key. Map keys are unique; the map holds only one value for each key.
* @param K the type of map keys.
* @param V the type of map values.
*/
public trait MutableMap<K, V> : Map<K, V> {
// Modification Operations
/**
* Associates the specified [value] with the specified [key] in the map.
*
* @return the previous value associated with the key, or `null` if the key was not present in the map.
*/
public fun put(key: K, value: V): V?
/**
* Removes the specified key and its corresponding value from this map.
*
* @return the previous value associated with the key, or `null` if the key was not present in the map.
*/
public fun remove(key: Any?): V?
// Bulk Modification Operations
/**
* Updates this map with key/value pairs from the specified map [m].
*/
public fun putAll(m: Map<out K, V>): Unit
/**
* Removes all elements from this map.
*/
public fun clear(): Unit
// Views
@@ -159,7 +365,15 @@ public trait MutableMap<K, V> : Map<K, V> {
override fun values(): MutableCollection<V>
override fun entrySet(): MutableSet<MutableMap.MutableEntry<K, V>>
/**
* Represents a key/value pair held by a [MutableMap].
*/
public trait MutableEntry<K,V>: Map.Entry<K, V> {
/**
* Changes the value associated with the key of this entry.
*
* @return the previous value corresponding to the key.
*/
public fun setValue(value: V): V
}
}
@@ -16,6 +16,14 @@
package kotlin
/**
* Classes which inherit from this trait have a defined total ordering between their instances.
*/
public trait Comparable<in T> {
/**
* Compares this object with the specified object for order. Returns zero if this object is equal
* to the specified [other] object, a negative number if it's less than [other], or a positive number
* if it's greater than [other].
*/
public fun compareTo(other: T): Int
}
+13
View File
@@ -16,8 +16,21 @@
package kotlin
/**
* The common base class of all enum classes.
* See the [Kotlin language documentation](http://kotlinlang.org/docs/reference/enum-classes.html) for more
* information on enum classes.
*/
public abstract class Enum<E : Enum<E>>(name: String, ordinal: Int): Comparable<E> {
/**
* Returns the name of this enum constant, exactly as declared in its enum declaration.
*/
public final fun name(): String
/**
* Returns the ordinal of this enumeration constant (its position in its enum declaration, where the initial constant
* is assigned an ordinal of zero).
*/
public final fun ordinal(): Int
public override final fun compareTo(other: E): Int
+54
View File
@@ -16,16 +16,50 @@
package kotlin
/**
* Superclass for all platform classes representing numeric values.
*/
public abstract class Number {
/**
* Returns the value of this number as a [Double], which may involve rounding.
*/
public abstract fun toDouble(): Double
/**
* Returns the value of this number as a [Float], which may involve rounding.
*/
public abstract fun toFloat(): Float
/**
* Returns the value of this number as a [Long], which may involve rounding or truncation.
*/
public abstract fun toLong(): Long
/**
* Returns the value of this number as an [Int], which may involve rounding or truncation.
*/
public abstract fun toInt(): Int
/**
* Returns the [Char] with the numeric value equal to this number, truncated to 16 bits if appropriate.
*/
public abstract fun toChar(): Char
/**
* Returns the value of this number as a [Short], which may involve rounding or truncation.
*/
public abstract fun toShort(): Short
/**
* Returns the value of this number as a [Byte], which may involve rounding or truncation.
*/
public abstract fun toByte(): Byte
}
/**
* Represents a double-precision 64-bit IEEE 754 floating point number. On the JVM, non-nullable
* values of this type are represented as values of the primitive type `double`.
*/
public class Double private () : Number, Comparable<Double> {
public override fun compareTo(other: Double): Int
public fun compareTo(other: Float): Int
@@ -96,6 +130,10 @@ public class Double private () : Number, Comparable<Double> {
public override fun toByte(): Byte
}
/**
* Represents a single-precision 32-bit IEEE 754 floating point number. On the JVM, non-nullable
* values of this type are represented as values of the primitive type `float`.
*/
public class Float private () : Number, Comparable<Float> {
public fun compareTo(other: Double): Int
public override fun compareTo(other: Float): Int
@@ -167,6 +205,10 @@ public class Float private () : Number, Comparable<Float> {
public override fun toByte(): Byte
}
/**
* Represents a 64-bit signed integer. On the JVM, non-nullable values of this type are represented
* as values of the primitive type `long`.
*/
public class Long private () : Number, Comparable<Long> {
public fun compareTo(other: Double): Int
public fun compareTo(other: Float) : Int
@@ -246,6 +288,10 @@ public class Long private () : Number, Comparable<Long> {
public override fun toByte(): Byte
}
/**
* Represents a 32-bit signed integer. On the JVM, non-nullable values of this type are represented
* as values of the primitive type `int`.
*/
public class Int private () : Number, Comparable<Int> {
public fun compareTo(other: Double): Int
public fun compareTo(other: Float) : Int
@@ -325,6 +371,10 @@ public class Int private () : Number, Comparable<Int> {
public override fun toByte(): Byte
}
/**
* Represents a 16-bit signed integer. On the JVM, non-nullable values of this type are represented
* as values of the primitive type `short`.
*/
public class Short private () : Number, Comparable<Short> {
public fun compareTo(other: Double): Int
public fun compareTo(other: Float) : Int
@@ -396,6 +446,10 @@ public class Short private () : Number, Comparable<Short> {
public override fun toByte(): Byte
}
/**
* Represents a 8-bit signed integer. On the JVM, non-nullable values of this type are represented
* as values of the primitive type `byte`.
*/
public class Byte private () : Number, Comparable<Byte> {
public fun compareTo(other: Double): Int
public fun compareTo(other: Float) : Int
+6
View File
@@ -21,8 +21,14 @@ package kotlin
* implemented as instances of this class.
*/
public class String : Comparable<String>, CharSequence {
/**
* Returns a string obtained by concatenating this string with the string representation of the given [other] object.
*/
public fun plus(other: Any?): String
/**
* Returns the character at the specified [index].
*/
public fun get(index: Int): Char
public override fun length(): Int
+15
View File
@@ -16,10 +16,25 @@
package kotlin
/**
* The base class for all errors and exceptions. Only instances of this class can be thrown or caught.
*
* @param message the detail message string.
* @param cause the cause of this throwable.
*/
public open class Throwable(message: String? = null, cause: Throwable? = null) {
/**
* Returns the detail message of this throwable.
*/
public fun getMessage(): String?
/**
* Returns the cause of this throwable.
*/
public fun getCause(): Throwable?
/**
* Prints the stack trace of this throwable to the standard output.
*/
public fun printStackTrace(): Unit
}
@@ -12,20 +12,44 @@ import kotlin.jvm.internal.Intrinsic
[Intrinsic("kotlin.arrays.array")] public fun <reified T> array(vararg t : T) : Array<T> = t as Array<T>
// "constructors" for primitive types array
/**
* Returns an array containing the specified [Double] numbers.
*/
[Intrinsic("kotlin.arrays.array")] public fun doubleArray(vararg content : Double) : DoubleArray = content
/**
* Returns an array containing the specified [Float] numbers.
*/
[Intrinsic("kotlin.arrays.array")] public fun floatArray(vararg content : Float) : FloatArray = content
/**
* Returns an array containing the specified [Long] numbers.
*/
[Intrinsic("kotlin.arrays.array")] public fun longArray(vararg content : Long) : LongArray = content
/**
* Returns an array containing the specified [Int] numbers.
*/
[Intrinsic("kotlin.arrays.array")] public fun intArray(vararg content : Int) : IntArray = content
/**
* Returns an array containing the specified characters.
*/
[Intrinsic("kotlin.arrays.array")] public fun charArray(vararg content : Char) : CharArray = content
/**
* Returns an array containing the specified [Short] numbers.
*/
[Intrinsic("kotlin.arrays.array")] public fun shortArray(vararg content : Short) : ShortArray = content
/**
* Returns an array containing the specified [Byte] numbers.
*/
[Intrinsic("kotlin.arrays.array")] public fun byteArray(vararg content : Byte) : ByteArray = content
/**
* Returns an array containing the specified boolean values.
*/
[Intrinsic("kotlin.arrays.array")] public fun booleanArray(vararg content : Boolean) : BooleanArray = content
/**
@@ -21,6 +21,10 @@ public fun <T> Iterator<T>.iterator(): Iterator<T> = this
*/
public data class IndexedValue<out T>(public val index: Int, public val value: T)
/**
* A wrapper over another [Iterable] (or any other object that can produce an [Iterator]) that returns
* an indexing iterator.
*/
public class IndexingIterable<out T>(private val iteratorFactory: () -> Iterator<T>) : Iterable<IndexedValue<T>> {
override fun iterator(): Iterator<IndexedValue<T>> = IndexingIterator(iteratorFactory())
}
@@ -12,6 +12,13 @@ public fun <T> streamOf(progression: Progression<T>): Stream<T> = object : Strea
override fun iterator(): Iterator<T> = progression.iterator()
}
/**
* A stream that returns the values from the underlying [stream] that either match or do not match
* the specified [predicate].
*
* @param sendWhen If `true`, values for which the predicate returns `true` are returned. Otherwise,
* values for which the predicate returns `false` are returned
*/
public class FilteringStream<T>(private val stream: Stream<T>,
private val sendWhen: Boolean = true,
private val predicate: (T) -> Boolean
@@ -78,6 +85,10 @@ public class TransformingIndexedStream<T, R>(private val stream: Stream<T>, priv
}
}
/**
* A stream which combines values from the underlying [stream] with their indices and returns them as
* [IndexedValue] objects.
*/
public class IndexingStream<T>(private val stream: Stream<T>) : Stream<IndexedValue<T>> {
override fun iterator(): Iterator<IndexedValue<T>> = object : Iterator<IndexedValue<T>> {
val iterator = stream.iterator()
@@ -248,6 +259,10 @@ public class TakeWhileStream<T>(private val stream: Stream<T>,
}
}
/**
* A stream that skips the specified number of values from the underlying stream and returns
* all values after that.
*/
public class DropStream<T>(private val stream: Stream<T>,
private val count: Int
) : Stream<T> {
@@ -280,6 +295,10 @@ public class DropStream<T>(private val stream: Stream<T>,
}
}
/**
* A stream that skips the values from the underlying stream while the given [predicate] returns `true` and returns
* all values after that.
*/
public class DropWhileStream<T>(private val stream: Stream<T>,
private val predicate: (T) -> Boolean
) : Stream<T> {
@@ -322,6 +341,10 @@ public class DropWhileStream<T>(private val stream: Stream<T>,
}
}
/**
* A stream which repeatedly calls the specified [producer] function and returns its return values, until
* `null` is returned from [producer].
*/
public class FunctionStream<T : Any>(private val producer: () -> T?) : Stream<T> {
override fun iterator(): Iterator<T> = object : Iterator<T> {
var nextState: Int = -1 // -1 for unknown, 0 for done, 1 for continue
@@ -18,8 +18,10 @@ package kotlin.jvm.internal.unsafe
import kotlin.jvm.internal.Intrinsic
/** @suppress */
[Intrinsic("kotlin.jvm.internal.unsafe.monitorEnter")]
public fun monitorEnter(monitor: Any): Unit = throw UnsupportedOperationException("This function can only be used privately")
/** @suppress */
[Intrinsic("kotlin.jvm.internal.unsafe.monitorExit")]
public fun monitorExit(monitor: Any): Unit = throw UnsupportedOperationException("This function can only be used privately")
+12 -4
View File
@@ -3,6 +3,8 @@ package kotlin
import java.io.StringReader
import java.util.ArrayList
import java.util.Locale
import java.util.regex.MatchResult
import java.util.regex.Pattern
import java.nio.charset.Charset
public fun String.lastIndexOf(str: String): Int = (this as java.lang.String).lastIndexOf(str)
@@ -128,6 +130,12 @@ public fun String.toDouble(): Double = java.lang.Double.parseDouble(this)
public fun String.toCharList(): List<Char> = toCharArray().toList()
/**
* Returns a subsequence of this sequence.
*
* @param start the start index (inclusive).
* @param end the end index (exclusive).
*/
public fun CharSequence.get(start: Int, end: Int): CharSequence = subSequence(start, end)
public fun String.toByteArray(charset: String): ByteArray = (this as java.lang.String).getBytes(charset)
@@ -150,8 +158,8 @@ public fun CharSequence.slice(range: IntRange): CharSequence {
}
/**
* Converts the string into a regular expression [[Pattern]] optionally
* with the specified flags from [[Pattern]] or'd together
* Converts the string into a regular expression [Pattern] optionally
* with the specified flags from [Pattern] or'd together
* so that strings can be split or matched on.
*/
public fun String.toRegex(flags: Int = 0): java.util.regex.Pattern {
@@ -168,7 +176,7 @@ public val String.reader: StringReader
* Returns a copy of this string capitalised if it is not empty or already starting with an upper case letter,
* otherwise returns this.
*
* @sample test.text.StringJVMTest.capitalize
* @sample test.text.StringTest.capitalize
*/
public fun String.capitalize(): String {
return if (isNotEmpty() && charAt(0).isLowerCase()) substring(0, 1).toUpperCase() + substring(1) else this
@@ -178,7 +186,7 @@ public fun String.capitalize(): String {
* Returns a copy of this string with the first letter lowercased if it is not empty or already starting with
* a lower case letter, otherwise returns this.
*
* @sample test.text.StringJVMTest.decapitalize
* @sample test.text.StringTest.decapitalize
*/
public fun String.decapitalize(): String {
return if (isNotEmpty() && charAt(0).isUpperCase()) substring(0, 1).toLowerCase() + substring(1) else this
+2 -2
View File
@@ -51,8 +51,8 @@ public fun <T : Comparable<*>> compareValues(a: T?, b: T?): Int {
/**
* Creates a comparator using the sequence of functions to calculate a result of comparison.
* The functions are called sequentially, receive the given values [a] and [b] and return [Comparable]
* objects. As soon as the [Comparable] instances returned by a function for [a] and [b] values do not
* The functions are called sequentially, receive the given values `a` and `b` and return [Comparable]
* objects. As soon as the [Comparable] instances returned by a function for `a` and `b` values do not
* compare as equal, the result of that comparison is returned from the [Comparator].
*/
public fun <T> compareBy(vararg functions: (T) -> Comparable<*>?): Comparator<T> {
@@ -1,5 +1,8 @@
package kotlin
/**
* Represents a range of [Comparable] values.
*/
public class ComparableRange<T: Comparable<T>> (
override val start: T,
override val end: T
@@ -18,6 +21,10 @@ public class ComparableRange<T: Comparable<T>> (
}
}
/**
* Creates a range from this [Comparable] value to the specified [that] value. This value
* needs to be smaller than [that] value, otherwise the returned range will be empty.
*/
public fun <T: Comparable<T>> T.rangeTo(that: T): ComparableRange<T> {
return ComparableRange(this, that)
}
@@ -28,7 +28,7 @@ class ListSpecificTest {
assertEquals(listOf('C', 'A', 'D'), list.slice(iter))
}
Test fun utils() {
Test fun lastIndex() {
assertEquals(-1, empty.lastIndex)
assertEquals(1, data.lastIndex)
}