1 19 package edu.umd.cs.findbugs.ba.npe; 20 21 import java.util.BitSet ; 22 23 30 public class ParameterNullnessProperty { 31 34 public static final int MAX_PARAMS = 32; 35 36 private int nonNullParamSet; 37 38 42 public ParameterNullnessProperty() { 43 this.nonNullParamSet = 0; 44 } 45 46 51 int getNonNullParamSet() { 52 return nonNullParamSet; 53 } 54 55 60 void setNonNullParamSet(int nonNullParamSet) { 61 this.nonNullParamSet = nonNullParamSet; 62 } 63 64 70 public void setNonNullParamSet(BitSet nonNullSet) { 71 for (int i = 0; i < 32; ++i) { 72 setNonNull(i, nonNullSet.get(i)); 73 } 74 } 75 76 82 public void setNonNull(int param, boolean nonNull) { 83 if (param < 0 || param > 31) 84 return; 85 if (nonNull) { 86 nonNullParamSet |= (1 << param); 87 } else { 88 nonNullParamSet &= ~(1 << param); 89 } 90 } 91 92 98 public boolean isNonNull(int param) { 99 if (param < 0 || param > 31) 100 return false; 101 else 102 return (nonNullParamSet & (1 << param)) != 0; 103 } 104 105 113 public BitSet getViolatedParamSet(BitSet nullArgSet) { 114 BitSet result = new BitSet (); 115 for (int i = 0; i < 32; ++i) { 116 result.set(i, nullArgSet.get(i) && isNonNull(i)); 117 } 118 return result; 119 } 120 121 127 public boolean isEmpty() { 128 return nonNullParamSet == 0; 129 } 130 131 @Override 132 public String toString() { 133 StringBuffer buf = new StringBuffer (); 134 135 buf.append('{'); 136 for (int i = 0; i < 32; ++i) { 137 if (isNonNull(i)) { 138 if (buf.length() > 1) 139 buf.append(','); 140 buf.append(i); 141 } 142 } 143 buf.append('}'); 144 145 return buf.toString(); 146 } 147 148 154 public void intersectWith(ParameterNullnessProperty targetDerefParamSet) { 155 nonNullParamSet &= targetDerefParamSet.nonNullParamSet; 156 } 157 158 163 public void copyFrom(ParameterNullnessProperty other) { 164 this.nonNullParamSet = other.nonNullParamSet; 165 } 166 } 167 | Popular Tags |