package ch.unibe.scg.cells;
import java.util.Comparator;
import com.google.protobuf.ByteString;
/** Comparator for a string of unsigned bytes. Results in lexicographical ordering. */
public final class LexicographicalComparator implements Comparator<ByteString> {
@Override
public int compare(ByteString o1, ByteString o2) {
for (int i = 0; i < Math.min(o1.size(), o2.size()); i++) {
int v1 = o1.byteAt(i) & 0xff; // Remove sign.
int v2 = o2.byteAt(i) & 0xff; // Remove sign.
if (v1 == v2) {
continue;
}
if (v1 < v2) {
return -1;
}
return +1;
}
return o1.size() - o2.size();
}
}