content: package aima.core.search.framework;
  
  import java.util.Hashtable;
  import java.util.Set;
  import java.util.TreeMap;
  
  /**
   * Stores key-value pairs for efficiency analysis.
   * 
   * @author Ravi Mohan
   * @author Ruediger Lunde
   */
  public class Metrics {
  	private Hashtable<String, String> hash;
  
  	public Metrics() {
  		this.hash = new Hashtable<String, String>();
  	}
  
  	public void set(String name, int i) {
  		hash.put(name, Integer.toString(i));
  	}
  
  	public void set(String name, double d) {
  		hash.put(name, Double.toString(d));
  	}
  
  	public void incrementInt(String name) {
  		set(name, getInt(name) + 1);
  	}
  
  	public void set(String name, long l) {
  		hash.put(name, Long.toString(l));
  	}
  
  	public int getInt(String name) {
  		String value = hash.get(name);
  		return value != null ? Integer.parseInt(value) : 0;
  	}
  
  	public double getDouble(String name) {
  		String value = hash.get(name);
  		return value != null ? Double.parseDouble(value) : Double.NaN;
  	}
  
  	public long getLong(String name) {
  		String value = hash.get(name);
  		return value != null ? Long.parseLong(value) : 0l;
  	}
  
  	public String get(String name) {
  		return hash.get(name);
  	}
  
  	public Set<String> keySet() {
  		return hash.keySet();
  	}
  
  	/** Sorts the key-value pairs by key names and formats them as equations. */
  	public String toString() {
  		TreeMap<String, String> map = new TreeMap<String, String>(hash);
  		return map.toString();
  	}
  }
  