Skip to content

Commit 4a65017

Browse files
convolute StringMultiTrie generics (to improve theoretical extensibility)
1 parent 1f25f68 commit 4a65017

File tree

2 files changed

+21
-16
lines changed

2 files changed

+21
-16
lines changed

enigma/src/main/java/org/quiltmc/enigma/util/multi_trie/CompositeStringMultiTrie.java

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,9 @@ public StringMultiTrie.View<V, Branch<V>, Root<V>> getView() {
7272
return this.view;
7373
}
7474

75-
public static final class Root<V> extends StringMultiTrie.Root<V, Branch<V>> {
75+
public static final class Root<V>
76+
extends MutableMapNode<Character, V, Branch<V>>
77+
implements MutableCharacterNode<V, Branch<V>> {
7678
private final Collection<V> leaves;
7779
private final Map<Character, CompositeStringMultiTrie.Branch<V>> branches;
7880

@@ -110,7 +112,9 @@ public CharacterNode<V> getView() {
110112
}
111113
}
112114

113-
public static final class Branch<V> extends StringMultiTrie.Branch<V, Branch<V>> {
115+
public static final class Branch<V>
116+
extends MutableMapNode.Branch<Character, V, Branch<V>>
117+
implements MutableCharacterNode<V, Branch<V>> {
114118
private final MutableMapNode<Character, V, CompositeStringMultiTrie.Branch<V>> parent;
115119
private final Character key;
116120

@@ -192,9 +196,9 @@ protected CompositeStringMultiTrie<V> getViewed() {
192196
}
193197

194198
private static final class NodeView<V> extends Node.View<Character, V> implements CharacterNode<V> {
195-
private final MutableCharacterNode<V, Branch<V>> viewed;
199+
final MutableCharacterNode<V, Branch<V>> viewed;
196200

197-
private NodeView(MutableCharacterNode<V, Branch<V>> viewed) {
201+
NodeView(MutableCharacterNode<V, Branch<V>> viewed) {
198202
this.viewed = viewed;
199203
}
200204

enigma/src/main/java/org/quiltmc/enigma/util/multi_trie/StringMultiTrie.java

Lines changed: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
11
package org.quiltmc.enigma.util.multi_trie;
22

33
import org.quiltmc.enigma.util.Utils;
4-
import org.quiltmc.enigma.util.multi_trie.StringMultiTrie.Branch;
5-
import org.quiltmc.enigma.util.multi_trie.StringMultiTrie.Root;
4+
import org.quiltmc.enigma.util.multi_trie.StringMultiTrie.MutableCharacterNode;
65

76
import java.util.Optional;
87
import java.util.function.BiFunction;
@@ -26,7 +25,12 @@
2625
* @param <V> the type of values
2726
* @param <B> the type of branch nodes
2827
*/
29-
public abstract class StringMultiTrie<V, B extends Branch<V, B>, R extends Root<V, B>>
28+
public abstract class StringMultiTrie
29+
<
30+
V,
31+
B extends MutableMapNode.Branch<Character, V, B> & MutableCharacterNode<V, B>,
32+
R extends MutableMapNode<Character, V, B> & MutableCharacterNode<V, B>
33+
>
3034
implements MutableMultiTrie<Character, V> {
3135
protected static Optional<Character> tryToggleCase(char c) {
3236
if (Character.isUpperCase(c)) {
@@ -154,15 +158,12 @@ default MutableCharacterNode<V, B> nextIgnoreCase(Character key) {
154158
}
155159
}
156160

157-
public abstract static class Root<V, B extends Branch<V, B>>
158-
extends MutableMapNode<Character, V, B>
159-
implements MutableCharacterNode<V, B> { }
160-
161-
public abstract static class Branch<V, B extends Branch<V, B>>
162-
extends MutableMapNode.Branch<Character, V, B>
163-
implements MutableCharacterNode<V, B> { }
164-
165-
public abstract static class View<V, B extends Branch<V, B>, R extends Root<V, B>>
161+
public abstract static class View
162+
<
163+
V,
164+
B extends MutableMapNode.Branch<Character, V, B> & MutableCharacterNode<V, B>,
165+
R extends MutableMapNode<Character, V, B> & MutableCharacterNode<V, B>
166+
>
166167
implements MultiTrie<Character, V> {
167168
@Override
168169
public CharacterNode<V> getRoot() {

0 commit comments

Comments
 (0)