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.
32 lines
766 B
32 lines
766 B
// Copyright (c) 2014, Suryandaru Triandana <[email protected]> |
|
// All rights reserved. |
|
// |
|
// Use of this source code is governed by a BSD-style license that can be |
|
// found in the LICENSE file. |
|
|
|
package util |
|
|
|
// Range is a key range. |
|
type Range struct { |
|
// Start of the key range, include in the range. |
|
Start []byte |
|
|
|
// Limit of the key range, not include in the range. |
|
Limit []byte |
|
} |
|
|
|
// BytesPrefix returns key range that satisfy the given prefix. |
|
// This only applicable for the standard 'bytes comparer'. |
|
func BytesPrefix(prefix []byte) *Range { |
|
var limit []byte |
|
for i := len(prefix) - 1; i >= 0; i-- { |
|
c := prefix[i] |
|
if c < 0xff { |
|
limit = make([]byte, i+1) |
|
copy(limit, prefix) |
|
limit[i] = c + 1 |
|
break |
|
} |
|
} |
|
return &Range{prefix, limit} |
|
}
|
|
|