package ptolemy.actor.ptalon.model;
import java.util.Stack;
import ptolemy.data.Token;
import antlr.collections.AST;
public class LoopedAstReference {
public LoopedAstReference(AST ast, Stack<Token> forTokens) {
_forTokens = new Stack<Token>();
for (int i = 0; i < forTokens.size(); i++) {
_forTokens.push(forTokens.elementAt(i));
}
_ast = ast;
}
public boolean equals(Object obj) {
if (obj instanceof LoopedAstReference) {
LoopedAstReference ref = (LoopedAstReference) obj;
if (ref._ast != _ast) {
return false;
}
if (ref._forTokens.size() != _forTokens.size()) {
return false;
}
for (int i = 0; i < _forTokens.size(); i++) {
if (!ref._forTokens.elementAt(i).equals(_forTokens.elementAt(i))) {
return false;
}
}
return true;
}
return super.equals(obj);
}
public int hashCode() {
int code = _ast.hashCode();
for (int i = 0; i < _forTokens.size(); i++) {
code ^= _forTokens.elementAt(i).hashCode();
}
return code;
}
private Stack<Token> _forTokens;
private AST _ast;
}