mirror of
https://gitlab.bixilon.de/bixilon/minosoft.git
synced 2025-09-16 10:55:01 -04:00
remove unneeded EnumSetUtil code
This commit is contained in:
parent
4850cb09c1
commit
b87c93a97d
@ -13,52 +13,13 @@
|
|||||||
|
|
||||||
package de.bixilon.minosoft.util
|
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.*
|
import java.util.*
|
||||||
|
|
||||||
|
|
||||||
@Deprecated("kutil 1.24")
|
@Deprecated("kutil 1.24")
|
||||||
object EnumSetUtil {
|
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> {
|
fun <T : Enum<T>> create(clazz: Class<T>, universe: Array<T>): EnumSet<T> {
|
||||||
return EnumSet.noneOf(clazz) // TODO: optimize and use universe
|
return EnumSet.noneOf(clazz) // TODO: optimize and use universe
|
||||||
return if (universe.size <= Long.SIZE_BITS) createRegular(clazz, universe) else createJumbo(clazz, universe)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -18,7 +18,6 @@
|
|||||||
"Hopper": "hopper",
|
"Hopper": "hopper",
|
||||||
"Banner": "banner",
|
"Banner": "banner",
|
||||||
"FlowerPot": "flower_pot",
|
"FlowerPot": "flower_pot",
|
||||||
"Sign": "sign",
|
|
||||||
"Piston": "piston",
|
"Piston": "piston",
|
||||||
"Comparator": "comparator",
|
"Comparator": "comparator",
|
||||||
"unpowered_comparator": "comparator",
|
"unpowered_comparator": "comparator",
|
||||||
|
Loading…
x
Reference in New Issue
Block a user