in src/main/kotlin/jetbrains/buildServer/server/querylang/indexing/SynchronizedCompressedTrie.kt [31:69]
override fun addStringUnsafe(str: String, obj: T?) {
var node = root
var i = 0
while (i < str.length) {
val c = str[i]
var nextNode = node.getNode(c)
if (nextNode == null) {
nextNode = Node(
str.substring(i)
)
node.addEdge(c, nextNode)
i = str.length
node = nextNode
break
}
val prefix = findLargestPrefix(str, i, nextNode.str)
if (nextNode.str.length <= str.length - i && prefix.length == nextNode.str.length) {
i += prefix.length
node = nextNode
} else {
val newNode1 =
Node<T>(prefix)
node.addEdge(c, newNode1)
nextNode.str = nextNode.str.drop(prefix.length)
newNode1.addEdge(nextNode.str.first(), nextNode)
i += prefix.length
node = newNode1
}
}
if (!node.isTerminal) {
stringsTotal.incrementAndGet()
}
node.isTerminal = true
node.obj = obj
}