package edu.stanford.nlp.trees.tregex; import edu.stanford.nlp.stats.IntCounter; import java.util.Map; import java.util.HashMap; /** A class that takes care of the stuff necessary for variable strings. * * @author Roger Levy (rog@nlp.stanford.edu) */ class VariableStrings { private Map<String, String> varsToStrings; private IntCounter<String> numVarsSet; public VariableStrings() { varsToStrings = new HashMap<String,String>(); numVarsSet = new IntCounter<String>(); } public boolean isSet(String o) { return numVarsSet.getCount(o) == 1; } public void setVar(String 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(String var) { if(numVarsSet.getCount(var) > 0) numVarsSet.decrementCount(var); if(numVarsSet.getCount(var)==0) varsToStrings.put(var,null); } public String getString(String var) { return varsToStrings.get(var); } }