VarInt class

Пакет: com.hypixel.hytale.protocol.io

Файл: com/hypixel/hytale/protocol/io/VarInt.java

Поля (24)

МодификаторыТипИмя
final OfShort BE_SHORT
int var1
int var2
int var2
int var2
long var2
long var2
int var2
byte var3
var3
var3
var3
int var3
int var3
int var4
int var4
byte var5
var5
var5
var5
byte var5
var5
var5
var5

Методы (20)

МодификаторыВозвратСигнатура
abstract throw new IllegalArgumentExceptionthrow new IllegalArgumentException("VarInt cannot encode negative values: " + var1)
abstract throw new IllegalArgumentExceptionthrow new IllegalArgumentException("VarInt cannot encode negative values: " + var2)
static int getint get(@Nonnull MemorySegment var0, int var1)
static long getWithLengthlong getWithLength(@Nonnull MemorySegment var0, int var1)
if if(var1 < 0)
if if(var1 >= var2)
if if(var1 + 1 >= var2)
if if(var1 + 2 >= var2)
if if(var1 + 3 >= var2)
if if(var1 + 4 >= var2)
if if(var1 >= var2)
if if(var2 < 0)
if if(var1 >= var2)
static int lengthint length(@Nonnull ByteBuf var0, int var1)
static int lengthint length(@Nonnull MemorySegment var0, int var1)
static int peekint peek(@Nonnull ByteBuf var0, int var1)
static int readint read(@Nonnull ByteBuf var0)
static int setint set(@Nonnull MemorySegment var0, int var1, int var2)
static int sizeint size(int var0)
static void writevoid write(@Nonnull ByteBuf var0, int var1)

Исходный код

Показать/скрыть
class="kw">package com.hypixel.hytale.protocol.io;

class="kw">import io.netty.buffer.ByteBuf;
class="kw">import java.lang.foreign.MemorySegment;
class="kw">import java.lang.foreign.ValueLayout;
class="kw">import java.lang.foreign.ValueLayout.OfInt;
class="kw">import java.lang.foreign.ValueLayout.OfShort;
class="kw">import java.nio.ByteOrder;
class="kw">import javax.annotation.Nonnull;

class="kw">public class="kw">final class VarInt {
   class="kw">private class="kw">static class="kw">final OfShort BE_SHORT = ValueLayout.JAVA_SHORT_UNALIGNED.withOrder(ByteOrder.BIG_ENDIAN);
   class="kw">private class="kw">static class="kw">final OfInt BE_INT = ValueLayout.JAVA_INT_UNALIGNED.withOrder(ByteOrder.BIG_ENDIAN);

   class="kw">private VarInt() {
   }

   class="kw">public class="kw">static void write(@Nonnull ByteBuf var0, int var1) {
      if (var1 < 0) {
         throw new IllegalArgumentException("VarInt cannot encode negative values: " + var1);
      }

      if ((var1 & -128) == 0) {
         var0.writeByte(var1);
      } else if ((var1 & -16384) == 0) {
         var0.writeShort((var1 & 127 | 128) << 8 | var1 >>> 7);
      } else if ((var1 & -2097152) == 0) {
         var0.writeMedium((var1 & 127 | 128) << 16 | (var1 >>> 7 & 127 | 128) << 8 | var1 >>> 14);
      } else if ((var1 & -268435456) == 0) {
         var0.writeInt((var1 & 127 | 128) << 24 | (var1 >>> 7 & 127 | 128) << 16 | (var1 >>> 14 & 127 | 128) << 8 | var1 >>> 21);
      } else {
         var0.writeInt((var1 & 127 | 128) << 24 | (var1 >>> 7 & 127 | 128) << 16 | (var1 >>> 14 & 127 | 128) << 8 | var1 >>> 21 & 127 | 128);
         var0.writeByte(var1 >>> 28);
      }
   }

