mirror of
				https://github.com/go-gitea/gitea
				synced 2025-10-31 11:28:24 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			58 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			58 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| // Copyright (c) 2012, Suryandaru Triandana <syndtr@gmail.com>
 | |
| // All rights reserved.
 | |
| //
 | |
| // Use of this source code is governed by a BSD-style license that can be
 | |
| // found in the LICENSE file.
 | |
| 
 | |
| // Package comparer provides interface and implementation for ordering
 | |
| // sets of data.
 | |
| package comparer
 | |
| 
 | |
| // BasicComparer is the interface that wraps the basic Compare method.
 | |
| type BasicComparer interface {
 | |
| 	// Compare returns -1, 0, or +1 depending on whether a is 'less than',
 | |
| 	// 'equal to' or 'greater than' b. The two arguments can only be 'equal'
 | |
| 	// if their contents are exactly equal. Furthermore, the empty slice
 | |
| 	// must be 'less than' any non-empty slice.
 | |
| 	Compare(a, b []byte) int
 | |
| }
 | |
| 
 | |
| // Comparer defines a total ordering over the space of []byte keys: a 'less
 | |
| // than' relationship.
 | |
| type Comparer interface {
 | |
| 	BasicComparer
 | |
| 
 | |
| 	// Name returns name of the comparer.
 | |
| 	//
 | |
| 	// The Level-DB on-disk format stores the comparer name, and opening a
 | |
| 	// database with a different comparer from the one it was created with
 | |
| 	// will result in an error.
 | |
| 	//
 | |
| 	// An implementation to a new name whenever the comparer implementation
 | |
| 	// changes in a way that will cause the relative ordering of any two keys
 | |
| 	// to change.
 | |
| 	//
 | |
| 	// Names starting with "leveldb." are reserved and should not be used
 | |
| 	// by any users of this package.
 | |
| 	Name() string
 | |
| 
 | |
| 	// Bellow are advanced functions used to reduce the space requirements
 | |
| 	// for internal data structures such as index blocks.
 | |
| 
 | |
| 	// Separator appends a sequence of bytes x to dst such that a <= x && x < b,
 | |
| 	// where 'less than' is consistent with Compare. An implementation should
 | |
| 	// return nil if x equal to a.
 | |
| 	//
 | |
| 	// Either contents of a or b should not by any means modified. Doing so
 | |
| 	// may cause corruption on the internal state.
 | |
| 	Separator(dst, a, b []byte) []byte
 | |
| 
 | |
| 	// Successor appends a sequence of bytes x to dst such that x >= b, where
 | |
| 	// 'less than' is consistent with Compare. An implementation should return
 | |
| 	// nil if x equal to b.
 | |
| 	//
 | |
| 	// Contents of b should not by any means modified. Doing so may cause
 | |
| 	// corruption on the internal state.
 | |
| 	Successor(dst, b []byte) []byte
 | |
| }
 |