diff options
| author | Danny Lin <danny@kdrag0n.dev> | 2021-08-30 02:00:47 -0700 |
|---|---|---|
| committer | Danny Lin <danny@kdrag0n.dev> | 2021-08-30 02:00:47 -0700 |
| commit | b7e69f8389837ad0fadeb4b2740e04a03e09a80f (patch) | |
| tree | 9d964f001cb10f6bce804ea60ca4cb90949c3724 | |
| parent | 379d5f03a35314e44ca00c46821eb7f8dfd300ac (diff) | |
conversion: Prevent adding duplicate conversions
| -rw-r--r-- | src/commonMain/kotlin/dev/kdrag0n/colorkt/conversion/ConversionGraph.kt | 16 |
1 files changed, 5 insertions, 11 deletions
diff --git a/src/commonMain/kotlin/dev/kdrag0n/colorkt/conversion/ConversionGraph.kt b/src/commonMain/kotlin/dev/kdrag0n/colorkt/conversion/ConversionGraph.kt index bb457d1..60cd80b 100644 --- a/src/commonMain/kotlin/dev/kdrag0n/colorkt/conversion/ConversionGraph.kt +++ b/src/commonMain/kotlin/dev/kdrag0n/colorkt/conversion/ConversionGraph.kt @@ -21,7 +21,7 @@ public fun interface ColorConverter<F : Color, T : Color> { */ public object ConversionGraph { // Adjacency list: [vertex] = edges - private val graph = mutableMapOf<ColorType, MutableList<ConversionEdge>>() + private val graph = mutableMapOf<ColorType, MutableSet<ConversionEdge>>() private val pathCache = HashMap<Pair<ColorType, ColorType>, List<ColorConverter<Color, Color>>>() init { @@ -50,16 +50,10 @@ public object ConversionGraph { ) { val node = ConversionEdge(from, to, converter) - if (from in graph) { - graph[from]!! += node - } else { - graph[from] = mutableListOf(node) - } - if (to in graph) { - graph[to]!! += node - } else { - graph[to] = mutableListOf(node) - } + graph[from]?.let { it += node } + ?: graph.put(from, hashSetOf(node)) + graph[to]?.let { it += node } + ?: graph.put(to, hashSetOf(node)) } private fun findPath(from: ColorType, to: ColorType): List<ColorConverter<Color, Color>>? { |