   class="kw">public class="kw">static int read(@Nonnull ByteBuf var0) {
      int var1 = var0.readByte();
      int var2 = var1 & 127;
      if ((var1 & 128) == 0) {
         class="kw">return var2;
      } else {
         byte var3 = var0.readByte();
         var2 |= (var3 & 127) << 7;
         if ((var3 & 128) == 0) {
            class="kw">return var2;
         } else {
            var3 = var0.readByte();
            var2 |= (var3 & 127) << 14;
            if ((var3 & 128) == 0) {
               class="kw">return var2;
            } else {
               var3 = var0.readByte();
               var2 |= (var3 & 127) << 21;
               if ((var3 & 128) == 0) {
                  class="kw">return var2;
               } else {
                  var3 = var0.readByte();
                  var2 |= (var3 & 127) << 28;
                  if ((var3 & 128) == 0) {
                     class="kw">return var2;
                  } else {
                     throw new ProtocolException("VarInt exceeds maximum length (5 bytes)");
                  }
               }
            }
         }
      }
   }

   class="kw">public class="kw">static int peek(@Nonnull ByteBuf var0, int var1) {
      int var2 = var0.writerIndex();
      if (var1 >= var2) {
         class="kw">return -1;
      }

      int var3 = var0.getByte(var1);
      int var4 = var3 & 127;
      if ((var3 & 128) == 0) {
         class="kw">return var4;
      }

      if (var1 + 1 >= var2) {
         class="kw">return -1;
      }

      byte var5 = var0.getByte(var1 + 1);
      var4 |= (var5 & 127) << 7;
      if ((var5 & 128) == 0) {
         class="kw">return var4;
      }

      if (var1 + 2 >= var2) {
         class="kw">return -1;
      }

      var5 = var0.getByte(var1 + 2);
      var4 |= (var5 & 127) << 14;
      if ((var5 & 128) == 0) {
         class="kw">return var4;
      }

      if (var1 + 3 >= var2) {
         class="kw">return -1;
      }

      var5 = var0.getByte(var1 + 3);
      var4 |= (var5 & 127) << 21;
      if ((var5 & 128) == 0) {
         class="kw">return var4;
      }

      if (var1 + 4 >= var2) {
         class="kw">return -1;
      }

      var5 = var0.getByte(var1 + 4);
      var4 |= (var5 & 127) << 28;
      class="kw">return (var5 & 128) == 0 ? var4 : -1;
   }

   class="kw">public class="kw">static int length(@Nonnull ByteBuf var0, int var1) {
      int var2 = var0.writerIndex();
      if (var1 >= var2) {
         class="kw">return -1;
      } else if ((var0.getByte(var1) & 128) == 0) {
         class="kw">return 1;
      } else if (var1 + 1 >= var2) {
         class="kw">return -1;
      } else if ((var0.getByte(var1 + 1) & 128) == 0) {
         class="kw">return 2;
      } else if (var1 + 2 >= var2) {
         class="kw">return -1;
      } else if ((var0.getByte(var1 + 2) & 128) == 0) {
         class="kw">return 3;
      } else if (var1 + 3 >= var2) {
         class="kw">return -1;
      } else if ((var0.getByte(var1 + 3) & 128) == 0) {
         class="kw">return 4;
      } else if (var1 + 4 >= var2) {
         class="kw">return -1;
      } else {
         class="kw">return (var0.getByte(var1 + 4) & 128) == 0 ? 5 : -1;
      }
   }

   class="kw">public class="kw">static int length(@Nonnull MemorySegment var0, int var1) {
      long var2 = getWithLength(var0, var1);
      class="kw">return var2 == -1L ? -1 : (int)(var2 >>> 32);
   }

