/////////////////////////////////////////////////////////////////////// // STANFORD LOGIC GROUP // // General Game Playing Project // // // // Sample Player Implementation // // // // (c) 2007. See LICENSE and CONTRIBUTORS. // /////////////////////////////////////////////////////////////////////// /** * */ package stanfordlogic.gdl; import java.util.HashMap; import java.util.Map; /** * * * @author Based on code by Team Camembert: David Haley, Pierre-Yves Laligand */ public class GdlVariable extends GdlExpression { final private int token_; private GdlVariable(SymbolTable symTab, int token) { super(symTab); token_ = token; } static private Map<Integer, GdlVariable> varMap = new HashMap<Integer, GdlVariable>(); static public GdlVariable getGdlVariable(SymbolTable symTab, int token) { // if it's in the map already, return that. GdlVariable var = varMap.get(token); if ( var != null ) return var; // Else, create it and add it to the map. var = new GdlVariable(symTab, token); varMap.put(token, var); return var; } @Override public String toString() { return "?" + symbolTable_.get(token_); } public int getToken() { return token_; } @Override public boolean equals( Object obj ) { // GdlVariables are equal if and only if they share the same pointer. if ( this == obj ) return true; return false; /*if ( (obj instanceof GdlVariable) == false ) return false; GdlVariable v = (GdlVariable) obj; return this.getToken() == v.getToken();*/ } @Override public int hashCode() { return getToken(); } }