StdScope class
Пакет: com.hypixel.hytale.server.npc.util.expression
Файл: com/hypixel/hytale/server/npc/util/expression/StdScope.java
implements: Scope
Поля (26)
| Модификаторы | Тип | Имя |
|---|---|---|
final |
StdScope.SymbolStringArray |
VAR_EMPTY_STRING_ARRAY |
|
|
break |
|
|
break |
|
public final boolean |
isConstant |
|
|
return |
|
public final BooleanSupplier |
value |
|
public final Supplier<boolean[]> |
value |
|
public final Scope.Function |
value |
|
public final DoubleSupplier |
value |
|
public final Supplier<double[]> |
value |
|
public final Supplier<String> |
value |
|
public final Supplier<String[]> |
value |
|
public final ValueType |
valueType |
|
StdScope |
var1 |
|
StdScope.Symbol |
var2 |
|
StdScope.Symbol |
var2 |
|
StdScope.Symbol |
var2 |
|
StdScope.Symbol |
var2 |
|
StdScope.Symbol |
var2 |
|
StdScope.Symbol |
var2 |
|
StdScope.Symbol |
var2 |
|
StdScope.Symbol |
var2 |
|
StdScope.Symbol |
var2 |
|
StdScope.Symbol |
var2 |
|
StdScope.Symbol |
var3 |
|
StdScope.Symbol |
var3 |
Методы (95)
| Модификаторы | Возврат | Сигнатура |
|---|---|---|
abstract |
throw new |
IllegalStateExceptionthrow new IllegalStateException("Trying to add symbol twice to scope " + var1) |
abstract |
throw new |
IllegalStateExceptionthrow new IllegalStateException("Can't find symbol " + var1 + " in symbol table") |
abstract |
throw new |
IllegalStateExceptionthrow new IllegalStateException("Type mismatch with " + var1 + ". Got " + var2 + " but expected " + var3.valueType) |
abstract |
throw new |
IllegalStateExceptionthrow new IllegalStateException("Can't replace a constant in symbol table: " + var1) |
abstract |
throw new |
IllegalStateExceptionthrow new IllegalStateException("Can't replace a variable with a constant: " + var1) |
abstract |
throw new |
IllegalStateExceptionthrow new IllegalStateException("Can't assign an empty array to symbol " + var1 + " of type " + var2.valueType) |
abstract |
throw new |
IllegalStateExceptionthrow new IllegalStateException("Unable to find symbol: " + var1) |
abstract |
throw new |
IllegalStateExceptionthrow new IllegalStateException("Symbol is not a string: " + var1) |
abstract |
throw new |
IllegalStateExceptionthrow new IllegalStateException("Symbol is not a number: " + var1) |
abstract |
throw new |
IllegalStateExceptionthrow new IllegalStateException("Symbol is not a boolean: " + var1) |
abstract |
throw new |
IllegalStateExceptionthrow new IllegalStateException("Symbol is not a string array: " + var1) |
abstract |
throw new |
IllegalStateExceptionthrow new IllegalStateException("Symbol is not a number array: " + var1) |
abstract |
throw new |
IllegalStateExceptionthrow new IllegalStateException("Symbol is not a boolean array: " + var1) |
abstract |
throw new |
IllegalStateExceptionthrow new IllegalStateException("Unable to find function: " + var1) |
abstract |
throw new |
IllegalStateExceptionthrow new IllegalStateException("Symbol is not a function: " + var1) |
|
public |
Symbolpublic Symbol(boolean var1, ValueType var2) |
|
public |
SymbolBooleanpublic SymbolBoolean(boolean var1, BooleanSupplier var2) |
|
public |
SymbolBooleanArraypublic SymbolBooleanArray(boolean var1, Supplier<boolean[]> var2) |
|
public |
SymbolFunctionpublic SymbolFunction(boolean var1, ValueType var2, Scope.Function var3) |
|
public |
SymbolNumberpublic SymbolNumber(boolean var1, DoubleSupplier var2) |
|
public |
SymbolNumberArraypublic SymbolNumberArray(boolean var1, Supplier<double[]> var2) |
|
public |
SymbolStringpublic SymbolString(boolean var1, Supplier<String> var2) |
|
public |
SymbolStringArraypublic SymbolStringArray(boolean var1, Supplier<String[]> var2) |
protected |
void |
addvoid add(String var1, StdScope.Symbol var2) |
public |
void |
addBooleanArraySuppliervoid addBooleanArraySupplier(String var1, Supplier<boolean[]> var2) |
public |
void |
addConstvoid addConst(String var1, @Nullable String var2) |
public |
void |
addConstvoid addConst(String var1, double var2) |
public |
void |
addConstvoid addConst(String var1, boolean var2) |
public |
void |
addConstvoid addConst(String var1, @Nullable String[] var2) |
public |
void |
addConstvoid addConst(String var1, @Nullable double[] var2) |
public |
void |
addConstvoid addConst(String var1, @Nullable boolean[] var2) |
public |
void |
addConstEmptyArrayvoid addConstEmptyArray(String var1) |
public |
void |
addDoubleArraySuppliervoid addDoubleArraySupplier(String var1, Supplier<double[]> var2) |
public |
void |
addInvariantvoid addInvariant(@Nonnull String var1, Scope.Function var2, ValueType var3, @Nonnull ValueType... var4) |
public |
void |
addStringArraySuppliervoid addStringArraySupplier(String var1, Supplier<String[]> var2) |
public |
void |
addSuppliervoid addSupplier(String var1, Supplier<String> var2) |
public |
void |
addSuppliervoid addSupplier(String var1, DoubleSupplier var2) |
public |
void |
addSuppliervoid addSupplier(String var1, BooleanSupplier var2) |
public |
void |
addVarvoid addVar(String var1, @Nullable String var2) |
public |
void |
addVarvoid addVar(String var1, double var2) |
public |
void |
addVarvoid addVar(String var1, boolean var2) |
public |
void |
addVarvoid addVar(String var1, @Nullable String[] var2) |
public |
void |
addVarvoid addVar(String var1, @Nullable double[] var2) |
public |
void |
addVarvoid addVar(String var1, @Nullable boolean[] var2) |
public |
void |
addVariantvoid addVariant(@Nonnull String var1, Scope.Function var2, ValueType var3, @Nonnull ValueType... var4) |
public |
void |
changeValuevoid changeValue(String var1, @Nullable String var2) |
public |
void |
changeValuevoid changeValue(String var1, double var2) |
public |
void |
changeValuevoid changeValue(String var1, boolean var2) |
public |
void |
changeValuevoid changeValue(String var1, @Nullable String[] var2) |
public |
void |
changeValuevoid changeValue(String var1, @Nullable double[] var2) |
public |
void |
changeValuevoid changeValue(String var1, @Nullable boolean[] var2) |
public |
void |
changeValueToEmptyArrayvoid changeValueToEmptyArray(String var1) |
protected |
StdScope.Symbol |
getStdScope.Symbol get(String var1) |
|
|
if if(var2 == null) |
|
|
if if(var2 == null) |
|
|
if if(var2 == null) |
|
|
if if(var2 == null) |
|
|
if if(var2 == null) |
|
|
if if(var2 == null) |
|
|
if if(var2 == null) |
|
|
if if(var2 == null) |
|
|
if if(var3 == null) |
|
|
if if(var3.isConstant) |
|
|
if if(var2.isConstant) |
|
|
if if(var2 == null) |
|
|
if if(var2 == null) |
|
|
if if(var2 == null) |
|
|
if if(var2 == null) |
|
|
if if(var2.isConstant) |
|
|
if if(var2 == null) |
|
|
if if(this.parent != null) |
|
|
if if(var2 == null) |
|
|
if if(this.parent != null) |
|
|
if if(var2 == null) |
|
|
if if(this.parent != null) |
|
|
if if(var2 == null) |
|
|
if if(this.parent != null) |
|
|
if if(var2 == null) |
|
|
if if(this.parent != null) |
|
|
if if(var2 == null) |
|
|
if if(this.parent != null) |
|
|
if if(var2 == null) |
|
|
if if(this.parent != null) |
|
|
if if(var2 != null) |
|
|
if if(var2 != null) |
protected |
void |
mergeSymbolsvoid mergeSymbols(@Nonnull StdScope var1) |
protected |
void |
replacevoid replace(String var1, @Nonnull StdScope.Symbol var2) |
abstract |
|
super super(var1, ValueType.BOOLEAN) |
abstract |
|
super super(var1, ValueType.BOOLEAN_ARRAY) |
abstract |
|
super super(var1, var2) |
abstract |
|
super super(var1, ValueType.NUMBER) |
abstract |
|
super super(var1, ValueType.NUMBER_ARRAY) |
abstract |
|
super super(var1, ValueType.STRING) |
abstract |
|
super super(var1, ValueType.STRING_ARRAY) |
|
|
switch switch(var2.valueType) |
Исходный код
Показать/скрыть
class="kw">package com.hypixel.hytale.server.npc.util.expression;
class="kw">import com.hypixel.hytale.common.util.ArrayUtil;
class="kw">import java.util.HashMap;
class="kw">import java.util.Map;
class="kw">import java.util.Objects;
class="kw">import java.util.function.BooleanSupplier;
class="kw">import java.util.function.DoubleSupplier;
class="kw">import java.util.function.Supplier;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;
class="kw">public class StdScope class="kw">implements Scope {
class="kw">protected class="kw">static class="kw">final StdScope.SymbolStringArray VAR_EMPTY_STRING_ARRAY = new StdScope.SymbolStringArray(false, () -> ArrayUtil.EMPTY_STRING_ARRAY);
class="kw">protected class="kw">static class="kw">final StdScope.SymbolNumberArray VAR_EMPTY_NUMBER_ARRAY = new StdScope.SymbolNumberArray(false, () -> ArrayUtil.EMPTY_DOUBLE_ARRAY);
class="kw">protected class="kw">static class="kw">final StdScope.SymbolBooleanArray VAR_EMPTY_BOOLEAN_ARRAY = new StdScope.SymbolBooleanArray(false, () -> ArrayUtil.EMPTY_BOOLEAN_ARRAY);
class="kw">protected class="kw">static class="kw">final StdScope.SymbolStringArray VAR_NULL_STRING_ARRAY = new StdScope.SymbolStringArray(false, () -> null);
class="kw">protected class="kw">static class="kw">final StdScope.SymbolNumberArray VAR_NULL_NUMBER_ARRAY = new StdScope.SymbolNumberArray(false, () -> null);
class="kw">protected class="kw">static class="kw">final StdScope.SymbolBooleanArray VAR_NULL_BOOLEAN_ARRAY = new StdScope.SymbolBooleanArray(false, () -> null);
class="kw">protected class="kw">static class="kw">final StdScope.SymbolString VAR_NULL_STRING = new StdScope.SymbolString(false, () -> null);
class="kw">protected class="kw">static class="kw">final StdScope.SymbolString VAR_EMPTY_STRING = new StdScope.SymbolString(false, () -> "");
class="kw">protected class="kw">static class="kw">final StdScope.SymbolBoolean VAR_BOOLEAN_TRUE = new StdScope.SymbolBoolean(false, () -> true);
class="kw">protected class="kw">static class="kw">final StdScope.SymbolBoolean VAR_BOOLEAN_FALSE = new StdScope.SymbolBoolean(false, () -> false);
class="kw">protected class="kw">static class="kw">final StdScope.SymbolStringArray CONST_EMPTY_STRING_ARRAY = new StdScope.SymbolStringArray(true, () -> ArrayUtil.EMPTY_STRING_ARRAY);
class="kw">protected class="kw">static class="kw">final StdScope.SymbolNumberArray CONST_EMPTY_NUMBER_ARRAY = new StdScope.SymbolNumberArray(true, () -> ArrayUtil.EMPTY_DOUBLE_ARRAY);
class="kw">protected class="kw">static class="kw">final StdScope.SymbolBooleanArray CONST_EMPTY_BOOLEAN_ARRAY = new StdScope.SymbolBooleanArray(true, () -> ArrayUtil.EMPTY_BOOLEAN_ARRAY);
class="kw">protected class="kw">static class="kw">final StdScope.SymbolStringArray CONST_NULL_STRING_ARRAY = new StdScope.SymbolStringArray(true, () -> null);
class="kw">protected class="kw">static class="kw">final StdScope.SymbolNumberArray CONST_NULL_NUMBER_ARRAY = new StdScope.SymbolNumberArray(true, () -> null);
class="kw">protected class="kw">static class="kw">final StdScope.SymbolBooleanArray CONST_NULL_BOOLEAN_ARRAY = new StdScope.SymbolBooleanArray(true, () -> null);
class="kw">protected class="kw">static class="kw">final StdScope.SymbolString CONST_NULL_STRING = new StdScope.SymbolString(true, () -> null);
class="kw">protected class="kw">static class="kw">final StdScope.SymbolString CONST_EMPTY_STRING = new StdScope.SymbolString(true, () -> "");
class="kw">protected class="kw">static class="kw">final StdScope.SymbolBoolean CONST_BOOLEAN_TRUE = new StdScope.SymbolBoolean(true, () -> true);
class="kw">protected class="kw">static class="kw">final StdScope.SymbolBoolean CONST_BOOLEAN_FALSE = new StdScope.SymbolBoolean(true, () -> false);
class="kw">protected Scope parent;
class="kw">protected Map<String, StdScope.Symbol> symbolTable;
class="kw">public StdScope(Scope var1) {
this.parent = var1;
this.symbolTable = new HashMap<>();
}
@Nonnull
class="kw">public class="kw">static StdScope copyOf(@Nonnull StdScope var0) {
StdScope var1 = new StdScope(var0.parent);
var1.mergeSymbols(var0);
class="kw">return var1;
}
@Nonnull
class="kw">public StdScope merge(@Nonnull StdScope var1) {
this.mergeSymbols(var1);
class="kw">return this;
}
@Nonnull
class="kw">public class="kw">static StdScope mergeScopes(@Nonnull StdScope var0, @Nonnull StdScope var1) {
class="kw">return copyOf(var0).merge(var1);
}
class="kw">protected void mergeSymbols(@Nonnull StdScope var1) {
var1.symbolTable.forEach(this::add);
}
class="kw">protected void add(String var1, StdScope.Symbol var2) {
if (this.symbolTable.containsKey(var1)) {
throw new IllegalStateException("Trying to add symbol twice to scope " + var1);
}
this.symbolTable.put(var1, var2);
}
class="kw">public void addConst(String var1, @Nullable String var2) {
if (var2 == null) {
this.add(var1, CONST_NULL_STRING);
} else if (var2.isEmpty()) {
this.add(var1, CONST_EMPTY_STRING);
} else {
this.add(var1, new StdScope.SymbolString(true, () -> var2));
}
}
class="kw">public void addConst(String var1, double var2) {
this.add(var1, new StdScope.SymbolNumber(true, () -> var2));
}
class="kw">public void addConst(String var1, boolean var2) {
this.add(var1, var2 ? CONST_BOOLEAN_TRUE : CONST_BOOLEAN_FALSE);
}
class="kw">public void addConst(String var1, @Nullable String[] var2) {
if (var2 == null) {
this.add(var1, CONST_NULL_STRING_ARRAY);
} else if (var2.length == 0) {
this.add(var1, CONST_EMPTY_STRING_ARRAY);
} else {
this.add(var1, new StdScope.SymbolStringArray(true, () -> var2));
}
}
class="kw">public void addConst(String var1, @Nullable double[] var2) {
if (var2 == null) {
this.add(var1, CONST_NULL_NUMBER_ARRAY);
} else if (var2.length == 0) {
this.add(var1, CONST_EMPTY_NUMBER_ARRAY);
} else {
this.add(var1, new StdScope.SymbolNumberArray(true, () -> var2));
}
}
class="kw">public void addConst(String var1, @Nullable boolean[] var2) {
if (var2 == null) {
this.add(var1, CONST_NULL_BOOLEAN_ARRAY);
} else if (var2.length == 0) {
this.add(var1, CONST_EMPTY_BOOLEAN_ARRAY);
} else {
this.add(var1, new StdScope.SymbolBooleanArray(true, () -> var2));
}
}
class="kw">public void addConstEmptyArray(String var1) {
this.add(var1, new StdScope.Symbol(true, ValueType.EMPTY_ARRAY));
}
class="kw">public void addVar(String var1, @Nullable String var2) {
if (var2 == null) {
this.add(var1, VAR_NULL_STRING);
} else if (var2.isEmpty()) {
this.add(var1, VAR_EMPTY_STRING);
} else {
this.add(var1, new StdScope.SymbolString(false, () -> var2));
}
}
class="kw">public void addVar(String var1, double var2) {
this.add(var1, new StdScope.SymbolNumber(false, () -> var2));
}
class="kw">public void addVar(String var1, boolean var2) {
this.add(var1, var2 ? VAR_BOOLEAN_TRUE : VAR_BOOLEAN_FALSE);
}
class="kw">public void addVar(String var1, @Nullable String[] var2) {
if (var2 == null) {
this.add(var1, VAR_NULL_STRING_ARRAY);
} else if (var2.length == 0) {
this.add(var1, VAR_EMPTY_STRING_ARRAY);
} else {
this.add(var1, new StdScope.SymbolStringArray(false, () -> var2));
}
}
class="kw">public void addVar(String var1, @Nullable double[] var2) {
if (var2 == null) {
this.add(var1, VAR_NULL_NUMBER_ARRAY);
} else if (var2.length == 0) {
this.add(var1, VAR_EMPTY_NUMBER_ARRAY);
} else {
this.add(var1, new StdScope.SymbolNumberArray(false, () -> var2));
}
}
class="kw">public void addVar(String var1, @Nullable boolean[] var2) {
if (var2 == null) {
this.add(var1, VAR_NULL_BOOLEAN_ARRAY);
} else if (var2.length == 0) {
this.add(var1, VAR_EMPTY_BOOLEAN_ARRAY);
} else {
this.add(var1, new StdScope.SymbolBooleanArray(false, () -> var2));
}
}
class="kw">public void addInvariant(@Nonnull String var1, Scope.Function var2, ValueType var3, @Nonnull ValueType... var4) {
this.add(Scope.encodeFunctionName(var1, var4), new StdScope.SymbolFunction(true, var3, var2));
this.add(var1, new StdScope.SymbolFunction(false, var3, null));
}
class="kw">public void addVariant(@Nonnull String var1, Scope.Function var2, ValueType var3, @Nonnull ValueType... var4) {
this.add(Scope.encodeFunctionName(var1, var4), new StdScope.SymbolFunction(false, var3, var2));
this.add(var1, new StdScope.SymbolFunction(false, var3, null));
}
class="kw">public void addSupplier(String var1, Supplier<String> var2) {
this.add(var1, new StdScope.SymbolString(false, var2));
}
class="kw">public void addSupplier(String var1, DoubleSupplier var2) {
this.add(var1, new StdScope.SymbolNumber(false, var2));
}
class="kw">public void addSupplier(String var1, BooleanSupplier var2) {
this.add(var1, new StdScope.SymbolBoolean(false, var2));
}
class="kw">public void addStringArraySupplier(String var1, Supplier<String[]> var2) {
this.add(var1, new StdScope.SymbolStringArray(false, var2));
}
class="kw">public void addDoubleArraySupplier(String var1, Supplier<double[]> var2) {
this.add(var1, new StdScope.SymbolNumberArray(false, var2));
}
class="kw">public void addBooleanArraySupplier(String var1, Supplier<boolean[]> var2) {
this.add(var1, new StdScope.SymbolBooleanArray(false, var2));
}
class="kw">protected StdScope.Symbol get(String var1) {
class="kw">return this.symbolTable.get(var1);
}
@Nonnull
class="kw">protected StdScope.Symbol get(String var1, ValueType var2) {
StdScope.Symbol var3 = this.symbolTable.get(var1);
if (var3 == null) {
throw new IllegalStateException("Can't find symbol " + var1 + " in symbol table");
} else if (!ValueType.isAssignableType(var2, var3.valueType)) {
throw new IllegalStateException("Type mismatch with " + var1 + ". Got " + var2 + " but expected " + var3.valueType);
} else {
class="kw">return var3;
}
}
class="kw">protected void replace(String var1, @Nonnull StdScope.Symbol var2) {
StdScope.Symbol var3 = this.get(var1, var2.valueType);
if (var3.isConstant) {
throw new IllegalStateException("Can't replace a constant in symbol table: " + var1);
}
if (var2.isConstant) {
throw new IllegalStateException("Can't replace a variable with a constant: " + var1);
}
this.symbolTable.put(var1, var2);
}
class="kw">public void changeValue(String var1, @Nullable String var2) {
if (var2 == null) {
this.replace(var1, VAR_NULL_STRING);
} else if (var2.isEmpty()) {
this.replace(var1, VAR_EMPTY_STRING);
} else {
this.replace(var1, new StdScope.SymbolString(false, () -> var2));
}
}
class="kw">public void changeValue(String var1, double var2) {
this.replace(var1, new StdScope.SymbolNumber(false, () -> var2));
}
class="kw">public void changeValue(String var1, boolean var2) {
this.replace(var1, var2 ? VAR_BOOLEAN_TRUE : VAR_BOOLEAN_FALSE);
}
class="kw">public void changeValue(String var1, @Nullable String[] var2) {
if (var2 == null) {
this.replace(var1, VAR_NULL_STRING_ARRAY);
} else if (var2.length == 0) {
this.replace(var1, VAR_EMPTY_STRING_ARRAY);
} else {
this.replace(var1, new StdScope.SymbolStringArray(false, () -> var2));
}
}
class="kw">public void changeValue(String var1, @Nullable double[] var2) {
if (var2 == null) {
this.replace(var1, VAR_NULL_NUMBER_ARRAY);
} else if (var2.length == 0) {
this.replace(var1, VAR_EMPTY_NUMBER_ARRAY);
} else {
this.replace(var1, new StdScope.SymbolNumberArray(false, () -> var2));
}
}
class="kw">public void changeValue(String var1, @Nullable boolean[] var2) {
if (var2 == null) {
this.replace(var1, VAR_NULL_BOOLEAN_ARRAY);
} else if (var2.length == 0) {
this.replace(var1, VAR_EMPTY_BOOLEAN_ARRAY);
} else {
this.replace(var1, new StdScope.SymbolBooleanArray(false, () -> var2));
}
}
class="kw">public void changeValueToEmptyArray(String var1) {
StdScope.Symbol var2 = this.get(var1);
Objects.requireNonNull(var2, "Can't find symbol in symbol table in changeValue()");
if (var2.isConstant) {
throw new IllegalStateException("Can't replace a constant in symbol table: " + var1);
}
class="kw">switch (var2.valueType) {
case VOID:
case NUMBER:
case STRING:
case BOOLEAN:
throw new IllegalStateException("Can't assign an empty array to symbol " + var1 + " of type " + var2.valueType);
case EMPTY_ARRAY:
class="kw">return;
case NUMBER_ARRAY:
this.symbolTable.put(var1, VAR_EMPTY_NUMBER_ARRAY);
break;
case STRING_ARRAY:
this.symbolTable.put(var1, VAR_EMPTY_STRING_ARRAY);
break;
case BOOLEAN_ARRAY:
this.symbolTable.put(var1, VAR_EMPTY_BOOLEAN_ARRAY);
}
}
@Override
class="kw">public Supplier<String> getStringSupplier(String var1) {
StdScope.Symbol var2 = this.get(var1);
if (var2 == null) {
if (this.parent != null) {
class="kw">return this.parent.getStringSupplier(var1);
} else {
throw new IllegalStateException("Unable to find symbol: " + var1);
}
} else if (var2 class="kw">instanceof StdScope.SymbolString) {
class="kw">return ((StdScope.SymbolString)var2).value;
} else {
throw new IllegalStateException("Symbol is not a string: " + var1);
}
}
@Override
class="kw">public DoubleSupplier getNumberSupplier(String var1) {
StdScope.Symbol var2 = this.get(var1);
if (var2 == null) {
if (this.parent != null) {
class="kw">return this.parent.getNumberSupplier(var1);
} else {
throw new IllegalStateException("Unable to find symbol: " + var1);
}
} else if (var2 class="kw">instanceof StdScope.SymbolNumber) {
class="kw">return ((StdScope.SymbolNumber)var2).value;
} else {
throw new IllegalStateException("Symbol is not a number: " + var1);
}
}
@Override
class="kw">public BooleanSupplier getBooleanSupplier(String var1) {
StdScope.Symbol var2 = this.get(var1);
if (var2 == null) {
if (this.parent != null) {
class="kw">return this.parent.getBooleanSupplier(var1);
} else {
throw new IllegalStateException("Unable to find symbol: " + var1);
}
} else if (var2 class="kw">instanceof StdScope.SymbolBoolean) {
class="kw">return ((StdScope.SymbolBoolean)var2).value;
} else {
throw new IllegalStateException("Symbol is not a boolean: " + var1);
}
}
@Override
class="kw">public Supplier<String[]> getStringArraySupplier(String var1) {
StdScope.Symbol var2 = this.get(var1);
if (var2 == null) {
if (this.parent != null) {
class="kw">return this.parent.getStringArraySupplier(var1);
} else {
throw new IllegalStateException("Unable to find symbol: " + var1);
}
} else if (var2.valueType == ValueType.EMPTY_ARRAY) {
class="kw">return () -> ArrayUtil.EMPTY_STRING_ARRAY;
} else if (var2 class="kw">instanceof StdScope.SymbolStringArray) {
class="kw">return ((StdScope.SymbolStringArray)var2).value;
} else {
throw new IllegalStateException("Symbol is not a string array: " + var1);
}
}
@Override
class="kw">public Supplier<double[]> getNumberArraySupplier(String var1) {
StdScope.Symbol var2 = this.get(var1);
if (var2 == null) {
if (this.parent != null) {
class="kw">return this.parent.getNumberArraySupplier(var1);
} else {
throw new IllegalStateException("Unable to find symbol: " + var1);
}
} else if (var2.valueType == ValueType.EMPTY_ARRAY) {
class="kw">return () -> ArrayUtil.EMPTY_DOUBLE_ARRAY;
} else if (var2 class="kw">instanceof StdScope.SymbolNumberArray) {
class="kw">return ((StdScope.SymbolNumberArray)var2).value;
} else {
throw new IllegalStateException("Symbol is not a number array: " + var1);
}
}
@Override
class="kw">public Supplier<boolean[]> getBooleanArraySupplier(String var1) {
StdScope.Symbol var2 = this.get(var1);
if (var2 == null) {
if (this.parent != null) {
class="kw">return this.parent.getBooleanArraySupplier(var1);
} else {
throw new IllegalStateException("Unable to find symbol: " + var1);
}
} else if (var2.valueType == ValueType.EMPTY_ARRAY) {
class="kw">return () -> ArrayUtil.EMPTY_BOOLEAN_ARRAY;
} else if (var2 class="kw">instanceof StdScope.SymbolBooleanArray) {
class="kw">return ((StdScope.SymbolBooleanArray)var2).value;
} else {
throw new IllegalStateException("Symbol is not a boolean array: " + var1);
}
}
@Override
class="kw">public Scope.Function getFunction(String var1) {
StdScope.Symbol var2 = this.get(var1);
if (var2 == null) {
if (this.parent != null) {
class="kw">return this.parent.getFunction(var1);
} else {
throw new IllegalStateException("Unable to find function: " + var1);
}
} else if (var2 class="kw">instanceof StdScope.SymbolFunction) {
class="kw">return ((StdScope.SymbolFunction)var2).value;
} else {
throw new IllegalStateException("Symbol is not a function: " + var1);
}
}
@Override
class="kw">public boolean isConstant(String var1) {
StdScope.Symbol var2 = this.get(var1);
if (var2 != null) {
class="kw">return var2.isConstant;
} else if (this.parent == null) {
throw new IllegalStateException("Unable to find symbol: " + var1);
} else {
class="kw">return this.parent.isConstant(var1);
}
}
@Nullable
@Override
class="kw">public ValueType getType(String var1) {
StdScope.Symbol var2 = this.get(var1);
if (var2 != null) {
class="kw">return var2.valueType;
} else {
class="kw">return this.parent != null ? this.parent.getType(var1) : null;
}
}
class="kw">protected class="kw">static class Symbol {
class="kw">public class="kw">final boolean isConstant;
class="kw">public class="kw">final ValueType valueType;
class="kw">public Symbol(boolean var1, ValueType var2) {
this.isConstant = var1;
this.valueType = var2;
}
}
class="kw">protected class="kw">static class SymbolBoolean class="kw">extends StdScope.Symbol {
class="kw">public class="kw">final BooleanSupplier value;
class="kw">public SymbolBoolean(boolean var1, BooleanSupplier var2) {
super(var1, ValueType.BOOLEAN);
this.value = var2;
}
}
class="kw">protected class="kw">static class SymbolBooleanArray class="kw">extends StdScope.Symbol {
class="kw">public class="kw">final Supplier<boolean[]> value;
class="kw">public SymbolBooleanArray(boolean var1, Supplier<boolean[]> var2) {
super(var1, ValueType.BOOLEAN_ARRAY);
this.value = var2;
}
}
class="kw">protected class="kw">static class SymbolFunction class="kw">extends StdScope.Symbol {
class="kw">public class="kw">final Scope.Function value;
class="kw">public SymbolFunction(boolean var1, ValueType var2, Scope.Function var3) {
super(var1, var2);
this.value = var3;
}
}
class="kw">protected class="kw">static class SymbolNumber class="kw">extends StdScope.Symbol {
class="kw">public class="kw">final DoubleSupplier value;
class="kw">public SymbolNumber(boolean var1, DoubleSupplier var2) {
super(var1, ValueType.NUMBER);
this.value = var2;
}
}
class="kw">protected class="kw">static class SymbolNumberArray class="kw">extends StdScope.Symbol {
class="kw">public class="kw">final Supplier<double[]> value;
class="kw">public SymbolNumberArray(boolean var1, Supplier<double[]> var2) {
super(var1, ValueType.NUMBER_ARRAY);
this.value = var2;
}
}
class="kw">protected class="kw">static class SymbolString class="kw">extends StdScope.Symbol {
class="kw">public class="kw">final Supplier<String> value;
class="kw">public SymbolString(boolean var1, Supplier<String> var2) {
super(var1, ValueType.STRING);
this.value = var2;
}
}
class="kw">protected class="kw">static class SymbolStringArray class="kw">extends StdScope.Symbol {
class="kw">public class="kw">final Supplier<String[]> value;
class="kw">public SymbolStringArray(boolean var1, Supplier<String[]> var2) {
super(var1, ValueType.STRING_ARRAY);
this.value = var2;
}
}
}