go.mod: update to github.com/tchap/go-patricia/v2 v2.3.1
Signed-off-by: Shengjing Zhu <zhsj@debian.org>
This commit is contained in:
@@ -20,6 +20,7 @@ type childList interface {
|
||||
next(b byte) *Trie
|
||||
walk(prefix *Prefix, visitor VisitorFunc) error
|
||||
print(w io.Writer, indent int)
|
||||
clone() childList
|
||||
total() int
|
||||
}
|
||||
|
||||
@@ -143,6 +144,17 @@ func (list *sparseChildList) total() int {
|
||||
return tot
|
||||
}
|
||||
|
||||
func (list *sparseChildList) clone() childList {
|
||||
clones := make(tries, len(list.children), cap(list.children))
|
||||
for i, child := range list.children {
|
||||
clones[i] = child.Clone()
|
||||
}
|
||||
|
||||
return &sparseChildList{
|
||||
children: clones,
|
||||
}
|
||||
}
|
||||
|
||||
func (list *sparseChildList) print(w io.Writer, indent int) {
|
||||
for _, child := range list.children {
|
||||
if child != nil {
|
||||
@@ -314,6 +326,32 @@ func (list *denseChildList) print(w io.Writer, indent int) {
|
||||
}
|
||||
}
|
||||
|
||||
func (list *denseChildList) clone() childList {
|
||||
clones := make(tries, cap(list.children))
|
||||
|
||||
if list.numChildren != 0 {
|
||||
clonedCount := 0
|
||||
for i := list.headIndex; i < len(list.children); i++ {
|
||||
child := list.children[i]
|
||||
if child != nil {
|
||||
clones[i] = child.Clone()
|
||||
clonedCount++
|
||||
if clonedCount == list.numChildren {
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return &denseChildList{
|
||||
min: list.min,
|
||||
max: list.max,
|
||||
numChildren: list.numChildren,
|
||||
headIndex: list.headIndex,
|
||||
children: clones,
|
||||
}
|
||||
}
|
||||
|
||||
func (list *denseChildList) total() int {
|
||||
tot := 0
|
||||
for _, child := range list.children {
|
||||
@@ -77,6 +77,18 @@ func MaxChildrenPerSparseNode(value int) Option {
|
||||
}
|
||||
}
|
||||
|
||||
// Clone makes a copy of an existing trie.
|
||||
// Items stored in both tries become shared, obviously.
|
||||
func (trie *Trie) Clone() *Trie {
|
||||
return &Trie{
|
||||
prefix: append(Prefix(nil), trie.prefix...),
|
||||
item: trie.item,
|
||||
maxPrefixPerNode: trie.maxPrefixPerNode,
|
||||
maxChildrenPerSparseNode: trie.maxChildrenPerSparseNode,
|
||||
children: trie.children.clone(),
|
||||
}
|
||||
}
|
||||
|
||||
// Item returns the item stored in the root of this trie.
|
||||
func (trie *Trie) Item() Item {
|
||||
return trie.item
|
||||
6
vendor/modules.txt
vendored
6
vendor/modules.txt
vendored
@@ -345,8 +345,6 @@ github.com/prometheus/procfs/internal/fs
|
||||
github.com/prometheus/procfs/internal/util
|
||||
# github.com/russross/blackfriday/v2 v2.0.1
|
||||
github.com/russross/blackfriday/v2
|
||||
# github.com/satori/go.uuid v1.2.0
|
||||
## explicit
|
||||
# github.com/shurcooL/sanitized_anchor_name v1.0.0
|
||||
github.com/shurcooL/sanitized_anchor_name
|
||||
# github.com/sirupsen/logrus v1.8.1
|
||||
@@ -360,9 +358,9 @@ github.com/stefanberger/go-pkcs11uri
|
||||
## explicit
|
||||
github.com/stretchr/testify/assert
|
||||
github.com/stretchr/testify/require
|
||||
# github.com/tchap/go-patricia v2.2.6+incompatible
|
||||
# github.com/tchap/go-patricia/v2 v2.3.1
|
||||
## explicit
|
||||
github.com/tchap/go-patricia/patricia
|
||||
github.com/tchap/go-patricia/v2/patricia
|
||||
# github.com/urfave/cli v1.22.2 => github.com/urfave/cli v1.22.1
|
||||
## explicit
|
||||
github.com/urfave/cli
|
||||
|
||||
Reference in New Issue
Block a user