package skiplist import "bytes" func compareElement(a *SkipListElement, key []byte) int { if len(a.Key) == 0 { return -1 } return bytes.Compare(a.Key, key) } func (node *SkipListElement) Reference() *SkipListElementReference { if node == nil { return nil } return &SkipListElementReference{ ElementPointer: node.Id, Key: node.Key, } } func (t *SkipList) SaveElement(element *SkipListElement) error { if element == nil { return nil } return t.ListStore.SaveElement(element.Id, element) } func (t *SkipList) DeleteElement(element *SkipListElement) error { if element == nil { return nil } return t.ListStore.DeleteElement(element.Id) } func (t *SkipList) LoadElement(ref *SkipListElementReference) (*SkipListElement, error) { if ref.IsNil() { return nil, nil } return t.ListStore.LoadElement(ref.ElementPointer) } func (ref *SkipListElementReference) IsNil() bool { if ref == nil { return true } if len(ref.Key) == 0 { return true } return false }