]> source.dussan.org Git - jgit.git/commitdiff
Expose AnyObjectId compareTo(byte[]) and compareTo(int[]) 17/917/4
authorShawn O. Pearce <spearce@spearce.org>
Sat, 19 Jun 2010 00:38:22 +0000 (17:38 -0700)
committerShawn O. Pearce <spearce@spearce.org>
Wed, 23 Jun 2010 23:54:15 +0000 (16:54 -0700)
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>
org.eclipse.jgit/src/org/eclipse/jgit/lib/AnyObjectId.java

index d4d53574b3b21d15baa3d1e53f7f7c4d3f5113d1..7d08f3d4c93874e9e35aa4e625d62c115ca2924e 100644 (file)
@@ -142,7 +142,18 @@ public abstract class AnyObjectId implements Comparable {
                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;
 
                cmp = NB.compareUInt32(w1, NB.decodeInt32(bs, p));
@@ -164,7 +175,18 @@ public abstract class AnyObjectId implements Comparable {
                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;
 
                cmp = NB.compareUInt32(w1, bs[p]);