package edu.uci.ics.hivesterix.runtime.factory.comparator;

import edu.uci.ics.hyracks.api.dataflow.value.IBinaryComparator;
import edu.uci.ics.hyracks.api.dataflow.value.IBinaryComparatorFactory;

public class HiveByteBinaryAscComparatorFactory implements
		IBinaryComparatorFactory {
	private static final long serialVersionUID = 1L;

	public static HiveByteBinaryAscComparatorFactory INSTANCE = new HiveByteBinaryAscComparatorFactory();

	private HiveByteBinaryAscComparatorFactory() {
	}

	@Override
	public IBinaryComparator createBinaryComparator() {
		return new IBinaryComparator() {
			private byte left;
			private byte right;

			@Override
			public int compare(byte[] b1, int s1, int l1, byte[] b2, int s2,
					int l2) {
				left = b1[s1];
				right = b2[s2];
				if (left > right)
					return 1;
				else if (left == right)
					return 0;
				else
					return -1;
			}
		};
	}

}
