mirror of
https://github.com/fluencelabs/tendermint
synced 2025-07-31 04:01:55 +00:00
First iteration of the immutable AVL tree
This commit is contained in:
38
merkle/types.go
Normal file
38
merkle/types.go
Normal file
@@ -0,0 +1,38 @@
|
||||
package merkle
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
)
|
||||
|
||||
type Sortable interface {
|
||||
Equals(b Sortable) bool
|
||||
Less(b Sortable) bool
|
||||
}
|
||||
|
||||
type Tree interface {
|
||||
Root() Node
|
||||
|
||||
Size() int
|
||||
Has(key Sortable) bool
|
||||
Get(key Sortable) (value interface{}, err error)
|
||||
|
||||
Put(key Sortable, value interface{}) (err error)
|
||||
Remove(key Sortable) (value interface{}, err error)
|
||||
}
|
||||
|
||||
type Node interface {
|
||||
Key() Sortable
|
||||
Value() interface{}
|
||||
Left() Node
|
||||
Right() Node
|
||||
|
||||
Size() int
|
||||
Has(key Sortable) bool
|
||||
Get(key Sortable) (value interface{}, err error)
|
||||
}
|
||||
|
||||
type NodeIterator func() (node Node, next NodeIterator)
|
||||
|
||||
func NotFound(key Sortable) error {
|
||||
return fmt.Errorf("Key was not found.")
|
||||
}
|
Reference in New Issue
Block a user