Package com.ibm.icu.util
Class StringTrieBuilder.SplitBranchNode
- java.lang.Object
-
- com.ibm.icu.util.StringTrieBuilder.Node
-
- com.ibm.icu.util.StringTrieBuilder.BranchNode
-
- com.ibm.icu.util.StringTrieBuilder.SplitBranchNode
-
- Enclosing class:
- StringTrieBuilder
private static final class StringTrieBuilder.SplitBranchNode extends StringTrieBuilder.BranchNode
-
-
Field Summary
Fields Modifier and Type Field Description private StringTrieBuilder.Node
greaterOrEqual
private StringTrieBuilder.Node
lessThan
private char
unit
-
Fields inherited from class com.ibm.icu.util.StringTrieBuilder.BranchNode
firstEdgeNumber, hash
-
Fields inherited from class com.ibm.icu.util.StringTrieBuilder.Node
offset
-
-
Constructor Summary
Constructors Constructor Description SplitBranchNode(char middleUnit, StringTrieBuilder.Node lessThanNode, StringTrieBuilder.Node greaterOrEqualNode)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description boolean
equals(java.lang.Object other)
int
hashCode()
int
markRightEdgesFirst(int edgeNumber)
Traverses the Node graph and numbers branch edges, with rightmost edges first.void
write(StringTrieBuilder builder)
-
Methods inherited from class com.ibm.icu.util.StringTrieBuilder.Node
add, getOffset, register, writeUnlessInsideRightEdge
-
-
-
-
Field Detail
-
unit
private char unit
-
lessThan
private StringTrieBuilder.Node lessThan
-
greaterOrEqual
private StringTrieBuilder.Node greaterOrEqual
-
-
Constructor Detail
-
SplitBranchNode
public SplitBranchNode(char middleUnit, StringTrieBuilder.Node lessThanNode, StringTrieBuilder.Node greaterOrEqualNode)
-
-
Method Detail
-
equals
public boolean equals(java.lang.Object other)
- Overrides:
equals
in classStringTrieBuilder.Node
-
hashCode
public int hashCode()
- Overrides:
hashCode
in classStringTrieBuilder.BranchNode
-
markRightEdgesFirst
public int markRightEdgesFirst(int edgeNumber)
Description copied from class:StringTrieBuilder.Node
Traverses the Node graph and numbers branch edges, with rightmost edges first. This is to avoid writing a duplicate node twice. Branch nodes in this trie data structure are not symmetric. Most branch edges "jump" to other nodes but the rightmost branch edges just continue without a jump. Therefore, write() must write the rightmost branch edge last (trie units are written backwards), and must write it at that point even if it is a duplicate of a node previously written elsewhere. This function visits and marks right branch edges first. Edges are numbered with increasingly negative values because we share the offset field which gets positive values when nodes are written. A branch edge also remembers the first number for any of its edges. When a further-left branch edge has a number in the range of the rightmost edge's numbers, then it will be written as part of the required right edge and we can avoid writing it first. After root.markRightEdgesFirst(-1) the offsets of all nodes are negative edge numbers.- Overrides:
markRightEdgesFirst
in classStringTrieBuilder.Node
- Parameters:
edgeNumber
- The first edge number for this node and its sub-nodes.- Returns:
- An edge number that is at least the maximum-negative of the input edge number and the numbers of this node and all of its sub-nodes.
-
write
public void write(StringTrieBuilder builder)
- Specified by:
write
in classStringTrieBuilder.Node
-
-