1 19 20 package edu.umd.cs.findbugs.ba.npe; 21 22 import java.util.HashSet ; 23 import java.util.Set ; 24 25 import edu.umd.cs.findbugs.ba.vna.ValueNumber; 26 27 public class WillBeDereferencedInfo { 28 29 Set <ValueNumber> value = new HashSet <ValueNumber>(); 30 boolean isTop; 31 32 public static WillBeDereferencedInfo getTop() { 33 WillBeDereferencedInfo top = new WillBeDereferencedInfo(); 34 top.isTop = true; 35 return top; 36 } 37 38 public WillBeDereferencedInfo copy() { 39 WillBeDereferencedInfo w = new WillBeDereferencedInfo(); 40 w.copyFrom(this); 41 return w; 42 } 43 44 public void copyFrom (WillBeDereferencedInfo w) { 45 this.isTop = w.isTop; 46 this.value.clear(); 47 this.value.addAll(w.value); 48 } 49 public void meet(WillBeDereferencedInfo source) { 50 if (source.isTop) return; 51 if (isTop) { 52 isTop = false; 53 value.clear(); 54 value.addAll(source.value); 55 return; 56 } 57 value.retainAll(source.value); 58 } 59 60 @Override 61 public int hashCode() { 62 if (isTop) return 42; 63 return value.hashCode(); 64 } 65 @Override 66 public boolean equals(Object o) { 67 if (o == null || o.getClass() != WillBeDereferencedInfo.class) return false; 68 WillBeDereferencedInfo w = (WillBeDereferencedInfo) o; 69 if (isTop != w.isTop) return false; 70 return value.equals(w.value); 71 } 72 73 74 75 } 76 | Popular Tags |