Files
HRMS/hrmsEjb/org/nfunk/jep/SymbolTable.java
2025-07-28 13:56:49 +05:30

98 lines
2.8 KiB
Java

package org.nfunk.jep;
import java.util.Enumeration;
import java.util.Hashtable;
public class SymbolTable extends Hashtable {
protected VariableFactory vf;
public SymbolTable(VariableFactory paramVariableFactory) {
this.vf = paramVariableFactory;
}
private SymbolTable() {}
public Object get(Object paramObject) {
return getValue(paramObject);
}
public Object getValue(Object paramObject) {
Variable variable = super.get(paramObject);
return (variable == null) ? null : variable.getValue();
}
public Variable getVar(String paramString) {
return super.get(paramString);
}
public Object put(Object paramObject1, Object paramObject2) {
return makeVarIfNeeded((String)paramObject1, paramObject2);
}
public boolean setVarValue(String paramString, Object paramObject) {
Variable variable = super.get(paramString);
return (variable != null) ? variable.setValue(paramObject) : false;
}
public Variable addVariable(String paramString, Object paramObject) {
Variable variable = super.get(paramString);
if (variable != null)
return null;
variable = this.vf.createVariable(paramString, paramObject);
super.put(paramString, variable);
variable.setValidValue(true);
return variable;
}
public Variable addConstant(String paramString, Object paramObject) {
Variable variable = addVariable(paramString, paramObject);
if (variable != null)
variable.setIsConstant(true);
return variable;
}
public Variable makeVarIfNeeded(String paramString, Object paramObject) {
Variable variable = super.get(paramString);
if (variable != null) {
variable.setValue(paramObject);
return variable;
}
variable = this.vf.createVariable(paramString, paramObject);
super.put(paramString, variable);
return variable;
}
public Variable makeVarIfNeeded(String paramString) {
Variable variable = super.get(paramString);
if (variable != null)
return variable;
variable = this.vf.createVariable(paramString, null);
super.put(paramString, variable);
return variable;
}
public String toString() {
StringBuffer stringBuffer = new StringBuffer();
Enumeration enumeration = elements();
while (enumeration.hasMoreElements()) {
Variable variable = (Variable)enumeration.nextElement();
stringBuffer.append(variable.toString());
stringBuffer.append("\n");
}
return stringBuffer.toString();
}
public void clearValues() {
Enumeration enumeration = elements();
while (enumeration.hasMoreElements()) {
Variable variable = (Variable)enumeration.nextElement();
if (!variable.isConstant())
variable.setValidValue(false);
}
}
public VariableFactory getVariableFactory() {
return this.vf;
}
}