package edu.stanford.nlp.semgraph.semgrex;
import edu.stanford.nlp.stats.IntCounter;
import edu.stanford.nlp.util.Generics;
import java.util.Map;
/** a class that takes care of the stuff necessary for variable strings.
*
* // todo: if this is just a copy of the tregex one, use same for both?
*
* @author Roger Levy (rog@nlp.stanford.edu)
*/
class VariableStrings {
private Map<Object, String> varsToStrings;
private IntCounter<Object> numVarsSet;
public VariableStrings() {
varsToStrings = Generics.newHashMap();
numVarsSet = new IntCounter<>();
}
public boolean isSet(Object o) {
return numVarsSet.getCount(o) == 1;
}
public void setVar(Object var, String string) {
String oldString = varsToStrings.put(var,string);
if(oldString != null && ! oldString.equals(string))
throw new RuntimeException("Error -- can't setVar to a different string -- old: " + oldString + " new: " + string);
numVarsSet.incrementCount(var);
}
public void unsetVar(Object var) {
if(numVarsSet.getCount(var) > 0)
numVarsSet.decrementCount(var);
if(numVarsSet.getCount(var)==0)
varsToStrings.put(var,null);
}
public String getString(Object var) {
return varsToStrings.get(var);
}
}