Parameter class

Пакет: com.hypixel.hytale.server.npc.asset.builder

Файл: com/hypixel/hytale/server/npc/asset/builder/BuilderParameters.java

Поля (24)

МодификаторыТипИмя
public static final String KEY_CONFINE
public static final String KEY_DESCRIPTION
public static final String KEY_PRIVATE
public static final String KEY_TYPE_HINT
public static final String KEY_VALIDATE
public static final String KEY_VALUE
private final String code
private final String description
private final BuilderExpression expression
private List<ExecutionContext.Instruction> instructionList
private final boolean isPrivate
private final boolean isValidation
ObjectSchema var1
LinkedHashMap var2
JsonObject var3
BuilderExpression var4
var4
var4
var4
String var5
String var6
boolean var7
String var8
String var9

Методы (11)

МодификаторыВозвратСигнатура
abstract throw new IllegalStateExceptionthrow new IllegalStateException("TypeHint missing for parameter " + var2)
abstract throw new IllegalStateExceptionthrow new IllegalStateException("TypeHint must be one of STRING, NUMBER, BOOLEAN for parameter " + var2)
abstract throw new IllegalStateExceptionthrow new IllegalStateException("Only either 'Confine' or 'Validate' allowed for parameter " + var2)
private static BuilderParameters.Parameter fromJSONprivate static BuilderParameters.Parameter fromJSON(@Nonnull JsonElement var0, @Nonnull BuilderParameters var1, String var2)
public String getDescriptionpublic String getDescription()
public BuilderExpression getExpressionpublic BuilderExpression getExpression()
if if(var4 instanceof BuilderExpressionStaticEmptyArray)
if if(var7 && var6 != null)
public boolean isPrivatepublic boolean isPrivate()
public boolean isValidationpublic boolean isValidation()
public static ObjectSchema toSchemapublic static ObjectSchema toSchema(@Nonnull SchemaContext var0)

Исходный код

Показать/скрыть
class="kw">package com.hypixel.hytale.server.npc.asset.builder;

class="kw">import com.google.gson.JsonElement;
class="kw">import com.google.gson.JsonObject;
class="kw">import com.hypixel.hytale.codec.schema.SchemaContext;
class="kw">import com.hypixel.hytale.codec.schema.config.ArraySchema;
class="kw">import com.hypixel.hytale.codec.schema.config.BooleanSchema;
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.server.npc.asset.builder.expression.BuilderExpression;
class="kw">import com.hypixel.hytale.server.npc.asset.builder.expression.BuilderExpressionStaticBooleanArray;
class="kw">import com.hypixel.hytale.server.npc.asset.builder.expression.BuilderExpressionStaticEmptyArray;
class="kw">import com.hypixel.hytale.server.npc.asset.builder.expression.BuilderExpressionStaticNumberArray;
class="kw">import com.hypixel.hytale.server.npc.asset.builder.expression.BuilderExpressionStaticStringArray;
class="kw">import com.hypixel.hytale.server.npc.util.expression.ExecutionContext;
class="kw">import com.hypixel.hytale.server.npc.util.expression.StdScope;
class="kw">import com.hypixel.hytale.server.npc.util.expression.ValueType;
class="kw">import com.hypixel.hytale.server.npc.util.expression.compile.CompileContext;
class="kw">import it.unimi.dsi.fastutil.ints.IntOpenHashSet;
class="kw">import it.unimi.dsi.fastutil.ints.IntSet;
class="kw">import java.util.HashMap;
class="kw">import java.util.HashSet;
class="kw">import java.util.LinkedHashMap;
class="kw">import java.util.List;
class="kw">import java.util.Map;
class="kw">import java.util.Set;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;

class="kw">public class BuilderParameters {
   class="kw">public class="kw">static class="kw">final String KEY_PARAMETERS = "Parameters";
   class="kw">public class="kw">static class="kw">final String KEY_IMPORT_STATES = "_ImportStates";
   class="kw">public class="kw">static class="kw">final String KEY_INTERFACE = "Interface";
   @Nonnull
   class="kw">protected class="kw">final Map<String, BuilderParameters.Parameter> parameters;
   class="kw">protected StdScope scope;
   @Nullable
   class="kw">protected CompileContext compileContext;
   class="kw">protected class="kw">final String fileName;
   class="kw">protected class="kw">final IntSet dependencies;
   class="kw">protected class="kw">final String interfaceCode;
   class="kw">protected class="kw">final Set<String> forwardingSlots = new HashSet<>();

