123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 |
- 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
- }
|