import java.util.HashMap;
import java.util.Map;

/** Eigentlich nur ein Wrapper um eine Map-Instanz. Verwendet Java 1.5*/
public class VariableEvaluation {
	private Map<String, Integer> map;
	
    public VariableEvaluation() {
    	map = new HashMap<String, Integer>();
    }

    /** Gibt den Wert einer Variable zurueck. Vorher wird (per Assertion) geprueft, ob der Name
     * auch vorhanden ist. Ist dies nicht der Fall, wird das Programm abgebrochen (insofern 
     * Assertions eingeschaltet sind). Dies ist nicht besonders elegant; eine bessere Methode
     * werden Sie mit "Exceptions" kennenlernen.  
     */ 
    public int getValuation(String varname) {
        assert map.containsKey(varname) : "Kann den Variablennamen " + varname + " nicht finden!";
        return map.get(varname);		// Autoboxing in Java 1.5 konvertiert Integer -> int
    }

    /** Gibt die Variablen-Valuation als String zurueck */
    public String toString() {
    	String ret = "", delim = "";
    	for (String s : map.keySet()) {
    		ret += delim + s + " -> " + map.get(s);
    		delim = "\n";
    	}
    	return ret;
    }

    /** Fuegt eine Variablen-Valuation hinzu */
    public void addValuation(String varname, int value) {
    	map.put(varname, value);	// Autoboxing in Java 1.5, hier int -> Integer
    }
}
