MCPcopy
hub / github.com/grpc-ecosystem/grpc-gateway / addSeqs

Function addSeqs

utilities/trie.go:87–123  ·  view source on GitHub ↗
(da *DoubleArray, seqs [][]int, pos int, n node)

Source from the content-addressed store, hash-verified

85}
86
87func addSeqs(da *DoubleArray, seqs [][]int, pos int, n node) {
88 ensureSize(da, pos)
89
90 children := n.children(seqs)
91 var i int
92 for i = 1; ; i++ {
93 ok := func() bool {
94 for _, child := range children {
95 code := child.value(seqs)
96 j := i + code
97 ensureSize(da, j)
98 if da.Check[j] != 0 {
99 return false
100 }
101 }
102 return true
103 }()
104 if ok {
105 break
106 }
107 }
108 da.Base[pos] = i
109 for _, child := range children {
110 code := child.value(seqs)
111 j := i + code
112 da.Check[j] = pos + 1
113 }
114 terminator := len(da.Encoding)
115 for _, child := range children {
116 code := child.value(seqs)
117 if code == terminator {
118 continue
119 }
120 j := i + code
121 addSeqs(da, seqs, j, *child)
122 }
123}
124
125func ensureSize(da *DoubleArray, i int) {
126 for i >= len(da.Base) {

Callers 1

NewDoubleArrayFunction · 0.85

Calls 3

ensureSizeFunction · 0.85
childrenMethod · 0.80
valueMethod · 0.80

Tested by

no test coverage detected