   class="kw">protected BuilderParameters(StdScope var1, String var2, String var3) {
      this(var1, var2, var3, new IntOpenHashSet());
   }

   class="kw">protected BuilderParameters(StdScope var1, String var2, String var3, IntSet var4) {
      this.scope = new StdScope(var1);
      this.compileContext = new CompileContext(this.scope);
      this.parameters = new HashMap<>();
      this.fileName = var2;
      this.dependencies = var4;
      this.interfaceCode = var3;
   }

   class="kw">protected BuilderParameters(@Nonnull BuilderParameters var1) {
      this(var1.scope, var1.fileName, var1.interfaceCode, var1.dependencies);
   }

   class="kw">public boolean isEmpty() {
      class="kw">return this.parameters.isEmpty();
   }

   class="kw">public void addParametersToScope() {
      this.parameters.forEach((var1, var2) -> var2.expression.addToScope(var1, this.scope));
   }

   class="kw">public ValueType getParameterType(String var1) {
      BuilderParameters.Parameter var2 = this.parameters.get(var1);
      class="kw">return var2 != null && !var2.isPrivate() ? var2.getExpression().getType() : ValueType.VOID;
   }

   class="kw">public void readJSON(@Nonnull JsonObject var1, @Nonnull StateMappingHelper var2) {
      JsonElement var3 = var1.get("Parameters");
      if (var3 != null) {
         JsonObject var4 = BuilderBase.expectObject(var3, "Parameters");
         var4.entrySet().forEach(var2x -> {
            String var3 = (String)var2x.getKey();
            if (this.parameters.containsKey(var3)) {
               throw new IllegalStateException("Duplicate entry '" + var3 + "' in 'Parameters' block");
            }

            if (var3.equals("_ImportStates")) {
               if (!((JsonElement)var2x.getValue()).isJsonArray()) {
                  throw new IllegalStateException(String.format("%s in parameter block must be a Json Array", "_ImportStates"));
               }

               var2.setComponentImportStateMappings(((JsonElement)var2x.getValue()).getAsJsonArray());
            } else {
               this.parameters.put(var3, BuilderParameters.Parameter.fromJSON((JsonElement)var2x.getValue(), this, var3));
            }
         });
      }
   }

   class="kw">public void createCompileContext() {
      this.compileContext = new CompileContext();
   }

   class="kw">public void disposeCompileContext() {
      this.compileContext = null;
   }

   @Nullable
   class="kw">public CompileContext getCompileContext() {
      class="kw">return this.compileContext;
   }

   class="kw">public ValueType compile(@Nonnull String var1) {
      class="kw">return this.getCompileContext().compile(var1, this.getScope(), false);
   }

   class="kw">public List<ExecutionContext.Instruction> getInstructions() {
      class="kw">return this.getCompileContext().getInstructions();
   }

   @Nullable
   class="kw">public ExecutionContext.Operand getConstantOperand() {
      class="kw">return this.getCompileContext().getAsOperand();
   }

   class="kw">public StdScope getScope() {
      class="kw">return this.scope;
   }

   @Nonnull
   class="kw">public StdScope createScope() {
      class="kw">return StdScope.copyOf(this.scope);
   }

   class="kw">public void validateNoDuplicateParameters(@Nonnull BuilderParameters var1) {
      var1.parameters.keySet().forEach(var1x -> {
         if (this.parameters.containsKey(var1x)) {
            throw new IllegalStateException("Parameter '" + var1x + "' in 'Parameters' block hides parameter from parent scope");
         }
      });
   }

   class="kw">public String getFileName() {
      class="kw">return this.fileName;
   }

   class="kw">public IntSet getDependencies() {
      class="kw">return this.dependencies;
   }

   class="kw">public String getInterfaceCode() {
      class="kw">return this.interfaceCode;
   }

   class="kw">public void addDependency(int var1) {
      this.dependencies.add(var1);
   }

   class="kw">public void registerForwardingSlot(@Nonnull String var1) {
      this.forwardingSlots.add(var1);
   }

   @Nonnull
   class="kw">public Set<String> getForwardingSlots() {
      class="kw">return this.forwardingSlots;
   }

