aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDanny Lin <danny@kdrag0n.dev>2021-08-30 02:00:47 -0700
committerDanny Lin <danny@kdrag0n.dev>2021-08-30 02:00:47 -0700
commitb7e69f8389837ad0fadeb4b2740e04a03e09a80f (patch)
tree9d964f001cb10f6bce804ea60ca4cb90949c3724
parent379d5f03a35314e44ca00c46821eb7f8dfd300ac (diff)
conversion: Prevent adding duplicate conversions
-rw-r--r--src/commonMain/kotlin/dev/kdrag0n/colorkt/conversion/ConversionGraph.kt16
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>>? {