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

kotlin.collections.builders.SetBuilder.kt Maven / Gradle / Ivy

/*
 * Copyright 2010-2020 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.
 */

package kotlin.collections.builders

internal class SetBuilder internal constructor(
    private val backing: MapBuilder
) : MutableSet, AbstractMutableSet() {

    constructor() : this(MapBuilder())

    constructor(initialCapacity: Int) : this(MapBuilder(initialCapacity))

    fun build(): Set {
        backing.build()
        return this
    }

    override val size: Int get() = backing.size
    override fun isEmpty(): Boolean = backing.isEmpty()
    override fun contains(element: E): Boolean = backing.containsKey(element)
    override fun clear() = backing.clear()
    override fun add(element: E): Boolean = backing.addKey(element) >= 0
    override fun remove(element: E): Boolean = backing.removeKey(element) >= 0
    override fun iterator(): MutableIterator = backing.keysIterator()

    override fun addAll(elements: Collection): Boolean {
        backing.checkIsMutable()
        return super.addAll(elements)
    }

    override fun removeAll(elements: Collection): Boolean {
        backing.checkIsMutable()
        return super.removeAll(elements)
    }

    override fun retainAll(elements: Collection): Boolean {
        backing.checkIsMutable()
        return super.retainAll(elements)
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy