Expose AnyObjectId compareTo(byte[]) and compareTo(int[])
Storage systems can use these implementations to compare a passed AnyObjectId with a stored representation of an ObjectId in the canonical network byte order format. This can be useful to do a binary search, or just linear scan, over an encoded storage file. Change-Id: I8c72993c4f4c6e98d599ac2c9867453752f25fd2 Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
This commit is contained in:
parent
864cc3de10
commit
677b9b17e2
|
@ -142,7 +142,18 @@ public int compareTo(final Object other) {
|
||||||
return compareTo(((ObjectId) other));
|
return compareTo(((ObjectId) other));
|
||||||
}
|
}
|
||||||
|
|
||||||
int compareTo(final byte[] bs, final int p) {
|
/**
|
||||||
|
* Compare this ObjectId to a network-byte-order ObjectId.
|
||||||
|
*
|
||||||
|
* @param bs
|
||||||
|
* array containing the other ObjectId in network byte order.
|
||||||
|
* @param p
|
||||||
|
* position within {@code bs} to start the compare at. At least
|
||||||
|
* 20 bytes, starting at this position are required.
|
||||||
|
* @return a negative integer, zero, or a positive integer as this object is
|
||||||
|
* less than, equal to, or greater than the specified object.
|
||||||
|
*/
|
||||||
|
public int compareTo(final byte[] bs, final int p) {
|
||||||
int cmp;
|
int cmp;
|
||||||
|
|
||||||
cmp = NB.compareUInt32(w1, NB.decodeInt32(bs, p));
|
cmp = NB.compareUInt32(w1, NB.decodeInt32(bs, p));
|
||||||
|
@ -164,7 +175,18 @@ int compareTo(final byte[] bs, final int p) {
|
||||||
return NB.compareUInt32(w5, NB.decodeInt32(bs, p + 16));
|
return NB.compareUInt32(w5, NB.decodeInt32(bs, p + 16));
|
||||||
}
|
}
|
||||||
|
|
||||||
int compareTo(final int[] bs, final int p) {
|
/**
|
||||||
|
* Compare this ObjectId to a network-byte-order ObjectId.
|
||||||
|
*
|
||||||
|
* @param bs
|
||||||
|
* array containing the other ObjectId in network byte order.
|
||||||
|
* @param p
|
||||||
|
* position within {@code bs} to start the compare at. At least 5
|
||||||
|
* integers, starting at this position are required.
|
||||||
|
* @return a negative integer, zero, or a positive integer as this object is
|
||||||
|
* less than, equal to, or greater than the specified object.
|
||||||
|
*/
|
||||||
|
public int compareTo(final int[] bs, final int p) {
|
||||||
int cmp;
|
int cmp;
|
||||||
|
|
||||||
cmp = NB.compareUInt32(w1, bs[p]);
|
cmp = NB.compareUInt32(w1, bs[p]);
|
||||||
|
|
Loading…
Reference in New Issue