remove unneeded EnumSetUtil code

This commit is contained in:
Moritz Zwerger 2023-10-12 02:08:55 +02:00
parent 4850cb09c1
commit b87c93a97d
No known key found for this signature in database
GPG Key ID: 5CAD791931B09AC4
2 changed files with 0 additions and 40 deletions

View File

@ -13,52 +13,13 @@
package de.bixilon.minosoft.util
import de.bixilon.kutil.cast.CastUtil.unsafeCast
import de.bixilon.kutil.unsafe.UnsafeUtil
import org.objenesis.ObjenesisStd
import java.util.*
@Deprecated("kutil 1.24")
object EnumSetUtil {
private val OBJENSESIS = ObjenesisStd()
private val ENUM_SET = EnumSet::class.java
private val ENUM_SET_TYPE = UnsafeUtil.UNSAFE.objectFieldOffset(ENUM_SET.getDeclaredField("elementType"))
private val ENUM_SET_UNIVERSE = UnsafeUtil.UNSAFE.objectFieldOffset(ENUM_SET.getDeclaredField("universe"))
private val REGULAR_ENUM_SET = Class.forName("java.util.RegularEnumSet")
private val JUMBO_ENUM_SET = Class.forName("java.util.RegularEnumSet")
private val JUMBO_ENUM_SET_ELEMENTS = UnsafeUtil.UNSAFE.objectFieldOffset(JUMBO_ENUM_SET.getDeclaredField("elements"))
private fun <T : Enum<T>> EnumSet<T>.update(type: Class<T>, universe: Array<T>) {
UnsafeUtil.UNSAFE.putObject(this, this@EnumSetUtil.ENUM_SET_TYPE, type)
UnsafeUtil.UNSAFE.putObject(this, this@EnumSetUtil.ENUM_SET_UNIVERSE, universe)
}
fun <T : Enum<T>> createRegular(clazz: Class<T>, universe: Array<T>): EnumSet<T> {
// return RegularEnumSet(clazz, universe)
val set = UnsafeUtil.UNSAFE.allocateInstance(REGULAR_ENUM_SET).unsafeCast<EnumSet<T>>()
set.update(clazz, universe)
return set.unsafeCast()
}
fun <T : Enum<T>> createJumbo(clazz: Class<T>, universe: Array<T>): EnumSet<T> {
// return JumboEnumSet(clazz, universe)
val set = OBJENSESIS.newInstance(REGULAR_ENUM_SET).unsafeCast<EnumSet<T>>()
UnsafeUtil.UNSAFE.putObject(this, this@EnumSetUtil.JUMBO_ENUM_SET_ELEMENTS, LongArray(universe.size + 63 ushr 6))
set.update(clazz, universe)
return set
}
fun <T : Enum<T>> create(clazz: Class<T>, universe: Array<T>): EnumSet<T> {
return EnumSet.noneOf(clazz) // TODO: optimize and use universe
return if (universe.size <= Long.SIZE_BITS) createRegular(clazz, universe) else createJumbo(clazz, universe)
}
}

View File

@ -18,7 +18,6 @@
"Hopper": "hopper",
"Banner": "banner",
"FlowerPot": "flower_pot",
"Sign": "sign",
"Piston": "piston",
"Comparator": "comparator",
"unpowered_comparator": "comparator",