1package avl23type ITree interface {45 Size() int6 Has(key string) bool7 Get(key string) any8 GetByIndex(index int) (key string, value any)9 Iterate(start, end string, cb IterCbFn) bool10 ReverseIterate(start, end string, cb IterCbFn) bool11 IterateByOffset(offset int, count int, cb IterCbFn) bool12 ReverseIterateByOffset(offset int, count int, cb IterCbFn) bool1314 Set(key string, value any) (updated bool)15 Remove(key string) (value any, removed bool)16}1718type IterCbFn func(key string, value any) bool1920type Tree struct {21 node *Node22}2324func NewTree() *Tree {25 return &Tree{26 node: nil,27 }28}2930func (tree *Tree) Size() int {31 return tree.node.Size()32}3334func (tree *Tree) Has(key string) (has bool) {35 return tree.node.Has(key)36}3738func (tree *Tree) Get(key string) any {39 _, value, _ := tree.node.Get(key)40 return value41}4243func (tree *Tree) GetByIndex(index int) (key string, value any) {44 return tree.node.GetByIndex(index)45}4647func (tree *Tree) Set(key string, value any) (updated bool) {48 newnode, updated := tree.node.Set(key, value)49 tree.node = newnode50 return updated51}5253func (tree *Tree) Remove(key string) (value any, removed bool) {54 newnode, _, value, removed := tree.node.Remove(key)55 tree.node = newnode56 return value, removed57}5859func (tree *Tree) Iterate(start, end string, cb IterCbFn) bool {60 return tree.node.TraverseInRange(start, end, true, true,61 func(node *Node) bool {62 return cb(node.Key(), node.Value())63 },64 )65}6667func (tree *Tree) ReverseIterate(start, end string, cb IterCbFn) bool {68 return tree.node.TraverseInRange(start, end, false, true,69 func(node *Node) bool {70 return cb(node.Key(), node.Value())71 },72 )73}7475func (tree *Tree) IterateByOffset(offset int, count int, cb IterCbFn) bool {76 return tree.node.TraverseByOffset(offset, count, true, true,77 func(node *Node) bool {78 return cb(node.Key(), node.Value())79 },80 )81}8283func (tree *Tree) ReverseIterateByOffset(offset int, count int, cb IterCbFn) bool {84 return tree.node.TraverseByOffset(offset, count, false, true,85 func(node *Node) bool {86 return cb(node.Key(), node.Value())87 },88 )89}9091var _ ITree = (*Tree)(nil)92Signatures reconstructed verbatim from vm/qfuncs — interface params keep their inline definitions.