   class="kw">public class="kw">static int set(@Nonnull MemorySegment var0, int var1, int var2) {
      if (var2 < 0) {
         throw new IllegalArgumentException("VarInt cannot encode negative values: " + var2);
      } else if ((var2 & -128) == 0) {
         var0.set(PacketIO.PROTO_BYTE, var1, (byte)var2);
         class="kw">return 1;
      } else if ((var2 & -16384) == 0) {
         var0.set(BE_SHORT, var1, (short)((var2 & 127 | 128) << 8 | var2 >>> 7));
         class="kw">return 2;
      } else if ((var2 & -2097152) == 0) {
         var0.set(BE_SHORT, var1, (short)((var2 & 127 | 128) << 8 | var2 >>> 7 & 127 | 128));
         var0.set(PacketIO.PROTO_BYTE, var1 + 2, (byte)(var2 >>> 14));
         class="kw">return 3;
      } else if ((var2 & -268435456) == 0) {
         var0.set(BE_INT, var1, (var2 & 127 | 128) << 24 | (var2 >>> 7 & 127 | 128) << 16 | (var2 >>> 14 & 127 | 128) << 8 | var2 >>> 21);
         class="kw">return 4;
      } else {
         var0.set(BE_INT, var1, (var2 & 127 | 128) << 24 | (var2 >>> 7 & 127 | 128) << 16 | (var2 >>> 14 & 127 | 128) << 8 | var2 >>> 21 & 127 | 128);
         var0.set(PacketIO.PROTO_BYTE, var1 + 4, (byte)(var2 >>> 28));
         class="kw">return 5;
      }
   }

   class="kw">public class="kw">static int get(@Nonnull MemorySegment var0, int var1) {
      long var2 = getWithLength(var0, var1);
      class="kw">return var2 == -1L ? -1 : (int)var2;
   }

   class="kw">public class="kw">static long getWithLength(@Nonnull MemorySegment var0, int var1) {
      int var2 = (int)var0.byteSize();
      if (var1 >= var2) {
         class="kw">return -1L;
      } else {
         int var3 = var0.get(PacketIO.PROTO_BYTE, var1);
         int var4 = var3 & 127;
         if ((var3 & 128) == 0) {
            class="kw">return 4294967296L | var4;
         } else if (var1 + 1 >= var2) {
            class="kw">return -1L;
         } else {
            byte var5 = var0.get(PacketIO.PROTO_BYTE, var1 + 1);
            var4 |= (var5 & 127) << 7;
            if ((var5 & 128) == 0) {
               class="kw">return var5 == 0 ? -1L : 8589934592L | var4;
            } else if (var1 + 2 >= var2) {
               class="kw">return -1L;
            } else {
               var5 = var0.get(PacketIO.PROTO_BYTE, var1 + 2);
               var4 |= (var5 & 127) << 14;
               if ((var5 & 128) == 0) {
                  class="kw">return var5 == 0 ? -1L : 12884901888L | var4;
               } else if (var1 + 3 >= var2) {
                  class="kw">return -1L;
               } else {
                  var5 = var0.get(PacketIO.PROTO_BYTE, var1 + 3);
                  var4 |= (var5 & 127) << 21;
                  if ((var5 & 128) == 0) {
                     class="kw">return var5 == 0 ? -1L : 17179869184L | var4;
                  } else if (var1 + 4 >= var2) {
                     class="kw">return -1L;
                  } else {
                     var5 = var0.get(PacketIO.PROTO_BYTE, var1 + 4);
                     var4 |= (var5 & 7) << 28;
                     if ((var5 & 128) != 0) {
                        class="kw">return -1L;
                     } else {
                        class="kw">return var5 >= 1 && var5 <= 7 ? 21474836480L | var4 : -1L;
                     }
                  }
               }
            }
         }
      }
   }

   class="kw">public class="kw">static int size(int var0) {
      if ((var0 & -128) == 0) {
         class="kw">return 1;
      } else if ((var0 & -16384) == 0) {
         class="kw">return 2;
      } else if ((var0 & -2097152) == 0) {
         class="kw">return 3;
      } else {
         class="kw">return (var0 & -268435456) == 0 ? 4 : 5;
      }
   }
}