BitFieldArr class
Пакет: com.hypixel.hytale.server.core.universe.world.chunk.palette
Файл: com/hypixel/hytale/server/core/universe/world/chunk/palette/BitFieldArr.java
Поля (25)
| Модификаторы | Тип | Имя |
|---|---|---|
final |
int |
BITS_PER_INDEX |
|
byte[] |
var1 |
|
StringBuilder |
var1 |
|
int |
var10 |
|
int |
var10 |
|
int |
var11 |
|
int |
var12 |
|
int |
var2 |
|
int |
var3 |
|
int |
var3 |
|
int |
var4 |
|
|
var4 |
|
int |
var4 |
|
int |
var5 |
|
int |
var5 |
|
|
var5 |
|
int |
var5 |
|
int |
var6 |
|
int |
var6 |
|
int |
var7 |
|
int |
var7 |
|
int |
var8 |
|
int |
var8 |
|
int |
var9 |
|
int |
var9 |
Методы (22)
| Модификаторы | Возврат | Сигнатура |
|---|---|---|
abstract |
throw new |
IllegalArgumentExceptionthrow new IllegalArgumentException("The number of bits must be greater than zero.") |
abstract |
throw new |
IllegalArgumentExceptionthrow new IllegalArgumentException("The length must be greater than zero.") |
abstract |
throw new |
IllegalArgumentExceptionthrow new IllegalArgumentException("bits must be the same") |
abstract |
throw new |
IllegalArgumentExceptionthrow new IllegalArgumentException("length must be the same") |
public |
void |
copyFromvoid copyFrom(@Nonnull BitFieldArr var1) |
public |
void |
copyFromvoid copyFrom(MemorySegment var1, long var2, int var4) |
public |
void |
copyTovoid copyTo(MemorySegment var1, long var2) |
|
|
for for(byte var5 : this.array) |
public |
int |
getint get(int var1) |
public |
byte[] |
getbyte[] get() |
public |
int |
getByteLengthint getByteLength() |
public |
int |
getLengthint getLength() |
|
|
if if(var1 <= 0) |
|
|
if if(var2 <= 0) |
|
|
if if(var4 + this.bits <= 8) |
|
|
if if(var5 + this.bits <= 8) |
|
|
if if(this.bits != var1.bits) |
|
|
if if(this.length != var1.length) |
public |
void |
setvoid set(int var1, int var2) |
public |
void |
setvoid set(@Nonnull byte[] var1) |
|
|
while while(var6 > 0) |
|
|
while while(var11 > 0) |
Исходный код
Показать/скрыть
class="kw">package com.hypixel.hytale.server.core.universe.world.chunk.palette;
class="kw">import java.lang.foreign.MemorySegment;
class="kw">import java.lang.foreign.ValueLayout;
class="kw">import javax.annotation.Nonnull;
class="kw">public class BitFieldArr {
class="kw">public class="kw">static class="kw">final int BITS_PER_INDEX = 8;
class="kw">public class="kw">static class="kw">final int INDEX_MASK = 255;
class="kw">private class="kw">final int bits;
class="kw">private class="kw">final int length;
@Nonnull
class="kw">private class="kw">final byte[] array;
class="kw">public BitFieldArr(int var1, int var2) {
if (var1 <= 0) {
throw new IllegalArgumentException("The number of bits must be greater than zero.");
}
if (var2 <= 0) {
throw new IllegalArgumentException("The length must be greater than zero.");
}
this.bits = var1;
this.array = new byte[(var2 * var1 + 8 - 1) / 8];
this.length = var2;
}
class="kw">public int getLength() {
class="kw">return this.length;
}
class="kw">public int get(int var1) {
int var2 = var1 * this.bits;
int var3 = var2 / 8;
int var4 = var2 % 8;
if (var4 + this.bits <= 8) {
int var10 = (1 << this.bits) - 1;
class="kw">return (this.array[var3] & 0xFF) >>> var4 & var10;
}
int var5 = 0;
int var6 = this.bits;
int var7 = 0;
while (var6 > 0) {
int var8 = Math.min(8 - var4, var6);
int var9 = (1 << var8) - 1;
var5 |= ((this.array[var3] & 255) >>> var4 & var9) << var7;
var7 += var8;
var6 -= var8;
var3++;
var4 = 0;
}
class="kw">return var5;
}
class="kw">public void set(int var1, int var2) {
int var3 = var1 * this.bits;
int var4 = var3 / 8;
int var5 = var3 % 8;
if (var5 + this.bits <= 8) {
int var6 = (1 << this.bits) - 1;
int var7 = ~(var6 << var5);
this.array[var4] = (byte)(this.array[var4] & var7 | (var2 & var6) << var5);
} else {
int var11 = this.bits;
int var12 = var2;
while (var11 > 0) {
int var8 = Math.min(8 - var5, var11);
int var9 = (1 << var8) - 1;
int var10 = ~(var9 << var5);
this.array[var4] = (byte)(this.array[var4] & var10 | (var12 & var9) << var5);
var12 >>>= var8;
var11 -= var8;
var4++;
var5 = 0;
}
}
}
class="kw">public byte[] get() {
byte[] var1 = new byte[this.array.length];
System.arraycopy(this.array, 0, var1, 0, this.array.length);
class="kw">return var1;
}
class="kw">public int getByteLength() {
class="kw">return this.array.length;
}
class="kw">public void set(@Nonnull byte[] var1) {
System.arraycopy(var1, 0, this.array, 0, Math.min(var1.length, this.array.length));
}
@Nonnull
class="kw">public String toBitString() {
StringBuilder var1 = new StringBuilder();
for (byte var5 : this.array) {
var1.append(String.format("%8s", Integer.toBinaryString(var5 & 255)).replace(' ', '0'));
}
class="kw">return var1.toString();
}
class="kw">public void copyFrom(@Nonnull BitFieldArr var1) {
if (this.bits != var1.bits) {
throw new IllegalArgumentException("bits must be the same");
}
if (this.length != var1.length) {
throw new IllegalArgumentException("length must be the same");
}
System.arraycopy(var1.array, 0, this.array, 0, this.array.length);
}
class="kw">public void copyTo(MemorySegment var1, long var2) {
MemorySegment.copy(this.array, 0, var1, ValueLayout.JAVA_BYTE, var2, this.array.length);
}
class="kw">public void copyFrom(MemorySegment var1, long var2, int var4) {
int var5 = Math.min(var4, this.array.length);
MemorySegment.copy(var1, ValueLayout.JAVA_BYTE, var2, this.array, 0, var5);
}
}