mirror of
https://github.com/Oxalide/vsphere-influxdb-go.git
synced 2023-10-10 11:36:51 +00:00
add vendoring with go dep
This commit is contained in:
72
vendor/github.com/influxdata/influxdb/pkg/bytesutil/bytesutil.go
generated
vendored
Normal file
72
vendor/github.com/influxdata/influxdb/pkg/bytesutil/bytesutil.go
generated
vendored
Normal file
@@ -0,0 +1,72 @@
|
||||
package bytesutil
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"sort"
|
||||
)
|
||||
|
||||
// Sort sorts a slice of byte slices.
|
||||
func Sort(a [][]byte) {
|
||||
sort.Sort(byteSlices(a))
|
||||
}
|
||||
|
||||
func IsSorted(a [][]byte) bool {
|
||||
return sort.IsSorted(byteSlices(a))
|
||||
}
|
||||
|
||||
func SearchBytes(a [][]byte, x []byte) int {
|
||||
return sort.Search(len(a), func(i int) bool { return bytes.Compare(a[i], x) >= 0 })
|
||||
}
|
||||
|
||||
// Union returns the union of a & b in sorted order.
|
||||
func Union(a, b [][]byte) [][]byte {
|
||||
n := len(b)
|
||||
if len(a) > len(b) {
|
||||
n = len(a)
|
||||
}
|
||||
other := make([][]byte, 0, n)
|
||||
|
||||
for {
|
||||
if len(a) > 0 && len(b) > 0 {
|
||||
if cmp := bytes.Compare(a[0], b[0]); cmp == 0 {
|
||||
other, a, b = append(other, a[0]), a[1:], b[1:]
|
||||
} else if cmp == -1 {
|
||||
other, a = append(other, a[0]), a[1:]
|
||||
} else {
|
||||
other, b = append(other, b[0]), b[1:]
|
||||
}
|
||||
} else if len(a) > 0 {
|
||||
other, a = append(other, a[0]), a[1:]
|
||||
} else if len(b) > 0 {
|
||||
other, b = append(other, b[0]), b[1:]
|
||||
} else {
|
||||
return other
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Intersect returns the intersection of a & b in sorted order.
|
||||
func Intersect(a, b [][]byte) [][]byte {
|
||||
n := len(b)
|
||||
if len(a) > len(b) {
|
||||
n = len(a)
|
||||
}
|
||||
other := make([][]byte, 0, n)
|
||||
|
||||
for len(a) > 0 && len(b) > 0 {
|
||||
if cmp := bytes.Compare(a[0], b[0]); cmp == 0 {
|
||||
other, a, b = append(other, a[0]), a[1:], b[1:]
|
||||
} else if cmp == -1 {
|
||||
a = a[1:]
|
||||
} else {
|
||||
b = b[1:]
|
||||
}
|
||||
}
|
||||
return other
|
||||
}
|
||||
|
||||
type byteSlices [][]byte
|
||||
|
||||
func (a byteSlices) Len() int { return len(a) }
|
||||
func (a byteSlices) Less(i, j int) bool { return bytes.Compare(a[i], a[j]) == -1 }
|
||||
func (a byteSlices) Swap(i, j int) { a[i], a[j] = a[j], a[i] }
|
Reference in New Issue
Block a user