tendermint/common/int.go

40 lines
952 B
Go
Raw Normal View History

2014-09-14 15:37:32 -07:00
package common
import (
"encoding/binary"
2014-09-14 15:37:32 -07:00
"sort"
)
// Sort for []uint64
type Uint64Slice []uint64
2014-09-14 15:37:32 -07:00
func (p Uint64Slice) Len() int { return len(p) }
func (p Uint64Slice) Less(i, j int) bool { return p[i] < p[j] }
func (p Uint64Slice) Swap(i, j int) { p[i], p[j] = p[j], p[i] }
func (p Uint64Slice) Sort() { sort.Sort(p) }
2014-09-14 15:37:32 -07:00
func SearchUint64s(a []uint64, x uint64) int {
2014-09-14 15:37:32 -07:00
return sort.Search(len(a), func(i int) bool { return a[i] >= x })
}
func (p Uint64Slice) Search(x uint64) int { return SearchUint64s(p, x) }
//-----------------------------------------------------------------------------
2015-04-17 20:51:01 -07:00
func PutUint64LE(dest []byte, i uint64) {
binary.LittleEndian.PutUint64(dest, i)
}
2015-04-17 20:51:01 -07:00
func GetUint64LE(src []byte) uint64 {
return binary.LittleEndian.Uint64(src)
}
2015-04-17 20:51:01 -07:00
func PutUint64BE(dest []byte, i uint64) {
binary.BigEndian.PutUint64(dest, i)
}
func GetUint64BE(src []byte) uint64 {
return binary.BigEndian.Uint64(src)
}