   @Nonnull
   class="kw">public class="kw">static ObjectSchema toSchema(@Nonnull SchemaContext var0) {
      ObjectSchema var1 = new ObjectSchema();
      var1.setTitle("Parameters");
      var1.setProperties(Map.of("_ImportStates", new ArraySchema(new StringSchema())));
      var1.setAdditionalProperties(BuilderParameters.Parameter.toSchema(var0));
      class="kw">return var1;
   }

   class="kw">public class="kw">static class Parameter {
      class="kw">public class="kw">static class="kw">final String KEY_VALUE = "Value";
      class="kw">public class="kw">static class="kw">final String KEY_TYPE_HINT = "TypeHint";
      class="kw">public class="kw">static class="kw">final String KEY_VALIDATE = "Validate";
      class="kw">public class="kw">static class="kw">final String KEY_CONFINE = "Confine";
      class="kw">public class="kw">static class="kw">final String KEY_DESCRIPTION = "Description";
      class="kw">public class="kw">static class="kw">final String KEY_PRIVATE = "Private";
      class="kw">private class="kw">final BuilderExpression expression;
      class="kw">private class="kw">final String description;
      class="kw">private class="kw">final String code;
      class="kw">private List<ExecutionContext.Instruction> instructionList;
      class="kw">private class="kw">final boolean isValidation;
      class="kw">private class="kw">final boolean isPrivate;

      class="kw">public Parameter(BuilderExpression var1, String var2, String var3, boolean var4, boolean var5) {
         this.expression = var1;
         this.description = var2;
         this.code = var3;
         this.isValidation = var4;
         this.isPrivate = var5;
      }

      class="kw">public BuilderExpression getExpression() {
         class="kw">return this.expression;
      }

      class="kw">public String getDescription() {
         class="kw">return this.description;
      }

      class="kw">public boolean isValidation() {
         class="kw">return this.isValidation;
      }

      class="kw">public boolean isPrivate() {
         class="kw">return this.isPrivate;
      }

      @Nonnull
      class="kw">public class="kw">static ObjectSchema toSchema(@Nonnull SchemaContext var0) {
         ObjectSchema var1 = new ObjectSchema();
         var1.setTitle("Parameter");
         LinkedHashMap var2 = new LinkedHashMap<>();
         var2.put("Value", BuilderExpression.toSchema(var0));
         var2.put("TypeHint", new StringSchema());
         var2.put("Validate", new StringSchema());
         var2.put("Confine", new StringSchema());
         var2.put("Description", new StringSchema());
         var2.put("Private", new BooleanSchema());
         var1.setProperties(var2);
         class="kw">return var1;
      }

      @Nonnull
      class="kw">private class="kw">static BuilderParameters.Parameter fromJSON(@Nonnull JsonElement var0, @Nonnull BuilderParameters var1, String var2) {
         JsonObject var3 = BuilderBase.expectObject(var0);
         BuilderExpression var4 = BuilderExpression.fromJSON(BuilderBase.expectKey(var3, "Value"), var1, true);
         if (var4 class="kw">instanceof BuilderExpressionStaticEmptyArray) {
            if (!var3.has("TypeHint")) {
               throw new IllegalStateException("TypeHint missing for parameter " + var2);
            }

            String var5 = BuilderBase.readString(var3, "TypeHint");
            if ("STRING".equalsIgnoreCase(var5)) {
               var4 = BuilderExpressionStaticStringArray.INSTANCE_EMPTY;
            } else if ("NUMBER".equalsIgnoreCase(var5)) {
               var4 = BuilderExpressionStaticNumberArray.INSTANCE_EMPTY;
            } else {
               if (!"BOOLEAN".equalsIgnoreCase(var5)) {
                  throw new IllegalStateException("TypeHint must be one of STRING, NUMBER, BOOLEAN for parameter " + var2);
               }

               var4 = BuilderExpressionStaticBooleanArray.INSTANCE_EMPTY;
            }
         }

         String var9 = BuilderBase.readString(var3, "Validate", null);
         String var6 = BuilderBase.readString(var3, "Confine", null);
         boolean var7 = var9 != null;
         if (var7 && var6 != null) {
            throw new IllegalStateException("Only either 'Confine' or 'Validate' allowed for parameter " + var2);
         }

         String var8 = var7 ? var9 : var6;
         class="kw">return new BuilderParameters.Parameter(
            var4, BuilderBase.readString(var3, "Description", null), var8, var7, BuilderBase.readBoolean(var3, "Private", false)
         );
      }
   }
}