From c5696af87dd08b75cf1a3e7d738f82acd060680f Mon Sep 17 00:00:00 2001 From: TimeConqueror Date: Mon, 2 Aug 2021 22:04:38 +0300 Subject: Added some constructors to Hatch Buses to remove some GTPP ASM --- .../java/gregtech/api/util/extensions/Arrays.java | 32 ++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 src/main/java/gregtech/api/util/extensions/Arrays.java (limited to 'src/main/java/gregtech/api/util/extensions') diff --git a/src/main/java/gregtech/api/util/extensions/Arrays.java b/src/main/java/gregtech/api/util/extensions/Arrays.java new file mode 100644 index 0000000000..41efec5587 --- /dev/null +++ b/src/main/java/gregtech/api/util/extensions/Arrays.java @@ -0,0 +1,32 @@ +package gregtech.api.util.extensions; + +public class Arrays { + public static int[] of(int... objects) { + return objects; + } + + public static float[] of(float... objects) { + return objects; + } + + public static double[] of(double... objects) { + return objects; + } + + public static char[] of(char... objects) { + return objects; + } + + public static byte[] of(byte... objects) { + return objects; + } + + public static long[] of(long... objects) { + return objects; + } + + @SafeVarargs + public static T[] of(T... objects) { + return objects; + } +} -- cgit From 878b9ac656aa21727bcd42e4835d0e7f067983ea Mon Sep 17 00:00:00 2001 From: TimeConqueror Date: Tue, 3 Aug 2021 21:03:45 +0300 Subject: Well, the name 'Arrays' seems to be not so good, since it collides with java.util.Arrays --- .../gregtech/api/util/extensions/ArrayExt.java | 59 ++++++++++++++++++++++ .../java/gregtech/api/util/extensions/Arrays.java | 32 ------------ 2 files changed, 59 insertions(+), 32 deletions(-) create mode 100644 src/main/java/gregtech/api/util/extensions/ArrayExt.java delete mode 100644 src/main/java/gregtech/api/util/extensions/Arrays.java (limited to 'src/main/java/gregtech/api/util/extensions') diff --git a/src/main/java/gregtech/api/util/extensions/ArrayExt.java b/src/main/java/gregtech/api/util/extensions/ArrayExt.java new file mode 100644 index 0000000000..faa01cb368 --- /dev/null +++ b/src/main/java/gregtech/api/util/extensions/ArrayExt.java @@ -0,0 +1,59 @@ +package gregtech.api.util.extensions; + +import java.util.function.IntFunction; + +public class ArrayExt { + public static int[] of(int... objects) { + return objects; + } + + public static float[] of(float... objects) { + return objects; + } + + public static double[] of(double... objects) { + return objects; + } + + public static char[] of(char... objects) { + return objects; + } + + public static byte[] of(byte... objects) { + return objects; + } + + public static long[] of(long... objects) { + return objects; + } + + @SafeVarargs + public static T[] of(T... objects) { + return objects; + } + + public static T[] withoutTrailingNulls(T[] array, IntFunction arrayFactory) { + int firstNull = -1; + for (int i = 0; i < array.length; i++) { + if (array[i] == null) { + if (firstNull == -1) { + firstNull = i; + } + } else { + firstNull = -1; + } + } + + if (firstNull == -1) { + T[] newArray = arrayFactory.apply(array.length); + System.arraycopy(array, 0, newArray, 0, array.length); + return newArray; + } else if (firstNull == 0) { + return arrayFactory.apply(0); + } else { + T[] newArray = arrayFactory.apply(firstNull); + System.arraycopy(array, 0, newArray, 0, firstNull); + return newArray; + } + } +} diff --git a/src/main/java/gregtech/api/util/extensions/Arrays.java b/src/main/java/gregtech/api/util/extensions/Arrays.java deleted file mode 100644 index 41efec5587..0000000000 --- a/src/main/java/gregtech/api/util/extensions/Arrays.java +++ /dev/null @@ -1,32 +0,0 @@ -package gregtech.api.util.extensions; - -public class Arrays { - public static int[] of(int... objects) { - return objects; - } - - public static float[] of(float... objects) { - return objects; - } - - public static double[] of(double... objects) { - return objects; - } - - public static char[] of(char... objects) { - return objects; - } - - public static byte[] of(byte... objects) { - return objects; - } - - public static long[] of(long... objects) { - return objects; - } - - @SafeVarargs - public static T[] of(T... objects) { - return objects; - } -} -- cgit From b9468785aa264ba0c1fcf295bb15260bb47c90c0 Mon Sep 17 00:00:00 2001 From: TimeConqueror Date: Tue, 3 Aug 2021 22:34:50 +0300 Subject: GT_Recipe: speedup --- .../gregtech/api/util/extensions/ArrayExt.java | 23 ++++++++++++++++++++++ .../gregtech/api/util/extensions/IteratorExt.java | 23 ++++++++++++++++++++++ 2 files changed, 46 insertions(+) create mode 100644 src/main/java/gregtech/api/util/extensions/IteratorExt.java (limited to 'src/main/java/gregtech/api/util/extensions') diff --git a/src/main/java/gregtech/api/util/extensions/ArrayExt.java b/src/main/java/gregtech/api/util/extensions/ArrayExt.java index faa01cb368..9b39f74518 100644 --- a/src/main/java/gregtech/api/util/extensions/ArrayExt.java +++ b/src/main/java/gregtech/api/util/extensions/ArrayExt.java @@ -32,6 +32,29 @@ public class ArrayExt { return objects; } + @SuppressWarnings("ForLoopReplaceableByForEach") + public static T[] withoutNulls(T[] array, IntFunction arrayFactory) { + int count = 0; + for (int i = 0; i < array.length; i++) { + if (array[i] != null) { + count++; + } + } + + T[] newArr = arrayFactory.apply(count); + if (count == 0) return newArr; + + int j = 0; + for (int i = 0; i < array.length; i++) { + if (array[i] != null) { + newArr[j] = array[i]; + j++; + } + } + + return newArr; + } + public static T[] withoutTrailingNulls(T[] array, IntFunction arrayFactory) { int firstNull = -1; for (int i = 0; i < array.length; i++) { diff --git a/src/main/java/gregtech/api/util/extensions/IteratorExt.java b/src/main/java/gregtech/api/util/extensions/IteratorExt.java new file mode 100644 index 0000000000..1a29a7b41a --- /dev/null +++ b/src/main/java/gregtech/api/util/extensions/IteratorExt.java @@ -0,0 +1,23 @@ +package gregtech.api.util.extensions; + +import gregtech.api.objects.iterators.ArrayIterator; +import gregtech.api.objects.iterators.MergedIterator; +import gregtech.api.objects.iterators.NonNullIterator; + +import java.util.Iterator; + +public class IteratorExt { + @SafeVarargs + public static Iterator merge(Iterator... iterators) { + return new MergedIterator<>(iterators); + } + + public static Iterator withoutNulls(Iterator iterator) { + return new NonNullIterator<>(iterator); + } + + @SafeVarargs + public static ArrayIterator ofArray(T... items) { + return new ArrayIterator<>(items); + } +} -- cgit From fa39d5af8adaf20adeba17bbf951111938f8218f Mon Sep 17 00:00:00 2001 From: TimeConqueror Date: Tue, 3 Aug 2021 22:54:08 +0300 Subject: Sped up ArrayExt#withoutTrailingNulls by iterating from the last element --- src/main/java/gregtech/api/util/extensions/ArrayExt.java | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) (limited to 'src/main/java/gregtech/api/util/extensions') diff --git a/src/main/java/gregtech/api/util/extensions/ArrayExt.java b/src/main/java/gregtech/api/util/extensions/ArrayExt.java index 9b39f74518..51486bc036 100644 --- a/src/main/java/gregtech/api/util/extensions/ArrayExt.java +++ b/src/main/java/gregtech/api/util/extensions/ArrayExt.java @@ -57,13 +57,11 @@ public class ArrayExt { public static T[] withoutTrailingNulls(T[] array, IntFunction arrayFactory) { int firstNull = -1; - for (int i = 0; i < array.length; i++) { + for (int i = array.length - 1; i >= 0; i--) { if (array[i] == null) { - if (firstNull == -1) { - firstNull = i; - } + firstNull = i; } else { - firstNull = -1; + break; } } -- cgit From 35937ca89911c2b29f0a6027963c7439762045e7 Mon Sep 17 00:00:00 2001 From: TimeConqueror Date: Tue, 3 Aug 2021 23:13:02 +0300 Subject: Removed ArrayIterator and NonNullIterator, because they're redundant --- src/main/java/gregtech/api/util/extensions/IteratorExt.java | 11 ----------- 1 file changed, 11 deletions(-) (limited to 'src/main/java/gregtech/api/util/extensions') diff --git a/src/main/java/gregtech/api/util/extensions/IteratorExt.java b/src/main/java/gregtech/api/util/extensions/IteratorExt.java index 1a29a7b41a..d59bb298a4 100644 --- a/src/main/java/gregtech/api/util/extensions/IteratorExt.java +++ b/src/main/java/gregtech/api/util/extensions/IteratorExt.java @@ -1,8 +1,6 @@ package gregtech.api.util.extensions; -import gregtech.api.objects.iterators.ArrayIterator; import gregtech.api.objects.iterators.MergedIterator; -import gregtech.api.objects.iterators.NonNullIterator; import java.util.Iterator; @@ -11,13 +9,4 @@ public class IteratorExt { public static Iterator merge(Iterator... iterators) { return new MergedIterator<>(iterators); } - - public static Iterator withoutNulls(Iterator iterator) { - return new NonNullIterator<>(iterator); - } - - @SafeVarargs - public static ArrayIterator ofArray(T... items) { - return new ArrayIterator<>(items); - } } -- cgit