Singleton implementation for Attributes.EMPTY
This commit is contained in:
parent
ac851bea62
commit
48b334a2b6
@ -30,7 +30,15 @@ public interface Attributes {
|
|||||||
override fun hashCode(): Int
|
override fun hashCode(): Int
|
||||||
|
|
||||||
public companion object {
|
public companion object {
|
||||||
public val EMPTY: Attributes = MapAttributes(emptyMap())
|
public val EMPTY: Attributes = object : Attributes {
|
||||||
|
override val content: Map<out Attribute<*>, Any?> get() = emptyMap()
|
||||||
|
|
||||||
|
override fun toString(): String = "Attributes.EMPTY"
|
||||||
|
|
||||||
|
override fun equals(other: Any?): Boolean = (other as? Attributes)?.isEmpty() ?: false
|
||||||
|
|
||||||
|
override fun hashCode(): Int = Unit.hashCode()
|
||||||
|
}
|
||||||
|
|
||||||
public fun equals(a1: Attributes, a2: Attributes): Boolean =
|
public fun equals(a1: Attributes, a2: Attributes): Boolean =
|
||||||
a1.keys == a2.keys && a1.keys.all { a1[it] == a2[it] }
|
a1.keys == a2.keys && a1.keys.all { a1[it] == a2[it] }
|
||||||
@ -43,7 +51,7 @@ internal class MapAttributes(override val content: Map<out Attribute<*>, Any?>)
|
|||||||
override fun hashCode(): Int = content.hashCode()
|
override fun hashCode(): Int = content.hashCode()
|
||||||
}
|
}
|
||||||
|
|
||||||
public fun Attributes.isEmpty(): Boolean = content.isEmpty()
|
public fun Attributes.isEmpty(): Boolean = keys.isEmpty()
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get attribute value or default
|
* Get attribute value or default
|
||||||
|
@ -15,9 +15,9 @@ public class AttributesBuilder<out O> internal constructor() : Attributes {
|
|||||||
|
|
||||||
private val map = mutableMapOf<Attribute<*>, Any?>()
|
private val map = mutableMapOf<Attribute<*>, Any?>()
|
||||||
|
|
||||||
override fun toString(): String = "Attributes(value=${content.entries})"
|
override fun toString(): String = "Attributes(value=${map.entries})"
|
||||||
override fun equals(other: Any?): Boolean = other is Attributes && Attributes.equals(this, other)
|
override fun equals(other: Any?): Boolean = other is Attributes && Attributes.equals(this, other)
|
||||||
override fun hashCode(): Int = content.hashCode()
|
override fun hashCode(): Int = map.hashCode()
|
||||||
|
|
||||||
override val content: Map<out Attribute<*>, Any?> get() = map
|
override val content: Map<out Attribute<*>, Any?> get() = map
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user