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