FloatCodec class

Пакет: com.hypixel.hytale.codec.codecs.simple

Файл: com/hypixel/hytale/codec/codecs/simple/FloatCodec.java

implements: Codec<Float>, RawJsonCodec<Float>, PrimitiveCodec

Поля (6)

МодификаторыТипИмя
final String STRING_SCHEMA_PATTERN
String var1
StringSchema var2
StringSchema var3
NumberSchema var4
Schema var5

Методы (6)

МодификаторыВозвратСигнатура
static float decodeFloatfloat decodeFloat(@Nonnull BsonValue var0)
abstract return decodeFloatreturn decodeFloat(var1)
if if(var2 != null)
static float readFloatfloat readFloat(@Nonnull RawJsonReader var0)
abstract return readFloatreturn readFloat(var1)
return switchreturn switch(var1)

Исходный код

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

class="kw">import com.hypixel.hytale.codec.Codec;
class="kw">import com.hypixel.hytale.codec.ExtraInfo;
class="kw">import com.hypixel.hytale.codec.PrimitiveCodec;
class="kw">import com.hypixel.hytale.codec.RawJsonCodec;
class="kw">import com.hypixel.hytale.codec.schema.SchemaContext;
class="kw">import com.hypixel.hytale.codec.schema.config.NumberSchema;
class="kw">import com.hypixel.hytale.codec.schema.config.Schema;
class="kw">import com.hypixel.hytale.codec.schema.config.StringSchema;
class="kw">import com.hypixel.hytale.codec.util.RawJsonReader;
class="kw">import java.io.IOException;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;
class="kw">import org.bson.BsonDouble;
class="kw">import org.bson.BsonValue;

class="kw">public class FloatCodec class="kw">implements Codec<Float>, RawJsonCodec<Float>, PrimitiveCodec {
   class="kw">public class="kw">static class="kw">final String STRING_SCHEMA_PATTERN = "^(-?Infinity|NaN)$";

   class="kw">public FloatCodec() {
   }

   @Nonnull
   class="kw">public Float decode(@Nonnull BsonValue var1, ExtraInfo var2) {
      class="kw">return decodeFloat(var1);
   }

   @Nonnull
   class="kw">public BsonValue encode(Float var1, ExtraInfo var2) {
      class="kw">return new BsonDouble(var1.floatValue());
   }

   @Nonnull
   class="kw">public Float decodeJson(@Nonnull RawJsonReader var1, ExtraInfo var2) class="kw">throws IOException {
      class="kw">return readFloat(var1);
   }

   @Nonnull
   @Override
   class="kw">public Schema toSchema(@Nonnull SchemaContext var1) {
      StringSchema var2 = new StringSchema();
      var2.setPattern("^(-?Infinity|NaN)$");
      class="kw">return Schema.anyOf(new NumberSchema(), var2);
   }

   @Nonnull
   class="kw">public Schema toSchema(@Nonnull SchemaContext var1, @Nullable Float var2) {
      StringSchema var3 = new StringSchema();
      var3.setPattern("^(-?Infinity|NaN)$");
      NumberSchema var4 = new NumberSchema();
      if (var2 != null) {
         if (!var2.isNaN() && !var2.isInfinite()) {
            var4.setDefault(var2.doubleValue());
         } else {
            var3.setDefault(var2.toString());
         }
      }

      Schema var5 = Schema.anyOf(var4, var3);
      var5.getHytale().setType("Number");
      class="kw">return var5;
   }

   class="kw">public class="kw">static float decodeFloat(@Nonnull BsonValue var0) {
      if (var0.isString()) {
         class="kw">switch (var0.asString().getValue()) {
            case "NaN":
               class="kw">return Float.NaN;
            case "Infinity":
               class="kw">return Float.POSITIVE_INFINITY;
            case "-Infinity":
               class="kw">return Float.NEGATIVE_INFINITY;
         }
      }

      class="kw">return (float)var0.asNumber().doubleValue();
   }

   class="kw">public class="kw">static float readFloat(@Nonnull RawJsonReader var0) class="kw">throws IOException {
      if (var0.peekFor('"')) {
         String var1 = var0.readString();

         class="kw">return class="kw">switch (var1) {
            case "NaN" -> Float.NaN;
            case "Infinity" -> Float.POSITIVE_INFINITY;
            case "-Infinity" -> Float.NEGATIVE_INFINITY;
            class="kw">default -> throw new IOException("Unexpected string: \"" + var1 + "\", expected NaN, Infinity, -Infinity");
         };
      } else {
         class="kw">return (float)var0.readDoubleValue();
      }
   }
}