mirror of
				https://source.quilibrium.com/quilibrium/ceremonyclient.git
				synced 2025-11-04 03:07:28 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			47 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			47 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
// Copyright 2020 The LevelDB-Go and Pebble Authors. All rights reserved. Use
 | 
						|
// of this source code is governed by a BSD-style license that can be found in
 | 
						|
// the LICENSE file.
 | 
						|
 | 
						|
package manifest
 | 
						|
 | 
						|
import "fmt"
 | 
						|
 | 
						|
const (
 | 
						|
	// 3 bits are necessary to represent level values from 0-6.
 | 
						|
	levelBits = 3
 | 
						|
	levelMask = (1 << levelBits) - 1
 | 
						|
	// invalidSublevel denotes an invalid or non-applicable sublevel.
 | 
						|
	invalidSublevel = -1
 | 
						|
)
 | 
						|
 | 
						|
// Level encodes a level and optional sublevel for use in log and error
 | 
						|
// messages. The encoding has the property that Level(0) ==
 | 
						|
// L0Sublevel(invalidSublevel).
 | 
						|
type Level uint32
 | 
						|
 | 
						|
func makeLevel(level, sublevel int) Level {
 | 
						|
	return Level(((sublevel + 1) << levelBits) | level)
 | 
						|
}
 | 
						|
 | 
						|
// LevelToInt returns the int representation of a Level
 | 
						|
func LevelToInt(l Level) int {
 | 
						|
	return int(l) & levelMask
 | 
						|
}
 | 
						|
 | 
						|
// L0Sublevel returns a Level representing the specified L0 sublevel.
 | 
						|
func L0Sublevel(sublevel int) Level {
 | 
						|
	if sublevel < 0 {
 | 
						|
		panic(fmt.Sprintf("invalid L0 sublevel: %d", sublevel))
 | 
						|
	}
 | 
						|
	return makeLevel(0, sublevel)
 | 
						|
}
 | 
						|
 | 
						|
func (l Level) String() string {
 | 
						|
	level := int(l) & levelMask
 | 
						|
	sublevel := (int(l) >> levelBits) - 1
 | 
						|
	if sublevel != invalidSublevel {
 | 
						|
		return fmt.Sprintf("L%d.%d", level, sublevel)
 | 
						|
	}
 | 
						|
	return fmt.Sprintf("L%d", level)
 | 
						|
}
 |