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);
   }
}