tendermint/merkle/types.go
2014-05-23 22:43:56 -07:00

68 lines
1.0 KiB
Go

package merkle
import (
"fmt"
)
type Binary interface {
ByteSize() int
SaveTo([]byte) int
Equals(Binary) bool
}
type Value interface {
Binary
}
type Key interface {
Binary
Less(b Key) bool
}
type Db interface {
Get([]byte) []byte
Put([]byte, []byte)
}
type Tree interface {
Root() Node
Size() uint64
Height() uint8
Has(key Key) bool
Get(key Key) Value
Hash() (ByteSlice, uint64)
Save()
Put(Key, Value) bool
Remove(Key) (Value, error)
}
type Node interface {
Binary
Key() Key
Value() Value
Left(Db) Node
Right(Db) Node
Size() uint64
Height() uint8
Has(Db, Key) bool
Get(Db, Key) Value
Hash() (ByteSlice, uint64)
Save(Db)
Put(Db, Key, Value) (Node, bool)
Remove(Db, Key) (Node, Value, error)
}
type NodeIterator func() Node
func NotFound(key Key) error {
return fmt.Errorf("Key was not found.")
}