You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							51 lines
						
					
					
						
							1003 B
						
					
					
				
			
		
		
		
			
			
			
		
		
	
	
							51 lines
						
					
					
						
							1003 B
						
					
					
				| 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 | |
| }
 |