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