YTSFlix_Go/vendor/github.com/anacrolix/missinggo/orderedmap/skiplist.go
2018-11-04 15:58:15 +01:00

67 lines
1.1 KiB
Go

package orderedmap
import "github.com/ryszard/goskiplist/skiplist"
type skiplistOrderedMap struct {
sl *skiplist.SkipList
}
func NewSkipList(lesser func(l, r interface{}) bool) *skiplistOrderedMap {
return &skiplistOrderedMap{skiplist.NewCustomMap(lesser)}
}
func (me *skiplistOrderedMap) Set(key interface{}, value interface{}) {
me.sl.Set(key, value)
}
func (me *skiplistOrderedMap) Get(key interface{}) interface{} {
if me == nil {
return nil
}
ret, _ := me.sl.Get(key)
return ret
}
func (me *skiplistOrderedMap) GetOk(key interface{}) (interface{}, bool) {
if me == nil {
return nil, false
}
return me.sl.Get(key)
}
type Iter struct {
it skiplist.Iterator
}
func (me *Iter) Next() bool {
if me == nil {
return false
}
return me.it.Next()
}
func (me *Iter) Value() interface{} {
return me.it.Value()
}
func (me *skiplistOrderedMap) Iter() *Iter {
if me == nil {
return nil
}
return &Iter{me.sl.Iterator()}
}
func (me *skiplistOrderedMap) Unset(key interface{}) {
if me == nil {
return
}
me.sl.Delete(key)
}
func (me *skiplistOrderedMap) Len() int {
if me.sl == nil {
return 0
}
return me.sl.Len()
}