Object2FloatMapCodec class

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

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

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

Поля (13)

МодификаторыТипИмя
final Codec<T> keyCodec
BsonDocument var3
BsonDocument var3
Object2FloatMap var3
var3
var3
Object2FloatMap var4
var4
ObjectIterator var4
Object var4
Object var5
String var6
Object var7

Методы (7)

МодификаторыВозвратСигнатура
public Object2FloatMap<T> decodeObject2FloatMap<T> decode(@Nonnull BsonValue var1, ExtraInfo var2)
public Object2FloatMap<T> decodeJsonObject2FloatMap<T> decodeJson(@Nonnull RawJsonReader var1, 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.schema.SchemaContext;
class="kw">import com.hypixel.hytale.codec.schema.config.NumberSchema;
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.objects.Object2FloatMap;
class="kw">import it.unimi.dsi.fastutil.objects.Object2FloatMaps;
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 javax.annotation.Nonnull;
class="kw">import org.bson.BsonDocument;
class="kw">import org.bson.BsonDouble;
class="kw">import org.bson.BsonString;
class="kw">import org.bson.BsonValue;

class="kw">public class Object2FloatMapCodec<T> class="kw">implements Codec<Object2FloatMap<T>>, WrappedCodec<T> {
   class="kw">private class="kw">final Codec<T> keyCodec;
   class="kw">private class="kw">final Supplier<Object2FloatMap<T>> supplier;
   class="kw">private class="kw">final boolean unmodifiable;

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

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

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

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

      for (Entry var6 : var3.entrySet()) {
         Object var7 = this.keyCodec.decode(new BsonString(var6.getKey()), var2);
         var4.put(var7, (float)var6.getValue().asNumber().doubleValue());
      }

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

      class="kw">return var4;
   }

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

      while (var4.hasNext()) {
         Object var5 = (T)var4.next();
         String var6 = this.keyCodec.encode(var5, var2).asString().getValue();
         var3.put(var6, new BsonDouble(var1.getFloat(var5)));
      }

      class="kw">return var3;
   }

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

         class="kw">return var3;
      } else {
         while (true) {
            Object var4 = this.keyCodec.decodeJson(var1, var2);
            var1.consumeWhiteSpace();
            var1.expect(':');
            var1.consumeWhiteSpace();
            var3.put(var4, var1.readFloatValue());
            var1.consumeWhiteSpace();
            if (var1.tryConsumeOrExpect('}', ',')) {
               if (this.unmodifiable) {
                  var3 = Object2FloatMaps.unmodifiable(var3);
               }

               class="kw">return var3;
            }

            var1.consumeWhiteSpace();
         }
      }
   }

   @Nonnull
   @Override
   class="kw">public Schema toSchema(@Nonnull SchemaContext var1) {
      ObjectSchema var2 = new ObjectSchema();
      StringSchema var3 = (StringSchema)this.keyCodec.toSchema(var1);
      String var4 = var3.getTitle();
      if (var4 == null) {
         var4 = var3.getHytale().getType();
      }

      var2.setTitle("Map of " + var4 + " to float");
      var2.setPropertyNames(var3);
      var2.setAdditionalProperties(new NumberSchema());
      class="kw">return var2;
   }
}