com.kamelia.sprinkler.collection.readonly.ReadOnlyMapImpl.kt Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of readonly-collections Show documentation
Show all versions of readonly-collections Show documentation
Sprinkler@readonly-collections | Black Kamelia
The newest version!
package com.kamelia.sprinkler.collection.readonly
import com.zwendo.restrikt.annotation.PackagePrivate
@PackagePrivate
internal class ReadOnlyMapImpl(private val inner: Map) : ReadOnlyMap, Map by inner {
override val keys: ReadOnlySet
get() = inner.keys.asReadOnlySet()
override val values: ReadOnlyCollection
get() = inner.values.asReadOnlyCollection()
override val entries: ReadOnlySet>
get() = @Suppress("UNCHECKED_CAST") (ReadOnlyMapEntries(inner.entries) as ReadOnlySet>)
override fun equals(other: Any?): Boolean = inner == other
override fun hashCode(): Int = inner.hashCode()
override fun toString(): String = inner.toString()
class Entry(private val inner: Map.Entry) : ReadOnlyMap.Entry, Map.Entry by inner {
override fun equals(other: Any?): Boolean = inner == other
override fun hashCode(): Int = inner.hashCode()
override fun toString(): String = inner.toString()
}
}
private class ReadOnlyMapEntries(private val inner: Set>) : ReadOnlySet {
override fun iterator() = object : ReadOnlyIterator> {
private var it = inner.iterator()
override fun hasNext(): Boolean = it.hasNext()
override fun next(): ReadOnlyMap.Entry = ReadOnlyMapImpl.Entry(it.next())
}
override val size: Int
get() = inner.size
override fun contains(element: Any?): Boolean = inner.contains(element as Any)
override fun containsAll(elements: Collection): Boolean = inner.containsAll(elements)
override fun isEmpty(): Boolean = inner.isEmpty()
override fun equals(other: Any?): Boolean = inner == other
override fun hashCode(): Int = inner.hashCode()
override fun toString(): String = inner.toString()
}