All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.kamelia.sprinkler.collection.readonly.ReadOnlyMapImpl.kt Maven / Gradle / Ivy

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()

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy