package org.jbox2d.common;
import com.google.gwt.core.client.JavaScriptObject;
import java.util.Arrays;
import java.util.Comparator;
public class FastSort {
public static <T> void unstableSort(T[] array, Comparator<? super T> comparator) {
if (false/*GWT.isProdMode()*/) {
unstableSort(array, 0, array.length, getNativeComparator(comparator));
} else {
Arrays.sort(array, comparator);
}
}
public static <T> void unstableSort(T[] array, int fromIndex, int toIndex, Comparator<? super T> comparator) {
if (false/*GWT.isProdMode()*/) {
unstableSort(array, fromIndex, toIndex, getNativeComparator(comparator));
} else {
Arrays.sort(array, fromIndex, toIndex, comparator);
}
}
private static native JavaScriptObject getNativeComparator(Comparator<?> comparator) /*-{
return comparator.@java.util.Comparator::compare(Ljava/lang/Object;Ljava/lang/Object;);
}-*/;
private static native <T> void unstableSort(T[] array, int fromIndex, int toIndex, JavaScriptObject comparator) /*-{
var subArray = array.slice(fromIndex, toIndex);
subArray.sort(comparator);
var n = toIndex - fromIndex;
Array.prototype.splice.apply(array, [ fromIndex, n ].concat(subArray
.slice(0, n)));
}-*/;
}