Remove fastutil
This commit is contained in:
parent
5b724f69dd
commit
ab157d2bdb
@ -49,11 +49,6 @@
|
||||
|
||||
<dependencyManagement>
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>it.unimi.dsi</groupId>
|
||||
<artifactId>fastutil-core</artifactId>
|
||||
<version>8.5.9</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>net.harawata</groupId>
|
||||
<artifactId>appdirs</artifactId>
|
||||
|
124
src/main/java/it/tdlight/common/internal/ArrayUtil.java
Normal file
124
src/main/java/it/tdlight/common/internal/ArrayUtil.java
Normal file
@ -0,0 +1,124 @@
|
||||
package it.tdlight.common.internal;
|
||||
|
||||
import it.tdlight.common.utils.IntSwapper;
|
||||
|
||||
public class ArrayUtil {
|
||||
|
||||
public interface IntComparator {
|
||||
int compare(int k1, int k2);
|
||||
}
|
||||
|
||||
public static void mergeSort(int from, int to, IntComparator c, IntSwapper swapper) {
|
||||
int length = to - from;
|
||||
int i;
|
||||
if (length >= 16) {
|
||||
i = from + to >>> 1;
|
||||
mergeSort(from, i, c, swapper);
|
||||
mergeSort(i, to, c, swapper);
|
||||
if (c.compare(i - 1, i) > 0) {
|
||||
inPlaceMerge(from, i, to, c, swapper);
|
||||
}
|
||||
} else {
|
||||
for(i = from; i < to; ++i) {
|
||||
for(int j = i; j > from && c.compare(j - 1, j) > 0; --j) {
|
||||
swapper.swap(j, j - 1);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
private static void inPlaceMerge(int from, int mid, int to, IntComparator comp, IntSwapper swapper) {
|
||||
if (from < mid && mid < to) {
|
||||
if (to - from == 2) {
|
||||
if (comp.compare(mid, from) < 0) {
|
||||
swapper.swap(from, mid);
|
||||
}
|
||||
|
||||
} else {
|
||||
int firstCut;
|
||||
int secondCut;
|
||||
if (mid - from > to - mid) {
|
||||
firstCut = from + (mid - from) / 2;
|
||||
secondCut = lowerBound(mid, to, firstCut, comp);
|
||||
} else {
|
||||
secondCut = mid + (to - mid) / 2;
|
||||
firstCut = upperBound(from, mid, secondCut, comp);
|
||||
}
|
||||
|
||||
if (mid != firstCut && mid != secondCut) {
|
||||
int first1 = firstCut;
|
||||
int last1 = mid;
|
||||
|
||||
label43:
|
||||
while(true) {
|
||||
--last1;
|
||||
if (first1 >= last1) {
|
||||
first1 = mid;
|
||||
last1 = secondCut;
|
||||
|
||||
while(true) {
|
||||
--last1;
|
||||
if (first1 >= last1) {
|
||||
first1 = firstCut;
|
||||
last1 = secondCut;
|
||||
|
||||
while(true) {
|
||||
--last1;
|
||||
if (first1 >= last1) {
|
||||
break label43;
|
||||
}
|
||||
|
||||
swapper.swap(first1++, last1);
|
||||
}
|
||||
}
|
||||
|
||||
swapper.swap(first1++, last1);
|
||||
}
|
||||
}
|
||||
|
||||
swapper.swap(first1++, last1);
|
||||
}
|
||||
}
|
||||
|
||||
mid = firstCut + (secondCut - mid);
|
||||
inPlaceMerge(from, firstCut, mid, comp, swapper);
|
||||
inPlaceMerge(mid, secondCut, to, comp, swapper);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private static int lowerBound(int from, int to, int pos, IntComparator comp) {
|
||||
int len = to - from;
|
||||
|
||||
while(len > 0) {
|
||||
int half = len / 2;
|
||||
int middle = from + half;
|
||||
if (comp.compare(middle, pos) < 0) {
|
||||
from = middle + 1;
|
||||
len -= half + 1;
|
||||
} else {
|
||||
len = half;
|
||||
}
|
||||
}
|
||||
|
||||
return from;
|
||||
}
|
||||
|
||||
private static int upperBound(int from, int mid, int pos, IntComparator comp) {
|
||||
int len = mid - from;
|
||||
|
||||
while(len > 0) {
|
||||
int half = len / 2;
|
||||
int middle = from + half;
|
||||
if (comp.compare(pos, middle) < 0) {
|
||||
len = half;
|
||||
} else {
|
||||
from = middle + 1;
|
||||
len -= half + 1;
|
||||
}
|
||||
}
|
||||
|
||||
return from;
|
||||
}
|
||||
}
|
@ -7,8 +7,9 @@ import it.tdlight.common.TelegramClient;
|
||||
import it.tdlight.common.UpdatesHandler;
|
||||
import it.tdlight.jni.TdApi;
|
||||
import it.tdlight.jni.TdApi.Function;
|
||||
import it.unimi.dsi.fastutil.longs.LongArrayList;
|
||||
import it.unimi.dsi.fastutil.objects.ObjectArrayList;
|
||||
import it.tdlight.jni.TdApi.Object;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
import java.util.concurrent.atomic.AtomicBoolean;
|
||||
@ -47,7 +48,7 @@ public final class InternalClient implements ClientEventsHandler, TelegramClient
|
||||
@Override
|
||||
public void handleEvents(boolean isClosed, long[] eventIds, TdApi.Object[] events, int arrayOffset, int arrayLength) {
|
||||
if (updatesHandler != null) {
|
||||
ObjectArrayList<TdApi.Object> updatesList = new ObjectArrayList<>(arrayLength);
|
||||
List<Object> updatesList = new ArrayList<>(arrayLength);
|
||||
|
||||
for (int i = (arrayOffset + arrayLength) - 1; i >= arrayOffset; i--) {
|
||||
if (eventIds[i] != 0) {
|
||||
|
@ -260,7 +260,7 @@ abstract class ResponseReceiver extends Thread implements AutoCloseable {
|
||||
@SuppressWarnings("SameParameterValue")
|
||||
private int[] generateSortIndex(int from, int to, int[] data) {
|
||||
int[] sortedIndices = Arrays.copyOfRange(originalSortingSource, from, to);
|
||||
it.unimi.dsi.fastutil.Arrays.mergeSort(from,
|
||||
ArrayUtil.mergeSort(from,
|
||||
to,
|
||||
(o1, o2) -> Integer.compare(data[sortedIndices[o1]], data[sortedIndices[o2]]),
|
||||
new IntSwapper(sortedIndices)
|
||||
|
@ -1,8 +1,6 @@
|
||||
package it.tdlight.common.utils;
|
||||
|
||||
import it.unimi.dsi.fastutil.Swapper;
|
||||
|
||||
public final class IntSwapper implements Swapper {
|
||||
public final class IntSwapper {
|
||||
|
||||
private final int[] array;
|
||||
int tmp;
|
||||
@ -12,7 +10,6 @@ public final class IntSwapper implements Swapper {
|
||||
tmp = 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void swap(int a, int b) {
|
||||
tmp = array[a];
|
||||
array[a] = array[b];
|
||||
|
@ -2,7 +2,6 @@ module tdlight.java {
|
||||
requires tdlight.api;
|
||||
requires org.reactivestreams;
|
||||
requires org.slf4j;
|
||||
requires it.unimi.dsi.fastutil.core;
|
||||
requires com.google.zxing;
|
||||
exports it.tdlight.tdlight;
|
||||
exports it.tdlight.tdnative;
|
||||
|
@ -50,10 +50,6 @@
|
||||
<groupId>it.tdlight</groupId>
|
||||
<artifactId>${tdlib.api.artifact.id}</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>it.unimi.dsi</groupId>
|
||||
<artifactId>fastutil</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.slf4j</groupId>
|
||||
<artifactId>slf4j-api</artifactId>
|
||||
@ -78,6 +74,12 @@
|
||||
<version>5.8.2</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>it.unimi.dsi</groupId>
|
||||
<artifactId>fastutil-core</artifactId>
|
||||
<version>8.5.9</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
<dependencyManagement>
|
||||
<dependencies>
|
||||
|
@ -48,10 +48,6 @@
|
||||
<groupId>it.tdlight</groupId>
|
||||
<artifactId>tdlight-api-legacy</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>it.unimi.dsi</groupId>
|
||||
<artifactId>fastutil-core</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.slf4j</groupId>
|
||||
<artifactId>slf4j-api</artifactId>
|
||||
@ -76,6 +72,12 @@
|
||||
<version>5.9.0</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>it.unimi.dsi</groupId>
|
||||
<artifactId>fastutil-core</artifactId>
|
||||
<version>8.5.9</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
<dependencyManagement>
|
||||
<dependencies>
|
||||
|
@ -48,10 +48,6 @@
|
||||
<groupId>it.tdlight</groupId>
|
||||
<artifactId>tdlight-api-sealed</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>it.unimi.dsi</groupId>
|
||||
<artifactId>fastutil-core</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.slf4j</groupId>
|
||||
<artifactId>slf4j-api</artifactId>
|
||||
@ -76,6 +72,12 @@
|
||||
<version>5.9.0</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>it.unimi.dsi</groupId>
|
||||
<artifactId>fastutil-core</artifactId>
|
||||
<version>8.5.9</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
<dependencyManagement>
|
||||
<dependencies>
|
||||
|
Loading…
Reference in New Issue
Block a user