Float2ObjectMapCodec class

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

Файл: com/hypixel/hytale/codec/codecs/map/Float2ObjectMapCodec.java

implements: Codec<Float2ObjectMap<T>>, WrappedCodec<T>

Поля (15)

МодификаторыТипИмя
final Pattern FLOAT_PATTERN
BsonDocument var3
BsonDocument var3
Float2ObjectMap var3
var3
var3
Float2ObjectMap var4
var4
ObjectIterator var4
String var4
it.unimi.dsi.fastutil.floats.Float2ObjectMap.Entry var5
float var5
String var7
BsonValue var8
float var9

Методы (9)

МодификаторыВозвратСигнатура
abstract throw new CodecExceptionthrow new CodecException("Failed to decode", var8, var2, var13)
abstract throw new CodecExceptionthrow new CodecException("Failed to decode", var1, var2, var9)
public Float2ObjectMap<T> decodeFloat2ObjectMap<T> decode(@Nonnull BsonValue var1, @Nonnull ExtraInfo var2)
public Float2ObjectMap<T> decodeJsonFloat2ObjectMap<T> decodeJson(@Nonnull RawJsonReader var1, @Nonnull ExtraInfo var2)
if if(this.unmodifiable)
if if(this.unmodifiable)
if if(this.unmodifiable)
abstract this this(var1, var2, true)
while while(true)

Исходный код

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

class="kw">import com.hypixel.hytale.codec.Codec;
class="kw">import com.hypixel.hytale.codec.ExtraInfo;
class="kw">import com.hypixel.hytale.codec.WrappedCodec;
class="kw">import com.hypixel.hytale.codec.exception.CodecException;
class="kw">import com.hypixel.hytale.codec.schema.SchemaContext;
class="kw">import com.hypixel.hytale.codec.schema.config.ObjectSchema;
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 it.unimi.dsi.fastutil.floats.Float2ObjectMap;
class="kw">import it.unimi.dsi.fastutil.floats.Float2ObjectMaps;
class="kw">import it.unimi.dsi.fastutil.objects.ObjectIterator;
class="kw">import java.io.IOException;
class="kw">import java.util.Map.Entry;
class="kw">import java.util.function.Supplier;
class="kw">import java.util.regex.Pattern;
class="kw">import javax.annotation.Nonnull;
class="kw">import org.bson.BsonDocument;
class="kw">import org.bson.BsonValue;

class="kw">public class Float2ObjectMapCodec<T> class="kw">implements Codec<Float2ObjectMap<T>>, WrappedCodec<T> {
   class="kw">public class="kw">static class="kw">final Pattern FLOAT_PATTERN = Pattern.compile("^[-+]?[0-9]+(.[0-9]+)?$");
   class="kw">private class="kw">final Codec<T> valueCodec;
   class="kw">private class="kw">final Supplier<Float2ObjectMap<T>> supplier;
   class="kw">private class="kw">final boolean unmodifiable;

   class="kw">public Float2ObjectMapCodec(Codec<T> var1, Supplier<Float2ObjectMap<T>> var2, boolean var3) {
      this.valueCodec = var1;
      this.supplier = var2;
      this.unmodifiable = var3;
   }

   class="kw">public Float2ObjectMapCodec(Codec<T> var1, Supplier<Float2ObjectMap<T>> var2) {
      this(var1, var2, true);
   }

   @Override
   class="kw">public Codec<T> getChildCodec() {
      class="kw">return this.valueCodec;
   }

   class="kw">public Float2ObjectMap<T> decode(@Nonnull BsonValue var1, @Nonnull ExtraInfo var2) {
      BsonDocument var3 = var1.asDocument();
      Float2ObjectMap var4 = this.supplier.get();

      for (Entry var6 : var3.entrySet()) {
         String var7 = var6.getKey();
         BsonValue var8 = var6.getValue();
         var2.pushKey(var7);

         try {
            float var9 = Float.parseFloat(var7);
            var4.put(var9, this.valueCodec.decode(var8, var2));
         } catch (Exception var13) {
            throw new CodecException("Failed to decode", var8, var2, var13);
         } class="kw">finally {
            var2.popKey();
         }
      }

      if (this.unmodifiable) {
         var4 = Float2ObjectMaps.unmodifiable(var4);
      }

      class="kw">return var4;
   }

   @Nonnull
   class="kw">public BsonValue encode(@Nonnull Float2ObjectMap<T> var1, ExtraInfo var2) {
      BsonDocument var3 = new BsonDocument();
      ObjectIterator var4 = var1.float2ObjectEntrySet().iterator();

      while (var4.hasNext()) {
         it.unimi.dsi.fastutil.floats.Float2ObjectMap.Entry var5 = (it.unimi.dsi.fastutil.floats.Float2ObjectMap.Entry<T>)var4.next();
         var3.put(Float.toString(var5.getFloatKey()), this.valueCodec.encode((T)var5.getValue(), var2));
      }

      class="kw">return var3;
   }

   class="kw">public Float2ObjectMap<T> decodeJson(@Nonnull RawJsonReader var1, @Nonnull ExtraInfo var2) class="kw">throws IOException {
      var1.expect('{');
      var1.consumeWhiteSpace();
      Float2ObjectMap var3 = this.supplier.get();
      if (var1.tryConsume('}')) {
         if (this.unmodifiable) {
            var3 = Float2ObjectMaps.unmodifiable(var3);
         }

         class="kw">return var3;
      } else {
         while (true) {
            String var4 = var1.readString();
            var1.consumeWhiteSpace();
            var1.expect(':');
            var1.consumeWhiteSpace();
            var2.pushKey(var4, var1);

            try {
               float var5 = Float.parseFloat(var4);
               var3.put(var5, this.valueCodec.decodeJson(var1, var2));
            } catch (Exception var9) {
               throw new CodecException("Failed to decode", var1, var2, var9);
            } class="kw">finally {
               var2.popKey();
            }

            var1.consumeWhiteSpace();
            if (var1.tryConsumeOrExpect('}', ',')) {
               if (this.unmodifiable) {
                  var3 = Float2ObjectMaps.unmodifiable(var3);
               }

               class="kw">return var3;
            }

            var1.consumeWhiteSpace();
         }
      }
   }

   @Nonnull
   @Override
   class="kw">public Schema toSchema(@Nonnull SchemaContext var1) {
      ObjectSchema var2 = new ObjectSchema();
      StringSchema var3 = new StringSchema();
      var3.setPattern(FLOAT_PATTERN);
      var3.setMarkdownDescription("A string that contains any floating point number");
      var2.setPropertyNames(var3);
      var2.setAdditionalProperties(var1.refDefinition(this.valueCodec));
      class="kw">return var2;
   }
}