001    package escjava.translate;
002    
003    import javafe.ast.*;
004    
005    public class RepHelper {
006    
007        public TypeDecl td;
008        public ASTNode a;
009    
010        public RepHelper(TypeDecl td, FieldDecl fd) {
011            this.td = td;
012            this.a = fd;
013        }
014    
015        public RepHelper(TypeDecl td, RoutineDecl rd) {
016            this.td = td;
017            this.a = rd;
018        }
019    
020        public RepHelper(/*@ non_null @*/ FieldAccess fa) {
021            this.a = fa.decl;
022            ObjectDesignator od = fa.od;
023            Type t = null;
024            if (od instanceof ExprObjectDesignator) {
025                t = javafe.tc.FlowInsensitiveChecks.getType(
026                            ((ExprObjectDesignator)od).expr );
027            } else if (od instanceof TypeObjectDesignator) {
028                t = ((TypeObjectDesignator)od).type;
029            }
030            if (t instanceof javafe.tc.TypeSig) 
031                    this.td = ((javafe.tc.TypeSig)t).getTypeDecl();
032        }
033    
034        public boolean equals(Object o) {
035            if (!(o instanceof RepHelper)) return false;
036            RepHelper r = (RepHelper)o;
037            return td == r.td && a == r.a;
038        }
039    
040        public int hashCode() {
041            return (td==null?0:td.hashCode()) + (a==null?0:a.hashCode());
042        }
043    }