tendermint/merkle/simple_map.go

27 lines
541 B
Go

package merkle
type SimpleMap struct {
kvz KVPairs
}
func NewSimpleMap() *SimpleMap {
return &SimpleMap{
kvz: nil,
}
}
func (sm *SimpleMap) Set(k string, o interface{}) {
sm.kvz = append(sm.kvz, KVPair{Key: k, Value: o})
}
// Merkle root hash of items sorted by key.
// NOTE: Behavior is undefined when key is duplicate.
func (sm *SimpleMap) Hash() []byte {
sm.kvz.Sort()
kvPairsH := make([]Hashable, 0, len(sm.kvz))
for _, kvp := range sm.kvz {
kvPairsH = append(kvPairsH, kvp)
}
return SimpleHashFromHashables(kvPairsH)
}